From 1d361cc602a7dae3d89b2bc68ab08627b39a2c5f Mon Sep 17 00:00:00 2001 From: Kevin Lacabane Date: Tue, 21 Jun 2022 16:18:16 +0200 Subject: [PATCH 01/61] uncomment archive unload (#134835) --- .../api_integration/apis/monitoring/logstash/node_detail_mb.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/test/api_integration/apis/monitoring/logstash/node_detail_mb.js b/x-pack/test/api_integration/apis/monitoring/logstash/node_detail_mb.js index e5f242909be14..5d58316a83d95 100644 --- a/x-pack/test/api_integration/apis/monitoring/logstash/node_detail_mb.js +++ b/x-pack/test/api_integration/apis/monitoring/logstash/node_detail_mb.js @@ -25,7 +25,7 @@ export default function ({ getService }) { }); after('unload archive', () => { - // return esArchiver.unload(archive); + return esArchiver.unload(archive); }); it('should summarize the Logstash node with non-advanced chart data metrics', async () => { From 851c4ebe60fbcc293f5694c7d3713139b682e594 Mon Sep 17 00:00:00 2001 From: Spencer Date: Tue, 21 Jun 2022 09:44:18 -0500 Subject: [PATCH 02/61] Rename codeowners after team rename --- .github/CODEOWNERS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 4c2348df2ffbe..273f1159afa63 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -257,9 +257,9 @@ #CC# /packages/kbn-expect/ @elastic/kibana-operations /.buildkite/ @elastic/kibana-operations -# Scalability testing -/packages/kbn-performance-testing-dataset-extractor/ @elastic/kibana-scalability-testing -/packages/kbn-scalability-simulation-generator/ @elastic/kibana-scalability-testing +# Performance testing +/packages/kbn-performance-testing-dataset-extractor/ @elastic/kibana-performance-testing +/packages/kbn-scalability-simulation-generator/ @elastic/kibana-performance-testing # Quality Assurance /src/dev/code_coverage @elastic/kibana-qa From 12d04a9e558db27d588443bb1380240d087404bf Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Tue, 21 Jun 2022 16:47:41 +0200 Subject: [PATCH 03/61] `buildEsQuery` allow `ignore_unmapped` for nested fields queries (#134580) --- .../src/es_query/build_es_query.test.ts | 55 ++++++++++++++++++ .../src/es_query/build_es_query.ts | 32 +++++----- .../src/es_query/from_filters.test.ts | 58 ++++++++++++++++--- .../kbn-es-query/src/es_query/from_filters.ts | 25 +++++++- .../src/es_query/from_kuery.test.ts | 15 +++-- .../kbn-es-query/src/es_query/from_kuery.ts | 26 ++++++--- .../kbn-es-query/src/es_query/from_lucene.ts | 2 +- .../src/es_query/handle_nested_filter.test.ts | 22 +++++++ .../src/es_query/handle_nested_filter.ts | 9 ++- packages/kbn-es-query/src/es_query/index.ts | 1 + packages/kbn-es-query/src/index.ts | 1 + .../src/kuery/functions/is.test.ts | 26 +++++++++ .../kbn-es-query/src/kuery/functions/is.ts | 3 + .../src/kuery/functions/nested.ts | 3 + .../src/kuery/functions/range.test.ts | 30 ++++++++++ .../kbn-es-query/src/kuery/functions/range.ts | 3 + packages/kbn-es-query/src/kuery/types.ts | 7 +++ 17 files changed, 281 insertions(+), 37 deletions(-) diff --git a/packages/kbn-es-query/src/es_query/build_es_query.test.ts b/packages/kbn-es-query/src/es_query/build_es_query.test.ts index 8fd884f65fa0d..a75c8d3d3a03f 100644 --- a/packages/kbn-es-query/src/es_query/build_es_query.test.ts +++ b/packages/kbn-es-query/src/es_query/build_es_query.test.ts @@ -202,5 +202,60 @@ describe('build query', () => { expect(result).toEqual(expectedResult); }); + + it('should allow to use ignore_unmapped for nested fields', () => { + const queries = [ + { query: 'nestedField: { child: "something" }', language: 'kuery' }, + ] as Query[]; + + const filters = [ + { + query: { exists: { field: 'nestedField.child' } }, + meta: { type: 'exists', alias: '', disabled: false, negate: false }, + }, + ]; + + const result = buildEsQuery(indexPattern, queries, filters, { nestedIgnoreUnmapped: true }); + const expected = { + bool: { + must: [], + filter: [ + { + nested: { + ignore_unmapped: true, + path: 'nestedField', + query: { + bool: { + minimum_should_match: 1, + should: [ + { + match_phrase: { + 'nestedField.child': 'something', + }, + }, + ], + }, + }, + score_mode: 'none', + }, + }, + { + nested: { + path: 'nestedField', + query: { + exists: { + field: 'nestedField.child', + }, + }, + ignore_unmapped: true, + }, + }, + ], + should: [], + must_not: [], + }, + }; + expect(result).toEqual(expected); + }); }); }); diff --git a/packages/kbn-es-query/src/es_query/build_es_query.ts b/packages/kbn-es-query/src/es_query/build_es_query.ts index 0ae0b8799b026..62172fa5aa4d8 100644 --- a/packages/kbn-es-query/src/es_query/build_es_query.ts +++ b/packages/kbn-es-query/src/es_query/build_es_query.ts @@ -13,17 +13,18 @@ import { buildQueryFromFilters } from './from_filters'; import { buildQueryFromLucene } from './from_lucene'; import { Filter, Query } from '../filters'; import { BoolQuery, DataViewBase } from './types'; -import { KueryQueryOptions } from '../kuery'; +import type { KueryQueryOptions } from '../kuery'; +import type { EsQueryFiltersConfig } from './from_filters'; /** * Configurations to be used while constructing an ES query. * @public */ -export type EsQueryConfig = KueryQueryOptions & { - allowLeadingWildcards: boolean; - queryStringOptions: SerializableRecord; - ignoreFilterIfFieldNotInIndex: boolean; -}; +export type EsQueryConfig = KueryQueryOptions & + EsQueryFiltersConfig & { + allowLeadingWildcards?: boolean; + queryStringOptions?: SerializableRecord; + }; function removeMatchAll(filters: T[]) { return filters.filter( @@ -59,20 +60,23 @@ export function buildEsQuery( const kueryQuery = buildQueryFromKuery( indexPattern, queriesByLanguage.kuery, - config.allowLeadingWildcards, - config.dateFormatTZ, - config.filtersInMustClause + { allowLeadingWildcards: config.allowLeadingWildcards }, + { + dateFormatTZ: config.dateFormatTZ, + filtersInMustClause: config.filtersInMustClause, + nestedIgnoreUnmapped: config.nestedIgnoreUnmapped, + } ); const luceneQuery = buildQueryFromLucene( queriesByLanguage.lucene, config.queryStringOptions, config.dateFormatTZ ); - const filterQuery = buildQueryFromFilters( - filters, - indexPattern, - config.ignoreFilterIfFieldNotInIndex - ); + + const filterQuery = buildQueryFromFilters(filters, indexPattern, { + ignoreFilterIfFieldNotInIndex: config.ignoreFilterIfFieldNotInIndex, + nestedIgnoreUnmapped: config.nestedIgnoreUnmapped, + }); return { bool: { diff --git a/packages/kbn-es-query/src/es_query/from_filters.test.ts b/packages/kbn-es-query/src/es_query/from_filters.test.ts index 67de9e4d88736..78b719ccc0e62 100644 --- a/packages/kbn-es-query/src/es_query/from_filters.test.ts +++ b/packages/kbn-es-query/src/es_query/from_filters.test.ts @@ -19,7 +19,9 @@ describe('build query', () => { describe('buildQueryFromFilters', () => { test('should return the parameters of an Elasticsearch bool query', () => { - const result = buildQueryFromFilters([], indexPattern, false); + const result = buildQueryFromFilters([], indexPattern, { + ignoreFilterIfFieldNotInIndex: false, + }); const expected = { must: [], filter: [], @@ -43,7 +45,9 @@ describe('build query', () => { const expectedESQueries = [{ match_all: {} }, { exists: { field: 'foo' } }]; - const result = buildQueryFromFilters(filters, indexPattern, false); + const result = buildQueryFromFilters(filters, indexPattern, { + ignoreFilterIfFieldNotInIndex: false, + }); expect(result.filter).toEqual(expectedESQueries); }); @@ -55,14 +59,18 @@ describe('build query', () => { meta: { type: 'match_all', negate: true, disabled: true }, } as MatchAllFilter, ] as Filter[]; - const result = buildQueryFromFilters(filters, indexPattern, false); + const result = buildQueryFromFilters(filters, indexPattern, { + ignoreFilterIfFieldNotInIndex: false, + }); expect(result.must_not).toEqual([]); }); test('should remove falsy filters', () => { const filters = [null, undefined] as unknown as Filter[]; - const result = buildQueryFromFilters(filters, indexPattern, false); + const result = buildQueryFromFilters(filters, indexPattern, { + ignoreFilterIfFieldNotInIndex: false, + }); expect(result.must_not).toEqual([]); expect(result.must).toEqual([]); @@ -78,7 +86,9 @@ describe('build query', () => { const expectedESQueries = [{ match_all: {} }]; - const result = buildQueryFromFilters(filters, indexPattern, false); + const result = buildQueryFromFilters(filters, indexPattern, { + ignoreFilterIfFieldNotInIndex: false, + }); expect(result.must_not).toEqual(expectedESQueries); }); @@ -97,7 +107,9 @@ describe('build query', () => { }, ]; - const result = buildQueryFromFilters(filters, indexPattern, false); + const result = buildQueryFromFilters(filters, indexPattern, { + ignoreFilterIfFieldNotInIndex: false, + }); expect(result.filter).toEqual(expectedESQueries); }); @@ -116,7 +128,9 @@ describe('build query', () => { }, ]; - const result = buildQueryFromFilters(filters, indexPattern, false); + const result = buildQueryFromFilters(filters, indexPattern, { + ignoreFilterIfFieldNotInIndex: false, + }); expect(result.filter).toEqual(expectedESQueries); }); @@ -130,7 +144,9 @@ describe('build query', () => { ] as Filter[]; const expectedESQueries = [{ query_string: { query: 'foo' } }]; - const result = buildQueryFromFilters(filters, indexPattern, false); + const result = buildQueryFromFilters(filters, indexPattern, { + ignoreFilterIfFieldNotInIndex: false, + }); expect(result.filter).toEqual(expectedESQueries); }); @@ -159,5 +175,31 @@ describe('build query', () => { const result = buildQueryFromFilters(filters, indexPattern); expect(result.filter).toEqual(expectedESQueries); }); + + test('should allow to configure ignore_unmapped for filters targeting nested fields in a nested query', () => { + const filters = [ + { + query: { exists: { field: 'nestedField.child' } }, + meta: { type: 'exists', alias: '', disabled: false, negate: false }, + }, + ]; + + const expectedESQueries = [ + { + nested: { + path: 'nestedField', + query: { + exists: { + field: 'nestedField.child', + }, + }, + ignore_unmapped: true, + }, + }, + ]; + + const result = buildQueryFromFilters(filters, indexPattern, { nestedIgnoreUnmapped: true }); + expect(result.filter).toEqual(expectedESQueries); + }); }); }); diff --git a/packages/kbn-es-query/src/es_query/from_filters.ts b/packages/kbn-es-query/src/es_query/from_filters.ts index e018cdc3404ad..871ff77026b54 100644 --- a/packages/kbn-es-query/src/es_query/from_filters.ts +++ b/packages/kbn-es-query/src/es_query/from_filters.ts @@ -38,6 +38,23 @@ const translateToQuery = (filter: Partial): estypes.QueryDslQueryContain return filter.query || filter; }; +/** + * Options for building query for filters + */ +export interface EsQueryFiltersConfig { + /** + * by default filters that use fields that can't be found in the specified index pattern are not applied. Set this to true if you want to apply them anyway. + */ + ignoreFilterIfFieldNotInIndex?: boolean; + + /** + * the nested field type requires a special query syntax, which includes an optional ignore_unmapped parameter that indicates whether to ignore an unmapped path and not return any documents instead of an error. + * The optional ignore_unmapped parameter defaults to false. + * This `nestedIgnoreUnmapped` param allows creating queries with "ignore_unmapped": true + */ + nestedIgnoreUnmapped?: boolean; +} + /** * @param filters * @param indexPattern @@ -49,7 +66,9 @@ const translateToQuery = (filter: Partial): estypes.QueryDslQueryContain export const buildQueryFromFilters = ( filters: Filter[] = [], indexPattern: DataViewBase | undefined, - ignoreFilterIfFieldNotInIndex: boolean = false + { ignoreFilterIfFieldNotInIndex = false, nestedIgnoreUnmapped }: EsQueryFiltersConfig = { + ignoreFilterIfFieldNotInIndex: false, + } ): BoolQuery => { filters = filters.filter((filter) => filter && !isFilterDisabled(filter)); @@ -63,7 +82,9 @@ export const buildQueryFromFilters = ( .map((filter) => { return migrateFilter(filter, indexPattern); }) - .map((filter) => handleNestedFilter(filter, indexPattern)) + .map((filter) => + handleNestedFilter(filter, indexPattern, { ignoreUnmapped: nestedIgnoreUnmapped }) + ) .map(cleanFilter) .map(translateToQuery); }; diff --git a/packages/kbn-es-query/src/es_query/from_kuery.test.ts b/packages/kbn-es-query/src/es_query/from_kuery.test.ts index 443b44dff5819..60bdb54858240 100644 --- a/packages/kbn-es-query/src/es_query/from_kuery.test.ts +++ b/packages/kbn-es-query/src/es_query/from_kuery.test.ts @@ -22,7 +22,7 @@ describe('build query', () => { describe('buildQueryFromKuery', () => { test('should return the parameters of an Elasticsearch bool query', () => { - const result = buildQueryFromKuery(undefined, [], true); + const result = buildQueryFromKuery(undefined, [], { allowLeadingWildcards: true }); const expected = { must: [], filter: [], @@ -42,7 +42,7 @@ describe('build query', () => { return toElasticsearchQuery(fromKueryExpression(query.query), indexPattern); }); - const result = buildQueryFromKuery(indexPattern, queries, true); + const result = buildQueryFromKuery(indexPattern, queries, { allowLeadingWildcards: true }); expect(result.filter).toEqual(expectedESQueries); }); @@ -55,7 +55,14 @@ describe('build query', () => { }); }); - const result = buildQueryFromKuery(indexPattern, queries, true, 'America/Phoenix'); + const result = buildQueryFromKuery( + indexPattern, + queries, + { allowLeadingWildcards: true }, + { + dateFormatTZ: 'America/Phoenix', + } + ); expect(result.filter).toEqual(expectedESQueries); }); @@ -68,7 +75,7 @@ describe('build query', () => { return toElasticsearchQuery(fromKueryExpression(query.query), indexPattern); }); - const result = buildQueryFromKuery(indexPattern, queries, true); + const result = buildQueryFromKuery(indexPattern, queries, { allowLeadingWildcards: true }); expect(result.filter).toEqual(expectedESQueries); }); diff --git a/packages/kbn-es-query/src/es_query/from_kuery.ts b/packages/kbn-es-query/src/es_query/from_kuery.ts index 3bb5d45fc53e3..6a1254a6e5037 100644 --- a/packages/kbn-es-query/src/es_query/from_kuery.ts +++ b/packages/kbn-es-query/src/es_query/from_kuery.ts @@ -6,30 +6,42 @@ * Side Public License, v 1. */ -import { SerializableRecord } from '@kbn/utility-types'; import { Query } from '../filters'; -import { fromKueryExpression, toElasticsearchQuery, nodeTypes, KueryNode } from '../kuery'; +import { + fromKueryExpression, + toElasticsearchQuery, + nodeTypes, + KueryNode, + KueryQueryOptions, +} from '../kuery'; import { BoolQuery, DataViewBase } from './types'; /** @internal */ export function buildQueryFromKuery( indexPattern: DataViewBase | undefined, queries: Query[] = [], - allowLeadingWildcards: boolean = false, - dateFormatTZ?: string, - filtersInMustClause: boolean = false + { allowLeadingWildcards = false }: { allowLeadingWildcards?: boolean } = { + allowLeadingWildcards: false, + }, + { filtersInMustClause = false, dateFormatTZ, nestedIgnoreUnmapped }: KueryQueryOptions = { + filtersInMustClause: false, + } ): BoolQuery { const queryASTs = queries.map((query) => { return fromKueryExpression(query.query, { allowLeadingWildcards }); }); - return buildQuery(indexPattern, queryASTs, { dateFormatTZ, filtersInMustClause }); + return buildQuery(indexPattern, queryASTs, { + filtersInMustClause, + dateFormatTZ, + nestedIgnoreUnmapped, + }); } function buildQuery( indexPattern: DataViewBase | undefined, queryASTs: KueryNode[], - config: SerializableRecord = {} + config: KueryQueryOptions = {} ): BoolQuery { const compoundQueryAST = nodeTypes.function.buildNode('and', queryASTs); const kueryQuery = toElasticsearchQuery(compoundQueryAST, indexPattern, config); diff --git a/packages/kbn-es-query/src/es_query/from_lucene.ts b/packages/kbn-es-query/src/es_query/from_lucene.ts index d00614b31347f..9f72f3bf0ef6e 100644 --- a/packages/kbn-es-query/src/es_query/from_lucene.ts +++ b/packages/kbn-es-query/src/es_query/from_lucene.ts @@ -15,7 +15,7 @@ import { BoolQuery } from './types'; /** @internal */ export function buildQueryFromLucene( queries: Query[], - queryStringOptions: SerializableRecord, + queryStringOptions: SerializableRecord = {}, dateFormatTZ?: string ): BoolQuery { const combinedQueries = (queries || []).map((query) => { diff --git a/packages/kbn-es-query/src/es_query/handle_nested_filter.test.ts b/packages/kbn-es-query/src/es_query/handle_nested_filter.test.ts index 2b9fbbe5ece04..01ce78dfbab9f 100644 --- a/packages/kbn-es-query/src/es_query/handle_nested_filter.test.ts +++ b/packages/kbn-es-query/src/es_query/handle_nested_filter.test.ts @@ -39,6 +39,28 @@ describe('handleNestedFilter', function () { }); }); + it('should allow to configure ignore_unmapped', () => { + const field = getField('nestedField.child'); + const filter = buildPhraseFilter(field!, 'foo', indexPattern); + const result = handleNestedFilter(filter, indexPattern, { ignoreUnmapped: true }); + expect(result).toEqual({ + meta: { + index: 'logstash-*', + }, + query: { + nested: { + path: 'nestedField', + query: { + match_phrase: { + 'nestedField.child': 'foo', + }, + }, + ignore_unmapped: true, + }, + }, + }); + }); + it('should return filter untouched if it does not target a nested field', () => { const field = getField('extension'); const filter = buildPhraseFilter(field!, 'jpg', indexPattern); diff --git a/packages/kbn-es-query/src/es_query/handle_nested_filter.ts b/packages/kbn-es-query/src/es_query/handle_nested_filter.ts index 14138ca44d310..fb32d55e53a7e 100644 --- a/packages/kbn-es-query/src/es_query/handle_nested_filter.ts +++ b/packages/kbn-es-query/src/es_query/handle_nested_filter.ts @@ -11,7 +11,11 @@ import { DataViewBase } from './types'; import { getDataViewFieldSubtypeNested } from '../utils'; /** @internal */ -export const handleNestedFilter = (filter: Filter, indexPattern?: DataViewBase) => { +export const handleNestedFilter = ( + filter: Filter, + indexPattern?: DataViewBase, + config: { ignoreUnmapped?: boolean } = {} +) => { if (!indexPattern) return filter; const fieldName = getFilterField(filter); @@ -36,6 +40,9 @@ export const handleNestedFilter = (filter: Filter, indexPattern?: DataViewBase) nested: { path: subTypeNested.nested.path, query: query.query || query, + ...(typeof config.ignoreUnmapped === 'boolean' && { + ignore_unmapped: config.ignoreUnmapped, + }), }, }, }; diff --git a/packages/kbn-es-query/src/es_query/index.ts b/packages/kbn-es-query/src/es_query/index.ts index 399df50e35058..d4e45b35728f6 100644 --- a/packages/kbn-es-query/src/es_query/index.ts +++ b/packages/kbn-es-query/src/es_query/index.ts @@ -7,6 +7,7 @@ */ export { migrateFilter } from './migrate_filter'; +export type { EsQueryFiltersConfig } from './from_filters'; export type { EsQueryConfig } from './build_es_query'; export { buildEsQuery } from './build_es_query'; export { buildQueryFromFilters } from './from_filters'; diff --git a/packages/kbn-es-query/src/index.ts b/packages/kbn-es-query/src/index.ts index 5b0b0a4f1d3a9..aadec300b5610 100644 --- a/packages/kbn-es-query/src/index.ts +++ b/packages/kbn-es-query/src/index.ts @@ -11,6 +11,7 @@ export type { DataViewBase, DataViewFieldBase, EsQueryConfig, + EsQueryFiltersConfig, IFieldSubType, IFieldSubTypeMulti, IFieldSubTypeNested, diff --git a/packages/kbn-es-query/src/kuery/functions/is.test.ts b/packages/kbn-es-query/src/kuery/functions/is.test.ts index 2ec53629b9dca..1a8229a62fe2a 100644 --- a/packages/kbn-es-query/src/kuery/functions/is.test.ts +++ b/packages/kbn-es-query/src/kuery/functions/is.test.ts @@ -314,6 +314,32 @@ describe('kuery functions', () => { expect(result).toEqual(expected); }); + + test('should allow to configure ignore_unmapped for a nested query', () => { + const expected = { + bool: { + should: [ + { + nested: { + path: 'nestedField.nestedChild', + query: { + match: { + 'nestedField.nestedChild.doublyNestedChild': 'foo', + }, + }, + score_mode: 'none', + ignore_unmapped: true, + }, + }, + ], + minimum_should_match: 1, + }, + }; + const node = nodeTypes.function.buildNode('is', '*doublyNested*', 'foo'); + const result = is.toElasticsearchQuery(node, indexPattern, { nestedIgnoreUnmapped: true }); + + expect(result).toEqual(expected); + }); }); }); }); diff --git a/packages/kbn-es-query/src/kuery/functions/is.ts b/packages/kbn-es-query/src/kuery/functions/is.ts index eeb9f139c9e52..fcf7dffabef86 100644 --- a/packages/kbn-es-query/src/kuery/functions/is.ts +++ b/packages/kbn-es-query/src/kuery/functions/is.ts @@ -114,6 +114,9 @@ export function toElasticsearchQuery( path: subTypeNested.nested.path, query, score_mode: 'none', + ...(typeof config.nestedIgnoreUnmapped === 'boolean' && { + ignore_unmapped: config.nestedIgnoreUnmapped, + }), }, }; } diff --git a/packages/kbn-es-query/src/kuery/functions/nested.ts b/packages/kbn-es-query/src/kuery/functions/nested.ts index 18cd9794922c6..ea3ee1b4fc131 100644 --- a/packages/kbn-es-query/src/kuery/functions/nested.ts +++ b/packages/kbn-es-query/src/kuery/functions/nested.ts @@ -37,6 +37,9 @@ export function toElasticsearchQuery( nested: { path: fullPath }, }) as estypes.QueryDslQueryContainer, score_mode: 'none', + ...(typeof config.nestedIgnoreUnmapped === 'boolean' && { + ignore_unmapped: config.nestedIgnoreUnmapped, + }), }, }; } diff --git a/packages/kbn-es-query/src/kuery/functions/range.test.ts b/packages/kbn-es-query/src/kuery/functions/range.test.ts index 575246724d6b2..9ff2fc54563b4 100644 --- a/packages/kbn-es-query/src/kuery/functions/range.test.ts +++ b/packages/kbn-es-query/src/kuery/functions/range.test.ts @@ -229,6 +229,36 @@ describe('kuery functions', () => { expect(result).toEqual(expected); }); + + test('should allow to configure ignore_unmapped for a nested query', () => { + const expected = { + bool: { + should: [ + { + nested: { + path: 'nestedField.nestedChild', + query: { + range: { + 'nestedField.nestedChild.doublyNestedChild': { + lt: 8000, + }, + }, + }, + score_mode: 'none', + ignore_unmapped: true, + }, + }, + ], + minimum_should_match: 1, + }, + }; + const node = nodeTypes.function.buildNode('range', '*doublyNested*', 'lt', 8000); + const result = range.toElasticsearchQuery(node, indexPattern, { + nestedIgnoreUnmapped: true, + }); + + expect(result).toEqual(expected); + }); }); }); }); diff --git a/packages/kbn-es-query/src/kuery/functions/range.ts b/packages/kbn-es-query/src/kuery/functions/range.ts index 313f6571259a0..c355f02027e8e 100644 --- a/packages/kbn-es-query/src/kuery/functions/range.ts +++ b/packages/kbn-es-query/src/kuery/functions/range.ts @@ -66,6 +66,9 @@ export function toElasticsearchQuery( path: subTypeNested.nested.path, query, score_mode: 'none', + ...(typeof config.nestedIgnoreUnmapped === 'boolean' && { + ignore_unmapped: config.nestedIgnoreUnmapped, + }), }, }; } diff --git a/packages/kbn-es-query/src/kuery/types.ts b/packages/kbn-es-query/src/kuery/types.ts index 7b35eb10ff7b8..7a6e7a9c6bf63 100644 --- a/packages/kbn-es-query/src/kuery/types.ts +++ b/packages/kbn-es-query/src/kuery/types.ts @@ -39,4 +39,11 @@ export { nodeTypes } from './node_types'; export interface KueryQueryOptions { filtersInMustClause?: boolean; dateFormatTZ?: string; + + /** + * the Nested field type requires a special query syntax, which includes an optional ignore_unmapped parameter that indicates whether to ignore an unmapped path and not return any documents instead of an error. + * The optional ignore_unmapped parameter defaults to false. + * The `nestedIgnoreUnmapped` param allows creating queries with "ignore_unmapped": true + */ + nestedIgnoreUnmapped?: boolean; } From 61be8fbe1ebb289cb137b022dc75d0df2017d022 Mon Sep 17 00:00:00 2001 From: Michael Olorunnisola Date: Tue, 21 Jun 2022 11:09:42 -0400 Subject: [PATCH 04/61] fix horizontal rule (#134832) --- .../public/resolver/view/panels/event_detail.tsx | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/event_detail.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/event_detail.tsx index 707afeea81cc8..21a3f6d9ce066 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/event_detail.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/event_detail.tsx @@ -17,6 +17,7 @@ import { EuiSpacer, EuiText, EuiDescriptionList, + EuiHorizontalRule, EuiTextColor, EuiTitle, } from '@elastic/eui'; @@ -330,20 +331,12 @@ const StyledDescriptiveName = memo(styled(EuiText)` `); const StyledFlexTitle = memo(styled('h3')` + align-items: center; display: flex; flex-flow: row; font-size: 1.2em; `); -const StyledTitleRule = memo(styled('hr')` - &.euiHorizontalRule.euiHorizontalRule--full.euiHorizontalRule--marginSmall.override { - display: block; - flex: 1; - margin-left: 0.5em; - } -`); const TitleHr = memo(() => { - return ( - - ); + return ; }); From ebe331eebb017e2790c6e26fd56e6037b770fce3 Mon Sep 17 00:00:00 2001 From: Andrew Tate Date: Tue, 21 Jun 2022 10:13:54 -0500 Subject: [PATCH 05/61] [Lens] optimize percentiles fetching (#131875) --- .../plugins/lens/common/expressions/index.ts | 2 +- .../index.ts | 2 +- .../map_to_columns.test.ts} | 95 +++- .../map_to_columns/map_to_columns.ts | 32 ++ .../map_to_columns_fn.ts} | 41 +- .../types.ts | 4 +- .../rename_columns/rename_columns.ts | 32 -- x-pack/plugins/lens/public/expressions.ts | 4 +- .../indexpattern.test.ts | 154 +++++- .../operations/definitions/index.ts | 17 +- .../definitions/percentile.test.tsx | 441 ++++++++++++++++++ .../operations/definitions/percentile.tsx | 123 ++++- .../indexpattern_datasource/to_expression.ts | 118 ++++- .../lens/server/expressions/expressions.ts | 4 +- .../translations/translations/fr-FR.json | 2 - .../translations/translations/ja-JP.json | 2 - .../translations/translations/zh-CN.json | 2 - 17 files changed, 959 insertions(+), 116 deletions(-) rename x-pack/plugins/lens/common/expressions/{rename_columns => map_to_columns}/index.ts (83%) rename x-pack/plugins/lens/common/expressions/{rename_columns/rename_columns.test.ts => map_to_columns/map_to_columns.test.ts} (70%) create mode 100644 x-pack/plugins/lens/common/expressions/map_to_columns/map_to_columns.ts rename x-pack/plugins/lens/common/expressions/{rename_columns/rename_columns_fn.ts => map_to_columns/map_to_columns_fn.ts} (64%) rename x-pack/plugins/lens/common/expressions/{rename_columns => map_to_columns}/types.ts (85%) delete mode 100644 x-pack/plugins/lens/common/expressions/rename_columns/rename_columns.ts diff --git a/x-pack/plugins/lens/common/expressions/index.ts b/x-pack/plugins/lens/common/expressions/index.ts index 924141da6074a..ccb6343334d62 100644 --- a/x-pack/plugins/lens/common/expressions/index.ts +++ b/x-pack/plugins/lens/common/expressions/index.ts @@ -8,6 +8,6 @@ export * from './counter_rate'; export * from './collapse'; export * from './format_column'; -export * from './rename_columns'; +export * from './map_to_columns'; export * from './time_scale'; export * from './datatable'; diff --git a/x-pack/plugins/lens/common/expressions/rename_columns/index.ts b/x-pack/plugins/lens/common/expressions/map_to_columns/index.ts similarity index 83% rename from x-pack/plugins/lens/common/expressions/rename_columns/index.ts rename to x-pack/plugins/lens/common/expressions/map_to_columns/index.ts index 86ab16e06ec01..8ce71d06f6579 100644 --- a/x-pack/plugins/lens/common/expressions/rename_columns/index.ts +++ b/x-pack/plugins/lens/common/expressions/map_to_columns/index.ts @@ -5,4 +5,4 @@ * 2.0. */ -export { renameColumns } from './rename_columns'; +export { mapToColumns } from './map_to_columns'; diff --git a/x-pack/plugins/lens/common/expressions/rename_columns/rename_columns.test.ts b/x-pack/plugins/lens/common/expressions/map_to_columns/map_to_columns.test.ts similarity index 70% rename from x-pack/plugins/lens/common/expressions/rename_columns/rename_columns.test.ts rename to x-pack/plugins/lens/common/expressions/map_to_columns/map_to_columns.test.ts index 2047e4647cb4c..e5d678b88e5a5 100644 --- a/x-pack/plugins/lens/common/expressions/rename_columns/rename_columns.test.ts +++ b/x-pack/plugins/lens/common/expressions/map_to_columns/map_to_columns.test.ts @@ -5,11 +5,11 @@ * 2.0. */ -import { renameColumns } from './rename_columns'; +import { mapToColumns } from './map_to_columns'; import { Datatable } from '@kbn/expressions-plugin/common'; import { createMockExecutionContext } from '@kbn/expressions-plugin/common/mocks'; -describe('rename_columns', () => { +describe('map_to_columns', () => { it('should rename columns of a given datatable', async () => { const input: Datatable = { type: 'datatable', @@ -26,17 +26,21 @@ describe('rename_columns', () => { }; const idMap = { - a: { - id: 'b', - label: 'Austrailia', - }, - b: { - id: 'c', - label: 'Boomerang', - }, + a: [ + { + id: 'b', + label: 'Austrailia', + }, + ], + b: [ + { + id: 'c', + label: 'Boomerang', + }, + ], }; - const result = await renameColumns.fn( + const result = await mapToColumns.fn( input, { idMap: JSON.stringify(idMap) }, createMockExecutionContext() @@ -99,10 +103,10 @@ describe('rename_columns', () => { }; const idMap = { - b: { id: 'c', label: 'Catamaran' }, + b: [{ id: 'c', label: 'Catamaran' }], }; - const result = await renameColumns.fn( + const result = await mapToColumns.fn( input, { idMap: JSON.stringify(idMap) }, createMockExecutionContext() @@ -149,6 +153,67 @@ describe('rename_columns', () => { `); }); + it('should map to multiple original columns', async () => { + const input: Datatable = { + type: 'datatable', + columns: [{ id: 'b', name: 'B', meta: { type: 'number' } }], + rows: [{ b: 2 }, { b: 4 }, { b: 6 }, { b: 8 }], + }; + + const idMap = { + b: [ + { id: 'c', label: 'Catamaran' }, + { id: 'd', label: 'Dinghy' }, + ], + }; + + const result = await mapToColumns.fn( + input, + { idMap: JSON.stringify(idMap) }, + createMockExecutionContext() + ); + + expect(result).toMatchInlineSnapshot(` + Object { + "columns": Array [ + Object { + "id": "c", + "meta": Object { + "type": "number", + }, + "name": "Catamaran", + }, + Object { + "id": "d", + "meta": Object { + "type": "number", + }, + "name": "Dinghy", + }, + ], + "rows": Array [ + Object { + "c": 2, + "d": 2, + }, + Object { + "c": 4, + "d": 4, + }, + Object { + "c": 6, + "d": 6, + }, + Object { + "c": 8, + "d": 8, + }, + ], + "type": "datatable", + } + `); + }); + it('should rename date histograms', async () => { const input: Datatable = { type: 'datatable', @@ -165,10 +230,10 @@ describe('rename_columns', () => { }; const idMap = { - b: { id: 'c', label: 'Apple', operationType: 'date_histogram', sourceField: 'banana' }, + b: [{ id: 'c', label: 'Apple', operationType: 'date_histogram', sourceField: 'banana' }], }; - const result = await renameColumns.fn( + const result = await mapToColumns.fn( input, { idMap: JSON.stringify(idMap) }, createMockExecutionContext() diff --git a/x-pack/plugins/lens/common/expressions/map_to_columns/map_to_columns.ts b/x-pack/plugins/lens/common/expressions/map_to_columns/map_to_columns.ts new file mode 100644 index 0000000000000..3315cd4170dd9 --- /dev/null +++ b/x-pack/plugins/lens/common/expressions/map_to_columns/map_to_columns.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import type { MapToColumnsExpressionFunction } from './types'; + +export const mapToColumns: MapToColumnsExpressionFunction = { + name: 'lens_map_to_columns', + type: 'datatable', + help: i18n.translate('xpack.lens.functions.mapToColumns.help', { + defaultMessage: 'A helper to transform a datatable to match Lens column definitions', + }), + args: { + idMap: { + types: ['string'], + help: i18n.translate('xpack.lens.functions.mapToColumns.idMap.help', { + defaultMessage: + 'A JSON encoded object in which keys are the datatable column ids and values are the Lens column definitions. Any datatable columns not mentioned within the ID map will be kept unmapped.', + }), + }, + }, + inputTypes: ['datatable'], + async fn(...args) { + /** Build optimization: prevent adding extra code into initial bundle **/ + const { mapToOriginalColumns } = await import('./map_to_columns_fn'); + return mapToOriginalColumns(...args); + }, +}; diff --git a/x-pack/plugins/lens/common/expressions/rename_columns/rename_columns_fn.ts b/x-pack/plugins/lens/common/expressions/map_to_columns/map_to_columns_fn.ts similarity index 64% rename from x-pack/plugins/lens/common/expressions/rename_columns/rename_columns_fn.ts rename to x-pack/plugins/lens/common/expressions/map_to_columns/map_to_columns_fn.ts index 3cf4293ffa9f2..401051db71065 100644 --- a/x-pack/plugins/lens/common/expressions/rename_columns/rename_columns_fn.ts +++ b/x-pack/plugins/lens/common/expressions/map_to_columns/map_to_columns_fn.ts @@ -6,7 +6,7 @@ */ import type { DatatableColumn } from '@kbn/expressions-plugin/common'; -import type { OriginalColumn, RenameColumnsExpressionFunction } from './types'; +import type { OriginalColumn, MapToColumnsExpressionFunction } from './types'; function getColumnName(originalColumn: OriginalColumn, newColumn: DatatableColumn) { if (originalColumn?.operationType === 'date_histogram') { @@ -21,23 +21,22 @@ function getColumnName(originalColumn: OriginalColumn, newColumn: DatatableColum return originalColumn.label; } -export const renameColumnFn: RenameColumnsExpressionFunction['fn'] = ( +export const mapToOriginalColumns: MapToColumnsExpressionFunction['fn'] = ( data, { idMap: encodedIdMap } ) => { - const idMap = JSON.parse(encodedIdMap) as Record; + const idMap = JSON.parse(encodedIdMap) as Record; return { ...data, rows: data.rows.map((row) => { const mappedRow: Record = {}; - Object.entries(idMap).forEach(([fromId, toId]) => { - mappedRow[toId.id] = row[fromId]; - }); Object.entries(row).forEach(([id, value]) => { if (id in idMap) { - mappedRow[idMap[id].id] = value; + idMap[id].forEach(({ id: originalId }) => { + mappedRow[originalId] = value; + }); } else { mappedRow[id] = value; } @@ -45,18 +44,20 @@ export const renameColumnFn: RenameColumnsExpressionFunction['fn'] = ( return mappedRow; }), - columns: data.columns.map((column) => { - const mappedItem = idMap[column.id]; - - if (!mappedItem) { - return column; - } - - return { - ...column, - id: mappedItem.id, - name: getColumnName(mappedItem, column), - }; - }), + columns: data.columns + .map((column) => { + const originalColumns = idMap[column.id]; + + if (!originalColumns) { + return column; + } + + return originalColumns.map((originalColumn) => ({ + ...column, + id: originalColumn.id, + name: getColumnName(originalColumn, column), + })); + }) + .flat(), }; }; diff --git a/x-pack/plugins/lens/common/expressions/rename_columns/types.ts b/x-pack/plugins/lens/common/expressions/map_to_columns/types.ts similarity index 85% rename from x-pack/plugins/lens/common/expressions/rename_columns/types.ts rename to x-pack/plugins/lens/common/expressions/map_to_columns/types.ts index 6edfda41cc62f..0c99260b704b1 100644 --- a/x-pack/plugins/lens/common/expressions/rename_columns/types.ts +++ b/x-pack/plugins/lens/common/expressions/map_to_columns/types.ts @@ -12,8 +12,8 @@ export type OriginalColumn = { id: string; label: string } & ( | { operationType: string; sourceField: never } ); -export type RenameColumnsExpressionFunction = ExpressionFunctionDefinition< - 'lens_rename_columns', +export type MapToColumnsExpressionFunction = ExpressionFunctionDefinition< + 'lens_map_to_columns', Datatable, { idMap: string; diff --git a/x-pack/plugins/lens/common/expressions/rename_columns/rename_columns.ts b/x-pack/plugins/lens/common/expressions/rename_columns/rename_columns.ts deleted file mode 100644 index d425d5c80d18d..0000000000000 --- a/x-pack/plugins/lens/common/expressions/rename_columns/rename_columns.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; -import type { RenameColumnsExpressionFunction } from './types'; - -export const renameColumns: RenameColumnsExpressionFunction = { - name: 'lens_rename_columns', - type: 'datatable', - help: i18n.translate('xpack.lens.functions.renameColumns.help', { - defaultMessage: 'A helper to rename the columns of a datatable', - }), - args: { - idMap: { - types: ['string'], - help: i18n.translate('xpack.lens.functions.renameColumns.idMap.help', { - defaultMessage: - 'A JSON encoded object in which keys are the old column ids and values are the corresponding new ones. All other columns ids are kept.', - }), - }, - }, - inputTypes: ['datatable'], - async fn(...args) { - /** Build optimization: prevent adding extra code into initial bundle **/ - const { renameColumnFn } = await import('./rename_columns_fn'); - return renameColumnFn(...args); - }, -}; diff --git a/x-pack/plugins/lens/public/expressions.ts b/x-pack/plugins/lens/public/expressions.ts index 868d947464e5f..a5f193d63e4f3 100644 --- a/x-pack/plugins/lens/public/expressions.ts +++ b/x-pack/plugins/lens/public/expressions.ts @@ -8,7 +8,7 @@ import type { ExpressionsSetup } from '@kbn/expressions-plugin/public'; import { getDatatable } from '../common/expressions/datatable/datatable'; import { datatableColumn } from '../common/expressions/datatable/datatable_column'; -import { renameColumns } from '../common/expressions/rename_columns/rename_columns'; +import { mapToColumns } from '../common/expressions/map_to_columns/map_to_columns'; import { formatColumn } from '../common/expressions/format_column'; import { counterRate } from '../common/expressions/counter_rate'; import { getTimeScale } from '../common/expressions/time_scale/time_scale'; @@ -24,7 +24,7 @@ export const setupExpressions = ( collapse, counterRate, formatColumn, - renameColumns, + mapToColumns, datatableColumn, getDatatable(formatFactory), getTimeScale(getDatatableUtilities, getTimeZone), diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts index 6806b1ce47795..a37976f6d8069 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/indexpattern.test.ts @@ -33,6 +33,7 @@ import { FormulaIndexPatternColumn, RangeIndexPatternColumn, FiltersIndexPatternColumn, + PercentileIndexPatternColumn, } from './operations'; import { createMockedFullReference } from './operations/mocks'; import { cloneDeep } from 'lodash'; @@ -491,10 +492,10 @@ describe('IndexPattern Data Source', () => { Object { "arguments": Object { "idMap": Array [ - "{\\"col-0-0\\":{\\"label\\":\\"Count of records\\",\\"dataType\\":\\"number\\",\\"isBucketed\\":false,\\"sourceField\\":\\"___records___\\",\\"operationType\\":\\"count\\",\\"id\\":\\"col1\\"},\\"col-1-1\\":{\\"label\\":\\"Date\\",\\"dataType\\":\\"date\\",\\"isBucketed\\":true,\\"operationType\\":\\"date_histogram\\",\\"sourceField\\":\\"timestamp\\",\\"params\\":{\\"interval\\":\\"1d\\"},\\"id\\":\\"col2\\"}}", + "{\\"col-0-0\\":[{\\"label\\":\\"Count of records\\",\\"dataType\\":\\"number\\",\\"isBucketed\\":false,\\"sourceField\\":\\"___records___\\",\\"operationType\\":\\"count\\",\\"id\\":\\"col1\\"}],\\"col-1-1\\":[{\\"label\\":\\"Date\\",\\"dataType\\":\\"date\\",\\"isBucketed\\":true,\\"operationType\\":\\"date_histogram\\",\\"sourceField\\":\\"timestamp\\",\\"params\\":{\\"interval\\":\\"1d\\"},\\"id\\":\\"col2\\"}]}", ], }, - "function": "lens_rename_columns", + "function": "lens_map_to_columns", "type": "function", }, ], @@ -905,9 +906,9 @@ describe('IndexPattern Data Source', () => { const ast = indexPatternDatasource.toExpression(state, 'first') as Ast; expect(ast.chain[1].arguments.metricsAtAllLevels).toEqual([false]); expect(JSON.parse(ast.chain[2].arguments.idMap[0] as string)).toEqual({ - 'col-0-0': expect.objectContaining({ id: 'bucket1' }), - 'col-1-1': expect.objectContaining({ id: 'bucket2' }), - 'col-2-2': expect.objectContaining({ id: 'metric' }), + 'col-0-0': [expect.objectContaining({ id: 'bucket1' })], + 'col-1-1': [expect.objectContaining({ id: 'bucket2' })], + 'col-2-2': [expect.objectContaining({ id: 'metric' })], }); }); @@ -948,6 +949,140 @@ describe('IndexPattern Data Source', () => { expect(ast.chain[1].arguments.timeFields).not.toContain('timefield'); }); + it('should call optimizeEsAggs once per operation for which it is available', () => { + const queryBaseState: DataViewBaseState = { + currentIndexPatternId: '1', + layers: { + first: { + indexPatternId: '1', + columns: { + col1: { + label: 'timestamp', + dataType: 'date', + operationType: 'date_histogram', + sourceField: 'timestamp', + isBucketed: true, + scale: 'interval', + params: { + interval: 'auto', + includeEmptyRows: true, + dropPartials: false, + }, + } as DateHistogramIndexPatternColumn, + col2: { + label: '95th percentile of bytes', + dataType: 'number', + operationType: 'percentile', + sourceField: 'bytes', + isBucketed: false, + scale: 'ratio', + params: { + percentile: 95, + }, + } as PercentileIndexPatternColumn, + col3: { + label: '95th percentile of bytes', + dataType: 'number', + operationType: 'percentile', + sourceField: 'bytes', + isBucketed: false, + scale: 'ratio', + params: { + percentile: 95, + }, + } as PercentileIndexPatternColumn, + }, + columnOrder: ['col1', 'col2', 'col3'], + incompleteColumns: {}, + }, + }, + }; + + const state = enrichBaseState(queryBaseState); + + const optimizeMock = jest.spyOn(operationDefinitionMap.percentile, 'optimizeEsAggs'); + + indexPatternDatasource.toExpression(state, 'first'); + + expect(operationDefinitionMap.percentile.optimizeEsAggs).toHaveBeenCalledTimes(1); + + optimizeMock.mockRestore(); + }); + + it('should update anticipated esAggs column IDs based on the order of the optimized agg expression builders', () => { + const queryBaseState: DataViewBaseState = { + currentIndexPatternId: '1', + layers: { + first: { + indexPatternId: '1', + columns: { + col1: { + label: 'timestamp', + dataType: 'date', + operationType: 'date_histogram', + sourceField: 'timestamp', + isBucketed: true, + scale: 'interval', + params: { + interval: 'auto', + includeEmptyRows: true, + dropPartials: false, + }, + } as DateHistogramIndexPatternColumn, + col2: { + label: '95th percentile of bytes', + dataType: 'number', + operationType: 'percentile', + sourceField: 'bytes', + isBucketed: false, + scale: 'ratio', + params: { + percentile: 95, + }, + } as PercentileIndexPatternColumn, + col3: { + label: 'Count of records', + dataType: 'number', + isBucketed: false, + sourceField: '___records___', + operationType: 'count', + timeScale: 'h', + }, + col4: { + label: 'Count of records2', + dataType: 'number', + isBucketed: false, + sourceField: '___records___', + operationType: 'count', + timeScale: 'h', + }, + }, + columnOrder: ['col1', 'col2', 'col3', 'col4'], + incompleteColumns: {}, + }, + }, + }; + + const state = enrichBaseState(queryBaseState); + + const optimizeMock = jest + .spyOn(operationDefinitionMap.percentile, 'optimizeEsAggs') + .mockImplementation((aggs, esAggsIdMap) => { + // change the order of the aggregations + return { aggs: aggs.reverse(), esAggsIdMap }; + }); + + const ast = indexPatternDatasource.toExpression(state, 'first') as Ast; + + expect(operationDefinitionMap.percentile.optimizeEsAggs).toHaveBeenCalledTimes(1); + + const idMap = JSON.parse(ast.chain[2].arguments.idMap as unknown as string); + + expect(Object.keys(idMap)).toEqual(['col-0-3', 'col-1-2', 'col-2-1', 'col-3-0']); + + optimizeMock.mockRestore(); + }); + describe('references', () => { beforeEach(() => { // @ts-expect-error we are inserting an invalid type @@ -1026,10 +1161,13 @@ describe('IndexPattern Data Source', () => { const state = enrichBaseState(queryBaseState); const ast = indexPatternDatasource.toExpression(state, 'first') as Ast; + expect(JSON.parse(ast.chain[2].arguments.idMap[0] as string)).toEqual({ - 'col-0-0': expect.objectContaining({ - id: 'col1', - }), + 'col-0-0': [ + expect.objectContaining({ + id: 'col1', + }), + ], }); }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts index 6ca79009ff95b..74d635cac02dc 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts @@ -12,7 +12,10 @@ import { CoreStart, } from '@kbn/core/public'; import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; -import { ExpressionAstFunction } from '@kbn/expressions-plugin/public'; +import { + ExpressionAstExpressionBuilder, + ExpressionAstFunction, +} from '@kbn/expressions-plugin/public'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; @@ -55,6 +58,7 @@ import { IndexPattern, IndexPatternField, IndexPatternLayer } from '../../types' import { DateRange, LayerType } from '../../../../common'; import { rangeOperation } from './ranges'; import { IndexPatternDimensionEditorProps, OperationSupportMatrix } from '../../dimension_panel'; +import type { OriginalColumn } from '../../to_expression'; export type { IncompleteColumn, @@ -378,6 +382,17 @@ interface BaseOperationDefinitionProps * Title for the help component */ helpComponentTitle?: string; + /** + * Optimizes EsAggs expression. Invoked only once per operation type. + */ + optimizeEsAggs?: ( + aggs: ExpressionAstExpressionBuilder[], + esAggsIdMap: Record, + aggExpressionToEsAggsIdMap: Map + ) => { + aggs: ExpressionAstExpressionBuilder[]; + esAggsIdMap: Record; + }; } interface BaseBuildColumnArgs { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx index ae8ba7d965ea7..08afcc447eec6 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.test.tsx @@ -20,6 +20,12 @@ import { percentileOperation } from '.'; import { IndexPattern, IndexPatternLayer } from '../../types'; import { PercentileIndexPatternColumn } from './percentile'; import { TermsIndexPatternColumn } from './terms'; +import { + buildExpressionFunction, + buildExpression, + ExpressionAstExpressionBuilder, +} from '@kbn/expressions-plugin/public'; +import type { OriginalColumn } from '../../to_expression'; jest.mock('lodash', () => { const original = jest.requireActual('lodash'); @@ -187,6 +193,441 @@ describe('percentile', () => { }); }); + describe('optimizeEsAggs', () => { + const makeEsAggBuilder = (name: string, params: object) => + buildExpression({ + type: 'expression', + chain: [buildExpressionFunction(name, params).toAst()], + }); + + const buildMapsFromAggBuilders = (aggs: ExpressionAstExpressionBuilder[]) => { + const esAggsIdMap: Record = {}; + const aggsToIdsMap = new Map(); + aggs.forEach((builder, i) => { + const esAggsId = `col-${i}-${i}`; + esAggsIdMap[esAggsId] = [{ id: `original-${i}` } as OriginalColumn]; + aggsToIdsMap.set(builder, esAggsId); + }); + return { + esAggsIdMap, + aggsToIdsMap, + }; + }; + + it('should collapse percentile dimensions with matching parameters', () => { + const field1 = 'foo'; + const field2 = 'bar'; + const timeShift1 = '1d'; + const timeShift2 = '2d'; + + const aggs = [ + // group 1 + makeEsAggBuilder('aggSinglePercentile', { + id: 1, + enabled: true, + schema: 'metric', + field: field1, + percentile: 10, + timeShift: undefined, + }), + makeEsAggBuilder('aggSinglePercentile', { + id: 2, + enabled: true, + schema: 'metric', + field: field1, + percentile: 20, + timeShift: undefined, + }), + makeEsAggBuilder('aggSinglePercentile', { + id: 3, + enabled: true, + schema: 'metric', + field: field1, + percentile: 30, + timeShift: undefined, + }), + // group 2 + makeEsAggBuilder('aggSinglePercentile', { + id: 4, + enabled: true, + schema: 'metric', + field: field2, + percentile: 10, + timeShift: undefined, + }), + makeEsAggBuilder('aggSinglePercentile', { + id: 5, + enabled: true, + schema: 'metric', + field: field2, + percentile: 40, + timeShift: undefined, + }), + // group 3 + makeEsAggBuilder('aggSinglePercentile', { + id: 6, + enabled: true, + schema: 'metric', + field: field2, + percentile: 50, + timeShift: timeShift1, + }), + makeEsAggBuilder('aggSinglePercentile', { + id: 7, + enabled: true, + schema: 'metric', + field: field2, + percentile: 60, + timeShift: timeShift1, + }), + // group 4 + makeEsAggBuilder('aggSinglePercentile', { + id: 8, + enabled: true, + schema: 'metric', + field: field2, + percentile: 70, + timeShift: timeShift2, + }), + makeEsAggBuilder('aggSinglePercentile', { + id: 9, + enabled: true, + schema: 'metric', + field: field2, + percentile: 80, + timeShift: timeShift2, + }), + ]; + + const { esAggsIdMap, aggsToIdsMap } = buildMapsFromAggBuilders(aggs); + + const { esAggsIdMap: newIdMap, aggs: newAggs } = percentileOperation.optimizeEsAggs!( + aggs, + esAggsIdMap, + aggsToIdsMap + ); + + expect(newAggs.length).toBe(4); + + expect(newAggs[0].functions[0].getArgument('field')![0]).toBe(field1); + expect(newAggs[0].functions[0].getArgument('timeShift')).toBeUndefined(); + expect(newAggs[1].functions[0].getArgument('field')![0]).toBe(field2); + expect(newAggs[1].functions[0].getArgument('timeShift')).toBeUndefined(); + expect(newAggs[2].functions[0].getArgument('field')![0]).toBe(field2); + expect(newAggs[2].functions[0].getArgument('timeShift')![0]).toBe(timeShift1); + expect(newAggs[3].functions[0].getArgument('field')![0]).toBe(field2); + expect(newAggs[3].functions[0].getArgument('timeShift')![0]).toBe(timeShift2); + + expect(newAggs).toMatchInlineSnapshot(` + Array [ + Object { + "findFunction": [Function], + "functions": Array [ + Object { + "addArgument": [Function], + "arguments": Object { + "enabled": Array [ + true, + ], + "field": Array [ + "foo", + ], + "id": Array [ + 1, + ], + "percents": Array [ + 10, + 20, + 30, + ], + "schema": Array [ + "metric", + ], + }, + "getArgument": [Function], + "name": "aggPercentiles", + "removeArgument": [Function], + "replaceArgument": [Function], + "toAst": [Function], + "toString": [Function], + "type": "expression_function_builder", + }, + ], + "toAst": [Function], + "toString": [Function], + "type": "expression_builder", + }, + Object { + "findFunction": [Function], + "functions": Array [ + Object { + "addArgument": [Function], + "arguments": Object { + "enabled": Array [ + true, + ], + "field": Array [ + "bar", + ], + "id": Array [ + 4, + ], + "percents": Array [ + 10, + 40, + ], + "schema": Array [ + "metric", + ], + }, + "getArgument": [Function], + "name": "aggPercentiles", + "removeArgument": [Function], + "replaceArgument": [Function], + "toAst": [Function], + "toString": [Function], + "type": "expression_function_builder", + }, + ], + "toAst": [Function], + "toString": [Function], + "type": "expression_builder", + }, + Object { + "findFunction": [Function], + "functions": Array [ + Object { + "addArgument": [Function], + "arguments": Object { + "enabled": Array [ + true, + ], + "field": Array [ + "bar", + ], + "id": Array [ + 6, + ], + "percents": Array [ + 50, + 60, + ], + "schema": Array [ + "metric", + ], + "timeShift": Array [ + "1d", + ], + }, + "getArgument": [Function], + "name": "aggPercentiles", + "removeArgument": [Function], + "replaceArgument": [Function], + "toAst": [Function], + "toString": [Function], + "type": "expression_function_builder", + }, + ], + "toAst": [Function], + "toString": [Function], + "type": "expression_builder", + }, + Object { + "findFunction": [Function], + "functions": Array [ + Object { + "addArgument": [Function], + "arguments": Object { + "enabled": Array [ + true, + ], + "field": Array [ + "bar", + ], + "id": Array [ + 8, + ], + "percents": Array [ + 70, + 80, + ], + "schema": Array [ + "metric", + ], + "timeShift": Array [ + "2d", + ], + }, + "getArgument": [Function], + "name": "aggPercentiles", + "removeArgument": [Function], + "replaceArgument": [Function], + "toAst": [Function], + "toString": [Function], + "type": "expression_function_builder", + }, + ], + "toAst": [Function], + "toString": [Function], + "type": "expression_builder", + }, + ] + `); + + expect(newIdMap).toMatchInlineSnapshot(` + Object { + "col-?-1.10": Array [ + Object { + "id": "original-0", + }, + ], + "col-?-1.20": Array [ + Object { + "id": "original-1", + }, + ], + "col-?-1.30": Array [ + Object { + "id": "original-2", + }, + ], + "col-?-4.10": Array [ + Object { + "id": "original-3", + }, + ], + "col-?-4.40": Array [ + Object { + "id": "original-4", + }, + ], + "col-?-6.50": Array [ + Object { + "id": "original-5", + }, + ], + "col-?-6.60": Array [ + Object { + "id": "original-6", + }, + ], + "col-?-8.70": Array [ + Object { + "id": "original-7", + }, + ], + "col-?-8.80": Array [ + Object { + "id": "original-8", + }, + ], + } + `); + }); + + it('should handle multiple identical percentiles', () => { + const field1 = 'foo'; + const field2 = 'bar'; + const samePercentile = 90; + + const aggs = [ + // group 1 + makeEsAggBuilder('aggSinglePercentile', { + id: 1, + enabled: true, + schema: 'metric', + field: field1, + percentile: samePercentile, + timeShift: undefined, + }), + makeEsAggBuilder('aggSinglePercentile', { + id: 2, + enabled: true, + schema: 'metric', + field: field1, + percentile: samePercentile, + timeShift: undefined, + }), + makeEsAggBuilder('aggSinglePercentile', { + id: 4, + enabled: true, + schema: 'metric', + field: field2, + percentile: 10, + timeShift: undefined, + }), + makeEsAggBuilder('aggSinglePercentile', { + id: 3, + enabled: true, + schema: 'metric', + field: field1, + percentile: samePercentile, + timeShift: undefined, + }), + ]; + + const { esAggsIdMap, aggsToIdsMap } = buildMapsFromAggBuilders(aggs); + + const { esAggsIdMap: newIdMap, aggs: newAggs } = percentileOperation.optimizeEsAggs!( + aggs, + esAggsIdMap, + aggsToIdsMap + ); + + expect(newAggs.length).toBe(2); + expect(newIdMap[`col-?-1.${samePercentile}`].length).toBe(3); + expect(newIdMap).toMatchInlineSnapshot(` + Object { + "col-2-2": Array [ + Object { + "id": "original-2", + }, + ], + "col-?-1.90": Array [ + Object { + "id": "original-0", + }, + Object { + "id": "original-1", + }, + Object { + "id": "original-3", + }, + ], + } + `); + }); + + it("shouldn't touch non-percentile aggs or single percentiles with no siblings", () => { + const aggs = [ + makeEsAggBuilder('aggSinglePercentile', { + id: 1, + enabled: true, + schema: 'metric', + field: 'foo', + percentile: 30, + }), + makeEsAggBuilder('aggMax', { + id: 1, + enabled: true, + schema: 'metric', + field: 'bar', + }), + ]; + + const { esAggsIdMap, aggsToIdsMap } = buildMapsFromAggBuilders(aggs); + + const { esAggsIdMap: newIdMap, aggs: newAggs } = percentileOperation.optimizeEsAggs!( + aggs, + esAggsIdMap, + aggsToIdsMap + ); + + expect(newAggs).toEqual(aggs); + expect(newIdMap).toEqual(esAggsIdMap); + }); + }); + describe('buildColumn', () => { it('should set default percentile', () => { const indexPattern = createMockedIndexPattern(); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx index 0699ad5f88405..a313b03d34e1b 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/percentile.tsx @@ -8,8 +8,13 @@ import { EuiFormRow, EuiRange, EuiRangeProps } from '@elastic/eui'; import React, { useCallback } from 'react'; import { i18n } from '@kbn/i18n'; -import { AggFunctionsMapping } from '@kbn/data-plugin/public'; -import { buildExpressionFunction } from '@kbn/expressions-plugin/public'; +import { AggFunctionsMapping, METRIC_TYPES } from '@kbn/data-plugin/public'; +import { + buildExpression, + buildExpressionFunction, + ExpressionAstExpressionBuilder, +} from '@kbn/expressions-plugin/public'; +import { AggExpressionFunctionArgs } from '@kbn/data-plugin/common'; import { OperationDefinition } from '.'; import { getFormatFromPreviousColumn, @@ -143,6 +148,120 @@ export const percentileOperation: OperationDefinition< } ).toAst(); }, + optimizeEsAggs: (_aggs, _esAggsIdMap, aggExpressionToEsAggsIdMap) => { + let aggs = [..._aggs]; + const esAggsIdMap = { ..._esAggsIdMap }; + + const percentileExpressionsByArgs: Record = {}; + + // group percentile dimensions by differentiating parameters + aggs.forEach((expressionBuilder) => { + const { + functions: [fnBuilder], + } = expressionBuilder; + if (fnBuilder.name === 'aggSinglePercentile') { + const groupByKey = `${fnBuilder.getArgument('field')?.[0]}-${ + fnBuilder.getArgument('timeShift')?.[0] + }`; + if (!(groupByKey in percentileExpressionsByArgs)) { + percentileExpressionsByArgs[groupByKey] = []; + } + + percentileExpressionsByArgs[groupByKey].push(expressionBuilder); + } + }); + + // collapse them into a single esAggs expression builder + Object.values(percentileExpressionsByArgs).forEach((expressionBuilders) => { + if (expressionBuilders.length <= 1) { + // don't need to optimize if there aren't more than one + return; + } + + // we're going to merge these percentile builders into a single builder, so + // remove them from the aggs array + aggs = aggs.filter((aggBuilder) => !expressionBuilders.includes(aggBuilder)); + + const { + functions: [firstFnBuilder], + } = expressionBuilders[0]; + + const esAggsColumnId = firstFnBuilder.getArgument('id')![0]; + const aggPercentilesConfig: AggExpressionFunctionArgs = { + id: esAggsColumnId, + enabled: firstFnBuilder.getArgument('enabled')?.[0], + schema: firstFnBuilder.getArgument('schema')?.[0], + field: firstFnBuilder.getArgument('field')?.[0], + percents: [], + // time shift is added to wrapping aggFilteredMetric if filter is set + timeShift: firstFnBuilder.getArgument('timeShift')?.[0], + }; + + const percentileToBuilder: Record = {}; + for (const builder of expressionBuilders) { + const percentile = builder.functions[0].getArgument('percentile')![0] as number; + if (percentile in percentileToBuilder) { + // found a duplicate percentile so let's optimize + + const duplicateExpressionBuilder = percentileToBuilder[percentile]; + + const idForDuplicate = aggExpressionToEsAggsIdMap.get(duplicateExpressionBuilder); + const idForThisOne = aggExpressionToEsAggsIdMap.get(builder); + + if (!idForDuplicate || !idForThisOne) { + throw new Error( + "Couldn't find esAggs ID for percentile expression builder... this should never happen." + ); + } + + esAggsIdMap[idForDuplicate].push(...esAggsIdMap[idForThisOne]); + + delete esAggsIdMap[idForThisOne]; + + // remove current builder + expressionBuilders = expressionBuilders.filter((b) => b !== builder); + } else { + percentileToBuilder[percentile] = builder; + aggPercentilesConfig.percents!.push(percentile); + } + } + + const multiPercentilesAst = buildExpressionFunction( + 'aggPercentiles', + aggPercentilesConfig + ).toAst(); + + aggs.push( + buildExpression({ + type: 'expression', + chain: [multiPercentilesAst], + }) + ); + + expressionBuilders.forEach((expressionBuilder) => { + const currentEsAggsId = aggExpressionToEsAggsIdMap.get(expressionBuilder); + if (currentEsAggsId === undefined) { + throw new Error('Could not find current column ID for percentile agg expression builder'); + } + // esAggs appends the percent number to the agg id to make distinct column IDs in the resulting datatable. + // We're anticipating that here by adding the `.`. + // The agg index will be assigned when we update all the indices in the ID map based on the agg order in the + // datasource's toExpression fn so we mark it as '?' for now. + const newEsAggsId = `col-?-${esAggsColumnId}.${ + expressionBuilder.functions[0].getArgument('percentile')![0] + }`; + + esAggsIdMap[newEsAggsId] = esAggsIdMap[currentEsAggsId]; + + delete esAggsIdMap[currentEsAggsId]; + }); + }); + + return { + esAggsIdMap, + aggs, + }; + }, getErrorMessage: (layer, columnId, indexPattern) => combineErrorMessages([ getInvalidFieldMessage(layer.columns[columnId] as FieldBasedIndexPatternColumn, indexPattern), diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts b/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts index 0307e748ac1fb..6cfab965f36a9 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/to_expression.ts @@ -6,7 +6,7 @@ */ import type { IUiSettingsClient } from '@kbn/core/public'; -import { partition } from 'lodash'; +import { partition, uniq } from 'lodash'; import { AggFunctionsMapping, EsaggsExpressionFunctionDefinition, @@ -27,7 +27,7 @@ import { DateHistogramIndexPatternColumn, RangeIndexPatternColumn } from './oper import { FormattedIndexPatternColumn } from './operations/definitions/column_types'; import { isColumnFormatted, isColumnOfType } from './operations/definitions/helpers'; -type OriginalColumn = { id: string } & GenericIndexPatternColumn; +export type OriginalColumn = { id: string } & GenericIndexPatternColumn; declare global { interface Window { @@ -38,6 +38,15 @@ declare global { } } +// esAggs column ID manipulation functions +const extractEsAggId = (id: string) => id.split('.')[0].split('-')[2]; +const updatePositionIndex = (currentId: string, newIndex: number) => { + const [fullId, percentile] = currentId.split('.'); + const idParts = fullId.split('-'); + idParts[1] = String(newIndex); + return idParts.join('-') + (percentile ? `.${percentile}` : ''); +}; + function getExpressionForLayer( layer: IndexPatternLayer, indexPattern: IndexPattern, @@ -95,7 +104,7 @@ function getExpressionForLayer( ); if (referenceEntries.length || esAggEntries.length) { - const aggs: ExpressionAstExpressionBuilder[] = []; + let aggs: ExpressionAstExpressionBuilder[] = []; const expressions: ExpressionAstFunction[] = []; sortedReferences(referenceEntries).forEach((colId) => { @@ -107,13 +116,17 @@ function getExpressionForLayer( }); const orderedColumnIds = esAggEntries.map(([colId]) => colId); + let esAggsIdMap: Record = {}; + const aggExpressionToEsAggsIdMap: Map = new Map(); esAggEntries.forEach(([colId, col], index) => { const def = operationDefinitionMap[col.operationType]; if (def.input !== 'fullReference' && def.input !== 'managedReference') { + const aggId = String(index); + const wrapInFilter = Boolean(def.filterable && col.filter); let aggAst = def.toEsAggsFn( col, - wrapInFilter ? `${index}-metric` : String(index), + wrapInFilter ? `${aggId}-metric` : aggId, indexPattern, layer, uiSettings, @@ -139,12 +152,25 @@ function getExpressionForLayer( } ).toAst(); } - aggs.push( - buildExpression({ - type: 'expression', - chain: [aggAst], - }) - ); + + const expressionBuilder = buildExpression({ + type: 'expression', + chain: [aggAst], + }); + aggs.push(expressionBuilder); + + const esAggsId = window.ELASTIC_LENS_DELAY_SECONDS + ? `col-${index + (col.isBucketed ? 0 : 1)}-${aggId}` + : `col-${index}-${aggId}`; + + esAggsIdMap[esAggsId] = [ + { + ...col, + id: colId, + }, + ]; + + aggExpressionToEsAggsIdMap.set(expressionBuilder, esAggsId); } }); @@ -164,19 +190,63 @@ function getExpressionForLayer( ); } - const idMap = esAggEntries.reduce((currentIdMap, [colId, column], index) => { - const esAggsId = window.ELASTIC_LENS_DELAY_SECONDS - ? `col-${index + (column.isBucketed ? 0 : 1)}-${index}` - : `col-${index}-${index}`; + uniq(esAggEntries.map(([_, column]) => column.operationType)).forEach((type) => { + const optimizeAggs = operationDefinitionMap[type].optimizeEsAggs?.bind( + operationDefinitionMap[type] + ); + if (optimizeAggs) { + const { aggs: newAggs, esAggsIdMap: newIdMap } = optimizeAggs( + aggs, + esAggsIdMap, + aggExpressionToEsAggsIdMap + ); + + aggs = newAggs; + esAggsIdMap = newIdMap; + } + }); + + /* + Update ID mappings with new agg array positions. + + Given this esAggs-ID-to-original-column map after percentile (for example) optimization: + col-0-0: column1 + col-?-1.34: column2 (34th percentile) + col-2-2: column3 + col-?-1.98: column4 (98th percentile) + + and this array of aggs + 0: { id: 0 } + 1: { id: 2 } + 2: { id: 1 } + + We need to update the anticipated agg indicies to match the aggs array: + col-0-0: column1 + col-2-1.34: column2 (34th percentile) + col-1-2: column3 + col-3-3.98: column4 (98th percentile) + */ + + const updatedEsAggsIdMap: Record = {}; + let counter = 0; + + const esAggsIds = Object.keys(esAggsIdMap); + aggs.forEach((builder) => { + const esAggId = builder.functions[0].getArgument('id')?.[0]; + const matchingEsAggColumnIds = esAggsIds.filter((id) => extractEsAggId(id) === esAggId); + + matchingEsAggColumnIds.forEach((currentId) => { + const currentColumn = esAggsIdMap[currentId][0]; + const aggIndex = window.ELASTIC_LENS_DELAY_SECONDS + ? counter + (currentColumn.isBucketed ? 0 : 1) + : counter; + const newId = updatePositionIndex(currentId, aggIndex); + updatedEsAggsIdMap[newId] = esAggsIdMap[currentId]; + + counter++; + }); + }); - return { - ...currentIdMap, - [esAggsId]: { - ...column, - id: colId, - }, - }; - }, {} as Record); const columnsWithFormatters = columnEntries.filter( ([, col]) => (isColumnOfType('range', col) && col.params?.parentFormat) || @@ -292,9 +362,9 @@ function getExpressionForLayer( }).toAst(), { type: 'function', - function: 'lens_rename_columns', + function: 'lens_map_to_columns', arguments: { - idMap: [JSON.stringify(idMap)], + idMap: [JSON.stringify(updatedEsAggsIdMap)], }, }, ...expressions, diff --git a/x-pack/plugins/lens/server/expressions/expressions.ts b/x-pack/plugins/lens/server/expressions/expressions.ts index bd516c756df15..1e80fc5bb49a3 100644 --- a/x-pack/plugins/lens/server/expressions/expressions.ts +++ b/x-pack/plugins/lens/server/expressions/expressions.ts @@ -10,7 +10,7 @@ import type { ExpressionsServerSetup } from '@kbn/expressions-plugin/server'; import { counterRate, formatColumn, - renameColumns, + mapToColumns, getTimeScale, getDatatable, } from '../../common/expressions'; @@ -25,7 +25,7 @@ export const setupExpressions = ( [ counterRate, formatColumn, - renameColumns, + mapToColumns, getDatatable(getFormatFactory(core)), getTimeScale(getDatatableUtilitiesFactory(core), getTimeZoneFactory(core)), ].forEach((expressionFn) => expressions.registerFunction(expressionFn)); diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 3c492c1443bf7..ca46806ff7214 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -365,8 +365,6 @@ "xpack.lens.functions.counterRate.args.outputColumnNameHelpText": "Nom de la colonne dans laquelle le taux de compteur résultant sera stocké", "xpack.lens.functions.counterRate.help": "Calcule le taux de compteur d'une colonne dans un tableau de données", "xpack.lens.functions.lastValue.missingSortField": "Cette vue de données ne contient aucun champ de date.", - "xpack.lens.functions.renameColumns.help": "Aide pour renommer les colonnes d'un tableau de données", - "xpack.lens.functions.renameColumns.idMap.help": "Un objet encodé JSON dans lequel les clés sont les anciens ID de colonne et les valeurs sont les nouveaux ID correspondants. Tous les autres ID de colonne sont conservés.", "xpack.lens.functions.timeScale.dateColumnMissingMessage": "L'ID de colonne de date {columnId} n'existe pas.", "xpack.lens.functions.timeScale.timeInfoMissingMessage": "Impossible de récupérer les informations d'histogramme des dates", "xpack.lens.gauge.addLayer": "Visualisation", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index fa1ce7b24c45c..83bf2bf0eee3d 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -367,8 +367,6 @@ "xpack.lens.functions.counterRate.args.outputColumnNameHelpText": "結果のカウンターレートを格納する列の名前", "xpack.lens.functions.counterRate.help": "データテーブルの列のカウンターレートを計算します", "xpack.lens.functions.lastValue.missingSortField": "このデータビューには日付フィールドが含まれていません", - "xpack.lens.functions.renameColumns.help": "データベースの列の名前の変更をアシストします", - "xpack.lens.functions.renameColumns.idMap.help": "キーが古い列 ID で値が対応する新しい列 ID となるように JSON エンコーディングされたオブジェクトです。他の列 ID はすべてのそのままです。", "xpack.lens.functions.timeScale.dateColumnMissingMessage": "指定した dateColumnId {columnId} は存在しません。", "xpack.lens.functions.timeScale.timeInfoMissingMessage": "日付ヒストグラム情報を取得できませんでした", "xpack.lens.gauge.addLayer": "ビジュアライゼーション", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 9bcc45a9ca1ab..f37c2745c000f 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -372,8 +372,6 @@ "xpack.lens.functions.counterRate.args.outputColumnNameHelpText": "要存储结果计数率的列名称", "xpack.lens.functions.counterRate.help": "在数据表中计算列的计数率", "xpack.lens.functions.lastValue.missingSortField": "此数据视图不包含任何日期字段", - "xpack.lens.functions.renameColumns.help": "用于重命名数据表列的助手", - "xpack.lens.functions.renameColumns.idMap.help": "旧列 ID 为键且相应新列 ID 为值的 JSON 编码对象。所有其他列 ID 都将保留。", "xpack.lens.functions.timeScale.dateColumnMissingMessage": "指定的 dateColumnId {columnId} 不存在。", "xpack.lens.functions.timeScale.timeInfoMissingMessage": "无法获取日期直方图信息", "xpack.lens.gauge.addLayer": "可视化", From 7439c2bba96964c311c83bd8125a8daf27750c75 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Tue, 21 Jun 2022 11:26:55 -0400 Subject: [PATCH 06/61] [Fleet] Schedule uprade should only be enabled for platinium licence (#134833) --- x-pack/plugins/fleet/common/constants/agent_policy.ts | 2 ++ .../agents/agent_list_page/components/bulk_actions.tsx | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/fleet/common/constants/agent_policy.ts b/x-pack/plugins/fleet/common/constants/agent_policy.ts index 316c66d2c75d6..3a24bbd4a18c0 100644 --- a/x-pack/plugins/fleet/common/constants/agent_policy.ts +++ b/x-pack/plugins/fleet/common/constants/agent_policy.ts @@ -26,3 +26,5 @@ export const AGENT_POLICY_DEFAULT_MONITORING_DATASETS = [ 'elastic_agent.heartbeat', 'elastic_agent.cloudbeat', ]; + +export const LICENSE_FOR_SCHEDULE_UPGRADE = 'platinum'; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/bulk_actions.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/bulk_actions.tsx index 8d35b3bcd19f1..6148b39b088af 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/bulk_actions.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/bulk_actions.tsx @@ -24,6 +24,8 @@ import { AgentUnenrollAgentModal, AgentUpgradeAgentModal, } from '../../components'; +import { useLicense } from '../../../../hooks'; +import { LICENSE_FOR_SCHEDULE_UPGRADE } from '../../../../../../../common'; import type { SelectionMode } from './types'; @@ -47,6 +49,9 @@ export const AgentBulkActions: React.FunctionComponent = ({ selectedAgents, refreshAgents, }) => { + const licenseService = useLicense(); + const isLicenceAllowingScheduleUpgrade = licenseService.hasAtLeast(LICENSE_FOR_SCHEDULE_UPGRADE); + // Bulk actions menu states const [isMenuOpen, setIsMenuOpen] = useState(false); const closeMenu = () => setIsMenuOpen(false); @@ -133,7 +138,7 @@ export const AgentBulkActions: React.FunctionComponent = ({ /> ), icon: , - disabled: !atLeastOneActiveAgentSelected, + disabled: !atLeastOneActiveAgentSelected || !isLicenceAllowingScheduleUpgrade, onClick: () => { closeMenu(); setUpgradeModalState({ isOpen: true, isScheduled: true }); From 10a5f9ac83ff7653ba0ab00d0f5722bdf6e7eab6 Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Tue, 21 Jun 2022 17:43:17 +0200 Subject: [PATCH 07/61] Remove old doc generation system for core APIs (#134313) * Remove old doc generation system for core APIs * delete docs/development/core folder --- .buildkite/scripts/steps/checks.sh | 1 - .../scripts/steps/checks/doc_api_changes.sh | 9 - .github/CODEOWNERS | 1 - docs/development/core/public/index.md | 12 - .../kibana-plugin-core-public.app.approute.md | 13 - ...ana-plugin-core-public.app.capabilities.md | 13 - .../kibana-plugin-core-public.app.category.md | 13 - ...ibana-plugin-core-public.app.chromeless.md | 13 - ...kibana-plugin-core-public.app.deeplinks.md | 48 --- ...bana-plugin-core-public.app.defaultpath.md | 13 - ...ibana-plugin-core-public.app.exactroute.md | 29 -- .../kibana-plugin-core-public.app.id.md | 15 - .../kibana-plugin-core-public.app.keywords.md | 13 - .../public/kibana-plugin-core-public.app.md | 34 -- .../kibana-plugin-core-public.app.mount.md | 13 - ...na-plugin-core-public.app.navlinkstatus.md | 13 - ...ibana-plugin-core-public.app.searchable.md | 13 - .../kibana-plugin-core-public.app.status.md | 13 - .../kibana-plugin-core-public.app.title.md | 13 - .../kibana-plugin-core-public.app.updater_.md | 43 --- ...na-plugin-core-public.app_wrapper_class.md | 13 - ...lugin-core-public.appcategory.arialabel.md | 13 - ...gin-core-public.appcategory.euiicontype.md | 13 - ...ibana-plugin-core-public.appcategory.id.md | 13 - ...na-plugin-core-public.appcategory.label.md | 13 - .../kibana-plugin-core-public.appcategory.md | 24 -- ...na-plugin-core-public.appcategory.order.md | 13 - .../kibana-plugin-core-public.appdeeplink.md | 27 -- ...ibana-plugin-core-public.appleaveaction.md | 15 - ...a-plugin-core-public.appleaveactiontype.md | 21 -- ...ublic.appleaveconfirmaction.buttoncolor.md | 11 - ...e-public.appleaveconfirmaction.callback.md | 11 - ...appleaveconfirmaction.confirmbuttontext.md | 11 - ...lugin-core-public.appleaveconfirmaction.md | 27 -- ...-core-public.appleaveconfirmaction.text.md | 11 - ...core-public.appleaveconfirmaction.title.md | 11 - ...-core-public.appleaveconfirmaction.type.md | 11 - ...lugin-core-public.appleavedefaultaction.md | 22 -- ...-core-public.appleavedefaultaction.type.md | 11 - ...bana-plugin-core-public.appleavehandler.md | 20 -- ...ana-plugin-core-public.applicationsetup.md | 20 -- ...n-core-public.applicationsetup.register.md | 24 -- ...lic.applicationsetup.registerappupdater.md | 46 --- ...e-public.applicationstart.applications_.md | 18 - ...re-public.applicationstart.capabilities.md | 13 - ...e-public.applicationstart.currentappid_.md | 13 - ...re-public.applicationstart.geturlforapp.md | 33 -- ...ana-plugin-core-public.applicationstart.md | 29 -- ...e-public.applicationstart.navigatetoapp.md | 25 -- ...e-public.applicationstart.navigatetourl.md | 50 --- .../kibana-plugin-core-public.appmount.md | 13 - ...e-public.appmountparameters.appbasepath.md | 61 ---- ...-core-public.appmountparameters.element.md | 13 - ...-core-public.appmountparameters.history.md | 55 --- ...a-plugin-core-public.appmountparameters.md | 24 -- ...re-public.appmountparameters.onappleave.md | 45 --- ....appmountparameters.setheaderactionmenu.md | 38 -- ...n-core-public.appmountparameters.theme_.md | 33 -- ...ana-plugin-core-public.appnavlinkstatus.md | 23 -- ...n-core-public.appnavoptions.euiicontype.md | 13 - ...a-plugin-core-public.appnavoptions.icon.md | 13 - ...kibana-plugin-core-public.appnavoptions.md | 23 -- ...-plugin-core-public.appnavoptions.order.md | 13 - ...lugin-core-public.appnavoptions.tooltip.md | 13 - .../kibana-plugin-core-public.appstatus.md | 21 -- .../kibana-plugin-core-public.appunmount.md | 13 - ...a-plugin-core-public.appupdatablefields.md | 13 - .../kibana-plugin-core-public.appupdater.md | 13 - ...ugin-core-public.capabilities.catalogue.md | 13 - ...gin-core-public.capabilities.management.md | 15 - .../kibana-plugin-core-public.capabilities.md | 22 -- ...lugin-core-public.capabilities.navlinks.md | 13 - ...plugin-core-public.chromebadge.icontype.md | 11 - .../kibana-plugin-core-public.chromebadge.md | 21 -- ...ana-plugin-core-public.chromebadge.text.md | 11 - ...-plugin-core-public.chromebadge.tooltip.md | 11 - ...ana-plugin-core-public.chromebreadcrumb.md | 12 - ...lugin-core-public.chromedoctitle.change.md | 33 -- ...ibana-plugin-core-public.chromedoctitle.md | 37 -- ...plugin-core-public.chromedoctitle.reset.md | 17 - ...core-public.chromehelpextension.appname.md | 13 - ...core-public.chromehelpextension.content.md | 13 - ...n-core-public.chromehelpextension.links.md | 13 - ...-plugin-core-public.chromehelpextension.md | 21 -- ...core-public.chromehelpextensionlinkbase.md | 12 - ...romehelpextensionmenucustomlink.content.md | 13 - ....chromehelpextensionmenucustomlink.href.md | 13 - ...omehelpextensionmenucustomlink.linktype.md | 13 - ...ublic.chromehelpextensionmenucustomlink.md | 22 -- ...chromehelpextensionmenudiscusslink.href.md | 13 - ...mehelpextensionmenudiscusslink.linktype.md | 13 - ...blic.chromehelpextensionmenudiscusslink.md | 21 -- ...helpextensionmenudocumentationlink.href.md | 13 - ...extensionmenudocumentationlink.linktype.md | 13 - ...hromehelpextensionmenudocumentationlink.md | 21 -- ...hromehelpextensionmenugithublink.labels.md | 13 - ...omehelpextensionmenugithublink.linktype.md | 13 - ...ublic.chromehelpextensionmenugithublink.md | 22 -- ...chromehelpextensionmenugithublink.title.md | 13 - ...core-public.chromehelpextensionmenulink.md | 12 - ...blic.chromehelpmenuactions.hidehelpmenu.md | 11 - ...lugin-core-public.chromehelpmenuactions.md | 19 - ...ana-plugin-core-public.chromenavcontrol.md | 20 -- ...ugin-core-public.chromenavcontrol.mount.md | 11 - ...ugin-core-public.chromenavcontrol.order.md | 11 - ...na-plugin-core-public.chromenavcontrols.md | 35 -- ...public.chromenavcontrols.registercenter.md | 24 -- ...e-public.chromenavcontrols.registerleft.md | 24 -- ...-public.chromenavcontrols.registerright.md | 24 -- ...lugin-core-public.chromenavlink.baseurl.md | 13 - ...ugin-core-public.chromenavlink.category.md | 13 - ...ugin-core-public.chromenavlink.disabled.md | 13 - ...n-core-public.chromenavlink.euiicontype.md | 13 - ...plugin-core-public.chromenavlink.hidden.md | 13 - ...a-plugin-core-public.chromenavlink.href.md | 13 - ...a-plugin-core-public.chromenavlink.icon.md | 13 - ...ana-plugin-core-public.chromenavlink.id.md | 13 - ...kibana-plugin-core-public.chromenavlink.md | 30 -- ...-plugin-core-public.chromenavlink.order.md | 13 - ...-plugin-core-public.chromenavlink.title.md | 13 - ...lugin-core-public.chromenavlink.tooltip.md | 13 - ...na-plugin-core-public.chromenavlink.url.md | 13 - ...links.enableforcedappswitchernavigation.md | 23 -- ...a-plugin-core-public.chromenavlinks.get.md | 24 -- ...lugin-core-public.chromenavlinks.getall.md | 17 - ...navlinks.getforceappswitchernavigation_.md | 17 - ...core-public.chromenavlinks.getnavlinks_.md | 17 - ...a-plugin-core-public.chromenavlinks.has.md | 24 -- ...ibana-plugin-core-public.chromenavlinks.md | 25 -- ...-core-public.chromerecentlyaccessed.add.md | 33 -- ...-core-public.chromerecentlyaccessed.get.md | 24 -- ...core-public.chromerecentlyaccessed.get_.md | 24 -- ...ugin-core-public.chromerecentlyaccessed.md | 22 -- ...ic.chromerecentlyaccessedhistoryitem.id.md | 11 - ...chromerecentlyaccessedhistoryitem.label.md | 11 - ....chromerecentlyaccessedhistoryitem.link.md | 11 - ...ublic.chromerecentlyaccessedhistoryitem.md | 21 -- ...plugin-core-public.chromestart.doctitle.md | 13 - ...lugin-core-public.chromestart.getbadge_.md | 17 - ...core-public.chromestart.getbreadcrumbs_.md | 17 - ...omestart.getbreadcrumbsappendextension_.md | 17 - ...re-public.chromestart.getcustomnavlink_.md | 17 - ...re-public.chromestart.gethelpextension_.md | 17 - ...ublic.chromestart.getisnavdrawerlocked_.md | 17 - ...n-core-public.chromestart.getisvisible_.md | 17 - ...ore-public.chromestart.hasheaderbanner_.md | 17 - .../kibana-plugin-core-public.chromestart.md | 67 ---- ...gin-core-public.chromestart.navcontrols.md | 13 - ...plugin-core-public.chromestart.navlinks.md | 13 - ...ore-public.chromestart.recentlyaccessed.md | 13 - ...plugin-core-public.chromestart.setbadge.md | 24 -- ...-core-public.chromestart.setbreadcrumbs.md | 24 -- ...romestart.setbreadcrumbsappendextension.md | 24 -- ...ore-public.chromestart.setcustomnavlink.md | 24 -- ...core-public.chromestart.setheaderbanner.md | 28 -- ...ore-public.chromestart.sethelpextension.md | 24 -- ...re-public.chromestart.sethelpsupporturl.md | 24 -- ...in-core-public.chromestart.setisvisible.md | 24 -- ...in-core-public.chromeuserbanner.content.md | 11 - ...ana-plugin-core-public.chromeuserbanner.md | 19 - ...-plugin-core-public.coresetup.analytics.md | 12 - ...lugin-core-public.coresetup.application.md | 13 - ...-core-public.coresetup.executioncontext.md | 13 - ...lugin-core-public.coresetup.fatalerrors.md | 13 - ...-core-public.coresetup.getstartservices.md | 13 - ...ibana-plugin-core-public.coresetup.http.md | 13 - ...-core-public.coresetup.injectedmetadata.md | 12 - .../kibana-plugin-core-public.coresetup.md | 29 -- ...gin-core-public.coresetup.notifications.md | 13 - ...bana-plugin-core-public.coresetup.theme.md | 12 - ...plugin-core-public.coresetup.uisettings.md | 13 - ...-plugin-core-public.corestart.analytics.md | 12 - ...lugin-core-public.corestart.application.md | 13 - ...ana-plugin-core-public.corestart.chrome.md | 13 - ...ugin-core-public.corestart.deprecations.md | 13 - ...a-plugin-core-public.corestart.doclinks.md | 12 - ...-core-public.corestart.executioncontext.md | 13 - ...lugin-core-public.corestart.fatalerrors.md | 13 - ...ibana-plugin-core-public.corestart.http.md | 13 - ...ibana-plugin-core-public.corestart.i18n.md | 13 - ...-core-public.corestart.injectedmetadata.md | 12 - .../kibana-plugin-core-public.corestart.md | 34 -- ...gin-core-public.corestart.notifications.md | 13 - ...a-plugin-core-public.corestart.overlays.md | 13 - ...ugin-core-public.corestart.savedobjects.md | 13 - ...bana-plugin-core-public.corestart.theme.md | 12 - ...plugin-core-public.corestart.uisettings.md | 13 - ...ecationsservicestart.getalldeprecations.md | 13 - ...eprecationsservicestart.getdeprecations.md | 13 - ...onsservicestart.isdeprecationresolvable.md | 13 - ...in-core-public.deprecationsservicestart.md | 23 -- ...ecationsservicestart.resolvedeprecation.md | 13 - ...na-plugin-core-public.errortoastoptions.md | 22 -- ...gin-core-public.errortoastoptions.title.md | 13 - ...e-public.errortoastoptions.toastmessage.md | 13 - ...core-public.executioncontextsetup.clear.md | 17 - ...e-public.executioncontextsetup.context_.md | 13 - ...n-core-public.executioncontextsetup.get.md | 17 - ...ublic.executioncontextsetup.getaslabels.md | 17 - ...lugin-core-public.executioncontextsetup.md | 30 -- ...n-core-public.executioncontextsetup.set.md | 24 -- ...executioncontextsetup.withglobalcontext.md | 24 -- ...lugin-core-public.executioncontextstart.md | 13 - ...ibana-plugin-core-public.fatalerrorinfo.md | 21 -- ...ugin-core-public.fatalerrorinfo.message.md | 11 - ...plugin-core-public.fatalerrorinfo.stack.md | 11 - ...plugin-core-public.fatalerrorssetup.add.md | 13 - ...lugin-core-public.fatalerrorssetup.get_.md | 13 - ...ana-plugin-core-public.fatalerrorssetup.md | 21 -- ...ana-plugin-core-public.fatalerrorsstart.md | 13 - ...core-public.httpfetchoptions.asresponse.md | 13 - ...public.httpfetchoptions.assystemrequest.md | 13 - ...in-core-public.httpfetchoptions.context.md | 11 - ...in-core-public.httpfetchoptions.headers.md | 13 - ...ana-plugin-core-public.httpfetchoptions.md | 26 -- ...public.httpfetchoptions.prependbasepath.md | 13 - ...ugin-core-public.httpfetchoptions.query.md | 13 - ...in-core-public.httpfetchoptionswithpath.md | 21 -- ...re-public.httpfetchoptionswithpath.path.md | 11 - ...ibana-plugin-core-public.httpfetchquery.md | 12 - .../kibana-plugin-core-public.httphandler.md | 13 - ...bana-plugin-core-public.httpheadersinit.md | 13 - ...bana-plugin-core-public.httpinterceptor.md | 23 -- ...gin-core-public.httpinterceptor.request.md | 25 -- ...ore-public.httpinterceptor.requesterror.md | 25 -- ...in-core-public.httpinterceptor.response.md | 25 -- ...re-public.httpinterceptor.responseerror.md | 25 -- ...ublic.httpinterceptorrequesterror.error.md | 11 - ...ttpinterceptorrequesterror.fetchoptions.md | 11 - ...core-public.httpinterceptorrequesterror.md | 20 -- ...blic.httpinterceptorresponseerror.error.md | 11 - ...ore-public.httpinterceptorresponseerror.md | 21 -- ...ic.httpinterceptorresponseerror.request.md | 11 - ...plugin-core-public.httprequestinit.body.md | 13 - ...lugin-core-public.httprequestinit.cache.md | 13 - ...core-public.httprequestinit.credentials.md | 13 - ...gin-core-public.httprequestinit.headers.md | 13 - ...n-core-public.httprequestinit.integrity.md | 13 - ...n-core-public.httprequestinit.keepalive.md | 13 - ...bana-plugin-core-public.httprequestinit.md | 32 -- ...ugin-core-public.httprequestinit.method.md | 13 - ...plugin-core-public.httprequestinit.mode.md | 13 - ...in-core-public.httprequestinit.redirect.md | 13 - ...in-core-public.httprequestinit.referrer.md | 13 - ...e-public.httprequestinit.referrerpolicy.md | 13 - ...ugin-core-public.httprequestinit.signal.md | 13 - ...ugin-core-public.httprequestinit.window.md | 13 - ...na-plugin-core-public.httpresponse.body.md | 13 - ...n-core-public.httpresponse.fetchoptions.md | 13 - .../kibana-plugin-core-public.httpresponse.md | 22 -- ...plugin-core-public.httpresponse.request.md | 13 - ...lugin-core-public.httpresponse.response.md | 13 - ...-public.httpsetup.addloadingcountsource.md | 24 -- ...in-core-public.httpsetup.anonymouspaths.md | 13 - ...a-plugin-core-public.httpsetup.basepath.md | 13 - ...ana-plugin-core-public.httpsetup.delete.md | 13 - ...lugin-core-public.httpsetup.externalurl.md | 11 - ...bana-plugin-core-public.httpsetup.fetch.md | 13 - ...kibana-plugin-core-public.httpsetup.get.md | 13 - ...-core-public.httpsetup.getloadingcount_.md | 17 - ...ibana-plugin-core-public.httpsetup.head.md | 13 - ...-plugin-core-public.httpsetup.intercept.md | 26 -- .../kibana-plugin-core-public.httpsetup.md | 37 -- ...na-plugin-core-public.httpsetup.options.md | 13 - ...bana-plugin-core-public.httpsetup.patch.md | 13 - ...ibana-plugin-core-public.httpsetup.post.md | 13 - ...kibana-plugin-core-public.httpsetup.put.md | 13 - .../kibana-plugin-core-public.httpstart.md | 13 - ...na-plugin-core-public.i18nstart.context.md | 15 - .../kibana-plugin-core-public.i18nstart.md | 20 -- ...core-public.ianonymouspaths.isanonymous.md | 24 -- ...bana-plugin-core-public.ianonymouspaths.md | 21 -- ...in-core-public.ianonymouspaths.register.md | 24 -- ...kibana-plugin-core-public.ibasepath.get.md | 13 - .../kibana-plugin-core-public.ibasepath.md | 24 -- ...na-plugin-core-public.ibasepath.prepend.md | 13 - ...gin-core-public.ibasepath.publicbaseurl.md | 18 - ...ana-plugin-core-public.ibasepath.remove.md | 13 - ...in-core-public.ibasepath.serverbasepath.md | 15 - ...-core-public.iexternalurl.isinternalurl.md | 24 -- .../kibana-plugin-core-public.iexternalurl.md | 21 -- ...in-core-public.iexternalurl.validateurl.md | 26 -- ...in-core-public.iexternalurlpolicy.allow.md | 13 - ...gin-core-public.iexternalurlpolicy.host.md | 23 -- ...a-plugin-core-public.iexternalurlpolicy.md | 22 -- ...core-public.iexternalurlpolicy.protocol.md | 23 -- ...plugin-core-public.ihttpfetcherror.body.md | 11 - ...bana-plugin-core-public.ihttpfetcherror.md | 25 -- ...plugin-core-public.ihttpfetcherror.name.md | 11 - ...-plugin-core-public.ihttpfetcherror.req.md | 18 - ...gin-core-public.ihttpfetcherror.request.md | 11 - ...-plugin-core-public.ihttpfetcherror.res.md | 18 - ...in-core-public.ihttpfetcherror.response.md | 11 - ...re-public.ihttpinterceptcontroller.halt.md | 17 - ...-public.ihttpinterceptcontroller.halted.md | 13 - ...in-core-public.ihttpinterceptcontroller.md | 26 -- ....ihttpresponseinterceptoroverrides.body.md | 13 - ...ublic.ihttpresponseinterceptoroverrides.md | 21 -- ...tpresponseinterceptoroverrides.response.md | 13 - .../kibana-plugin-core-public.itoasts.md | 13 - ...lugin-core-public.iuisettingsclient.get.md | 13 - ...ugin-core-public.iuisettingsclient.get_.md | 13 - ...in-core-public.iuisettingsclient.getall.md | 13 - ...ore-public.iuisettingsclient.getupdate_.md | 17 - ...blic.iuisettingsclient.getupdateerrors_.md | 13 - ...-core-public.iuisettingsclient.iscustom.md | 13 - ...ore-public.iuisettingsclient.isdeclared.md | 13 - ...core-public.iuisettingsclient.isdefault.md | 13 - ...e-public.iuisettingsclient.isoverridden.md | 13 - ...na-plugin-core-public.iuisettingsclient.md | 30 -- ...in-core-public.iuisettingsclient.remove.md | 13 - ...lugin-core-public.iuisettingsclient.set.md | 13 - ...ugin-core-public.kibanaexecutioncontext.md | 21 -- .../core/public/kibana-plugin-core-public.md | 185 ---------- .../kibana-plugin-core-public.mountpoint.md | 13 - ...-public.navigatetoappoptions.deeplinkid.md | 13 - ...plugin-core-public.navigatetoappoptions.md | 25 -- ...ublic.navigatetoappoptions.openinnewtab.md | 13 - ...n-core-public.navigatetoappoptions.path.md | 13 - ...ore-public.navigatetoappoptions.replace.md | 13 - ...ublic.navigatetoappoptions.skipappleave.md | 13 - ...-core-public.navigatetoappoptions.state.md | 13 - ...blic.navigatetourloptions.forceredirect.md | 13 - ...plugin-core-public.navigatetourloptions.md | 21 -- ...ublic.navigatetourloptions.skipappleave.md | 13 - .../kibana-plugin-core-public.navtype.md | 11 - ...a-plugin-core-public.notificationssetup.md | 19 - ...n-core-public.notificationssetup.toasts.md | 13 - ...a-plugin-core-public.notificationsstart.md | 19 - ...n-core-public.notificationsstart.toasts.md | 13 - ...gin-core-public.overlaybannersstart.add.md | 27 -- ...public.overlaybannersstart.getcomponent.md | 15 - ...-plugin-core-public.overlaybannersstart.md | 22 -- ...-core-public.overlaybannersstart.remove.md | 26 -- ...core-public.overlaybannersstart.replace.md | 28 -- ...c.overlayflyoutopenoptions._aria-label_.md | 11 - ...erlayflyoutopenoptions._data-test-subj_.md | 11 - ...blic.overlayflyoutopenoptions.classname.md | 11 - ...yflyoutopenoptions.closebuttonarialabel.md | 11 - ...verlayflyoutopenoptions.hideclosebutton.md | 11 - ...blic.overlayflyoutopenoptions.maskprops.md | 11 - ...ublic.overlayflyoutopenoptions.maxwidth.md | 11 - ...in-core-public.overlayflyoutopenoptions.md | 29 -- ...public.overlayflyoutopenoptions.onclose.md | 13 - ...layflyoutopenoptions.outsideclickcloses.md | 11 - ...ublic.overlayflyoutopenoptions.ownfocus.md | 11 - ...re-public.overlayflyoutopenoptions.size.md | 11 - ...a-plugin-core-public.overlayflyoutstart.md | 20 -- ...gin-core-public.overlayflyoutstart.open.md | 25 -- ...laymodalconfirmoptions._data-test-subj_.md | 11 - ....overlaymodalconfirmoptions.buttoncolor.md | 11 - ...laymodalconfirmoptions.cancelbuttontext.md | 11 - ...ic.overlaymodalconfirmoptions.classname.md | 11 - ...odalconfirmoptions.closebuttonarialabel.md | 11 - ...aymodalconfirmoptions.confirmbuttontext.md | 11 - ...odalconfirmoptions.defaultfocusedbutton.md | 11 - ...lic.overlaymodalconfirmoptions.maxwidth.md | 13 - ...-core-public.overlaymodalconfirmoptions.md | 27 -- ...public.overlaymodalconfirmoptions.title.md | 11 - ...verlaymodalopenoptions._data-test-subj_.md | 11 - ...ublic.overlaymodalopenoptions.classname.md | 11 - ...aymodalopenoptions.closebuttonarialabel.md | 11 - ...public.overlaymodalopenoptions.maxwidth.md | 11 - ...gin-core-public.overlaymodalopenoptions.md | 22 -- ...na-plugin-core-public.overlaymodalstart.md | 21 -- ...ugin-core-public.overlaymodalstart.open.md | 25 -- ...re-public.overlaymodalstart.openconfirm.md | 25 -- ...ana-plugin-core-public.overlayref.close.md | 17 - .../kibana-plugin-core-public.overlayref.md | 26 -- ...a-plugin-core-public.overlayref.onclose.md | 15 - ...plugin-core-public.overlaystart.banners.md | 13 - .../kibana-plugin-core-public.overlaystart.md | 22 -- ...in-core-public.overlaystart.openconfirm.md | 12 - ...gin-core-public.overlaystart.openflyout.md | 12 - ...ugin-core-public.overlaystart.openmodal.md | 12 - .../kibana-plugin-core-public.plugin_2.md | 22 -- ...ibana-plugin-core-public.plugin_2.setup.md | 23 -- ...ibana-plugin-core-public.plugin_2.start.md | 23 -- ...kibana-plugin-core-public.plugin_2.stop.md | 15 - ...na-plugin-core-public.plugininitializer.md | 13 - ...-public.plugininitializercontext.config.md | 13 - ...ore-public.plugininitializercontext.env.md | 14 - ...in-core-public.plugininitializercontext.md | 22 -- ...ublic.plugininitializercontext.opaqueid.md | 13 - ...lugin-core-public.publicappdeeplinkinfo.md | 18 - ...kibana-plugin-core-public.publicappinfo.md | 20 -- ...ugin-core-public.publicuisettingsparams.md | 13 - ...-core-public.resolvedeprecationresponse.md | 16 - ...resolvedsimplesavedobject.alias_purpose.md | 17 - ...solvedsimplesavedobject.alias_target_id.md | 15 - ...n-core-public.resolvedsimplesavedobject.md | 23 -- ...ublic.resolvedsimplesavedobject.outcome.md | 15 - ....resolvedsimplesavedobject.saved_object.md | 13 - ...ore-public.responseerrorbody.attributes.md | 11 - ...na-plugin-core-public.responseerrorbody.md | 21 -- ...n-core-public.responseerrorbody.message.md | 11 - ...ore-public.responseerrorbody.statuscode.md | 11 - ...ugin-core-public.savedobject.attributes.md | 13 - ...public.savedobject.coremigrationversion.md | 13 - ...na-plugin-core-public.savedobject.error.md | 11 - ...ibana-plugin-core-public.savedobject.id.md | 13 - .../kibana-plugin-core-public.savedobject.md | 28 -- ...ore-public.savedobject.migrationversion.md | 13 - ...ugin-core-public.savedobject.namespaces.md | 13 - ...plugin-core-public.savedobject.originid.md | 13 - ...ugin-core-public.savedobject.references.md | 13 - ...ana-plugin-core-public.savedobject.type.md | 13 - ...ugin-core-public.savedobject.updated_at.md | 13 - ...-plugin-core-public.savedobject.version.md | 13 - ...plugin-core-public.savedobjectattribute.md | 13 - ...lugin-core-public.savedobjectattributes.md | 13 - ...-core-public.savedobjectattributesingle.md | 13 - ...ugin-core-public.savedobjecterror.error.md | 11 - ...ana-plugin-core-public.savedobjecterror.md | 21 -- ...in-core-public.savedobjecterror.message.md | 11 - ...n-core-public.savedobjecterror.metadata.md | 11 - ...core-public.savedobjecterror.statuscode.md | 11 - ...gin-core-public.savedobjectreference.id.md | 11 - ...plugin-core-public.savedobjectreference.md | 22 -- ...n-core-public.savedobjectreference.name.md | 11 - ...n-core-public.savedobjectreference.type.md | 11 - ...blic.savedobjectreferencewithcontext.id.md | 13 - ...treferencewithcontext.inboundreferences.md | 17 - ...vedobjectreferencewithcontext.ismissing.md | 13 - ...-public.savedobjectreferencewithcontext.md | 27 -- ...avedobjectreferencewithcontext.originid.md | 13 - ....savedobjectreferencewithcontext.spaces.md | 13 - ...cewithcontext.spaceswithmatchingaliases.md | 13 - ...cewithcontext.spaceswithmatchingorigins.md | 13 - ...ic.savedobjectreferencewithcontext.type.md | 13 - ...gin-core-public.savedobjectsbaseoptions.md | 19 - ...ublic.savedobjectsbaseoptions.namespace.md | 13 - ...n-core-public.savedobjectsbatchresponse.md | 19 - ....savedobjectsbatchresponse.savedobjects.md | 11 - ...savedobjectsbulkcreateobject.attributes.md | 11 - ...ore-public.savedobjectsbulkcreateobject.md | 20 -- ...ublic.savedobjectsbulkcreateobject.type.md | 11 - ...re-public.savedobjectsbulkcreateoptions.md | 19 - ...savedobjectsbulkcreateoptions.overwrite.md | 13 - ...public.savedobjectsbulkresolveobject.id.md | 11 - ...re-public.savedobjectsbulkresolveobject.md | 20 -- ...blic.savedobjectsbulkresolveobject.type.md | 11 - ...-public.savedobjectsbulkresolveresponse.md | 19 - ...ctsbulkresolveresponse.resolved_objects.md | 11 - ...savedobjectsbulkupdateobject.attributes.md | 11 - ...-public.savedobjectsbulkupdateobject.id.md | 11 - ...ore-public.savedobjectsbulkupdateobject.md | 23 -- ...savedobjectsbulkupdateobject.references.md | 11 - ...ublic.savedobjectsbulkupdateobject.type.md | 11 - ...ic.savedobjectsbulkupdateobject.version.md | 11 - ...re-public.savedobjectsbulkupdateoptions.md | 19 - ...savedobjectsbulkupdateoptions.namespace.md | 11 - ...c.savedobjectsclientcontract.bulkcreate.md | 27 -- ...blic.savedobjectsclientcontract.bulkget.md | 33 -- ....savedobjectsclientcontract.bulkresolve.md | 35 -- ...c.savedobjectsclientcontract.bulkupdate.md | 26 -- ...ublic.savedobjectsclientcontract.create.md | 26 -- ...ublic.savedobjectsclientcontract.delete.md | 26 -- ...-public.savedobjectsclientcontract.find.md | 26 -- ...e-public.savedobjectsclientcontract.get.md | 27 -- ...-core-public.savedobjectsclientcontract.md | 29 -- ...blic.savedobjectsclientcontract.resolve.md | 29 -- ...ublic.savedobjectsclientcontract.update.md | 28 -- ...collectmultinamespacereferencesresponse.md | 20 -- ...ultinamespacereferencesresponse.objects.md | 11 - ...jectscreateoptions.coremigrationversion.md | 13 - ...ore-public.savedobjectscreateoptions.id.md | 13 - ...n-core-public.savedobjectscreateoptions.md | 23 -- ...edobjectscreateoptions.migrationversion.md | 13 - ...lic.savedobjectscreateoptions.overwrite.md | 13 - ...ic.savedobjectscreateoptions.references.md | 11 - ...bjectsfindoptions.defaultsearchoperator.md | 13 - ...e-public.savedobjectsfindoptions.fields.md | 18 - ...e-public.savedobjectsfindoptions.filter.md | 11 - ...ic.savedobjectsfindoptions.hasreference.md | 13 - ...objectsfindoptions.hasreferenceoperator.md | 13 - ...gin-core-public.savedobjectsfindoptions.md | 36 -- ...blic.savedobjectsfindoptions.namespaces.md | 11 - ...ore-public.savedobjectsfindoptions.page.md | 11 - ...-public.savedobjectsfindoptions.perpage.md | 11 - ...core-public.savedobjectsfindoptions.pit.md | 13 - ...blic.savedobjectsfindoptions.preference.md | 13 - ...avedobjectsfindoptions.rootsearchfields.md | 13 - ...e-public.savedobjectsfindoptions.search.md | 13 - ...lic.savedobjectsfindoptions.searchafter.md | 13 - ...ic.savedobjectsfindoptions.searchfields.md | 13 - ...ublic.savedobjectsfindoptions.sortfield.md | 11 - ...ublic.savedobjectsfindoptions.sortorder.md | 11 - ...ore-public.savedobjectsfindoptions.type.md | 11 - ...dobjectsfindoptions.typetonamespacesmap.md | 13 - ...lic.savedobjectsfindoptionsreference.id.md | 11 - ...public.savedobjectsfindoptionsreference.md | 20 -- ...c.savedobjectsfindoptionsreference.type.md | 11 - ...dobjectsfindresponsepublic.aggregations.md | 11 - ...e-public.savedobjectsfindresponsepublic.md | 26 -- ...lic.savedobjectsfindresponsepublic.page.md | 11 - ....savedobjectsfindresponsepublic.perpage.md | 11 - ...ic.savedobjectsfindresponsepublic.total.md | 11 - ...simportactionrequiredwarning.actionpath.md | 13 - ...importactionrequiredwarning.buttonlabel.md | 13 - ...savedobjectsimportactionrequiredwarning.md | 25 -- ...ectsimportactionrequiredwarning.message.md | 13 - ...objectsimportactionrequiredwarning.type.md | 11 - ...portambiguousconflicterror.destinations.md | 15 - ...avedobjectsimportambiguousconflicterror.md | 21 -- ...bjectsimportambiguousconflicterror.type.md | 11 - ...bjectsimportconflicterror.destinationid.md | 11 - ...-public.savedobjectsimportconflicterror.md | 21 -- ...ic.savedobjectsimportconflicterror.type.md | 11 - ...-public.savedobjectsimportfailure.error.md | 11 - ...ore-public.savedobjectsimportfailure.id.md | 11 - ...n-core-public.savedobjectsimportfailure.md | 24 -- ...e-public.savedobjectsimportfailure.meta.md | 14 - ...lic.savedobjectsimportfailure.overwrite.md | 13 - ...e-public.savedobjectsimportfailure.type.md | 11 - ...avedobjectsimportmissingreferenceserror.md | 21 -- ...importmissingreferenceserror.references.md | 14 - ...bjectsimportmissingreferenceserror.type.md | 11 - ...ublic.savedobjectsimportresponse.errors.md | 11 - ...-core-public.savedobjectsimportresponse.md | 24 -- ...blic.savedobjectsimportresponse.success.md | 11 - ...savedobjectsimportresponse.successcount.md | 11 - ...vedobjectsimportresponse.successresults.md | 11 - ...lic.savedobjectsimportresponse.warnings.md | 11 - ...c.savedobjectsimportretry.createnewcopy.md | 13 - ...c.savedobjectsimportretry.destinationid.md | 13 - ...-core-public.savedobjectsimportretry.id.md | 11 - ...ectsimportretry.ignoremissingreferences.md | 13 - ...gin-core-public.savedobjectsimportretry.md | 26 -- ...ublic.savedobjectsimportretry.overwrite.md | 11 - ...vedobjectsimportretry.replacereferences.md | 15 - ...ore-public.savedobjectsimportretry.type.md | 11 - ...-public.savedobjectsimportsimplewarning.md | 21 -- ...savedobjectsimportsimplewarning.message.md | 13 - ...ic.savedobjectsimportsimplewarning.type.md | 11 - ...savedobjectsimportsuccess.createnewcopy.md | 16 - ...savedobjectsimportsuccess.destinationid.md | 13 - ...ore-public.savedobjectsimportsuccess.id.md | 11 - ...n-core-public.savedobjectsimportsuccess.md | 25 -- ...e-public.savedobjectsimportsuccess.meta.md | 14 - ...lic.savedobjectsimportsuccess.overwrite.md | 13 - ...e-public.savedobjectsimportsuccess.type.md | 11 - ...e-public.savedobjectsimportunknownerror.md | 22 -- ....savedobjectsimportunknownerror.message.md | 11 - ...vedobjectsimportunknownerror.statuscode.md | 11 - ...lic.savedobjectsimportunknownerror.type.md | 11 - ....savedobjectsimportunsupportedtypeerror.md | 20 -- ...dobjectsimportunsupportedtypeerror.type.md | 11 - ...n-core-public.savedobjectsimportwarning.md | 15 - ...ore-public.savedobjectsmigrationversion.md | 18 - ...n-core-public.savedobjectsnamespacetype.md | 13 - ...vedobjectsresolveresponse.alias_purpose.md | 17 - ...dobjectsresolveresponse.alias_target_id.md | 15 - ...core-public.savedobjectsresolveresponse.md | 22 -- ...lic.savedobjectsresolveresponse.outcome.md | 15 - ...avedobjectsresolveresponse.saved_object.md | 13 - ...in-core-public.savedobjectsstart.client.md | 13 - ...na-plugin-core-public.savedobjectsstart.md | 19 - ...n-core-public.savedobjectsupdateoptions.md | 21 -- ...ic.savedobjectsupdateoptions.references.md | 11 - ...public.savedobjectsupdateoptions.upsert.md | 11 - ...ublic.savedobjectsupdateoptions.version.md | 11 - ...core-public.scopedhistory._constructor_.md | 21 -- ...plugin-core-public.scopedhistory.action.md | 13 - ...-plugin-core-public.scopedhistory.block.md | 13 - ...in-core-public.scopedhistory.createhref.md | 15 - ...e-public.scopedhistory.createsubhistory.md | 13 - ...ana-plugin-core-public.scopedhistory.go.md | 13 - ...plugin-core-public.scopedhistory.goback.md | 13 - ...gin-core-public.scopedhistory.goforward.md | 13 - ...plugin-core-public.scopedhistory.length.md | 13 - ...plugin-core-public.scopedhistory.listen.md | 13 - ...ugin-core-public.scopedhistory.location.md | 13 - ...kibana-plugin-core-public.scopedhistory.md | 42 --- ...a-plugin-core-public.scopedhistory.push.md | 13 - ...lugin-core-public.scopedhistory.replace.md | 13 - ...-public.simplesavedobject._constructor_.md | 21 -- ...-core-public.simplesavedobject._version.md | 11 - ...ore-public.simplesavedobject.attributes.md | 11 - ....simplesavedobject.coremigrationversion.md | 11 - ...in-core-public.simplesavedobject.delete.md | 15 - ...gin-core-public.simplesavedobject.error.md | 11 - ...lugin-core-public.simplesavedobject.get.md | 22 -- ...lugin-core-public.simplesavedobject.has.md | 22 -- ...plugin-core-public.simplesavedobject.id.md | 11 - ...na-plugin-core-public.simplesavedobject.md | 47 --- ...blic.simplesavedobject.migrationversion.md | 11 - ...ore-public.simplesavedobject.namespaces.md | 13 - ...ore-public.simplesavedobject.references.md | 11 - ...ugin-core-public.simplesavedobject.save.md | 15 - ...lugin-core-public.simplesavedobject.set.md | 23 -- ...ugin-core-public.simplesavedobject.type.md | 11 - ...core-public.simplesavedobject.updatedat.md | 11 - ...lugin-core-public.startservicesaccessor.md | 13 - .../public/kibana-plugin-core-public.toast.md | 13 - .../kibana-plugin-core-public.toastinput.md | 13 - ...ana-plugin-core-public.toastinputfields.md | 21 -- .../kibana-plugin-core-public.toastoptions.md | 20 -- ...ore-public.toastoptions.toastlifetimems.md | 13 - ...gin-core-public.toastsapi._constructor_.md | 22 -- ...kibana-plugin-core-public.toastsapi.add.md | 26 -- ...-plugin-core-public.toastsapi.adddanger.md | 27 -- ...a-plugin-core-public.toastsapi.adderror.md | 27 -- ...na-plugin-core-public.toastsapi.addinfo.md | 27 -- ...plugin-core-public.toastsapi.addsuccess.md | 27 -- ...plugin-core-public.toastsapi.addwarning.md | 27 -- ...ibana-plugin-core-public.toastsapi.get_.md | 17 - .../kibana-plugin-core-public.toastsapi.md | 34 -- ...ana-plugin-core-public.toastsapi.remove.md | 24 -- .../kibana-plugin-core-public.toastssetup.md | 13 - .../kibana-plugin-core-public.toastsstart.md | 13 - ...n-core-public.uisettingsparams.category.md | 13 - ...ore-public.uisettingsparams.deprecation.md | 13 - ...ore-public.uisettingsparams.description.md | 13 - ...ana-plugin-core-public.uisettingsparams.md | 33 -- ...gin-core-public.uisettingsparams.metric.md | 21 -- ...lugin-core-public.uisettingsparams.name.md | 13 - ...re-public.uisettingsparams.optionlabels.md | 13 - ...in-core-public.uisettingsparams.options.md | 13 - ...ugin-core-public.uisettingsparams.order.md | 15 - ...n-core-public.uisettingsparams.readonly.md | 13 - ...lic.uisettingsparams.requirespagereload.md | 13 - ...gin-core-public.uisettingsparams.schema.md | 11 - ...-core-public.uisettingsparams.sensitive.md | 13 - ...lugin-core-public.uisettingsparams.type.md | 13 - ...ugin-core-public.uisettingsparams.value.md | 13 - ...bana-plugin-core-public.uisettingsstate.md | 12 - ...ibana-plugin-core-public.uisettingstype.md | 13 - ...bana-plugin-core-public.unmountcallback.md | 13 - ...ibana-plugin-core-public.url_max_length.md | 13 - ...-public.userprovidedvalues.isoverridden.md | 11 - ...a-plugin-core-public.userprovidedvalues.md | 21 -- ...ore-public.userprovidedvalues.uservalue.md | 11 - docs/development/core/server/index.md | 12 - ...gin-core-server.analyticsservicepreboot.md | 13 - ...lugin-core-server.analyticsservicesetup.md | 13 - ...lugin-core-server.analyticsservicestart.md | 13 - ...na-plugin-core-server.app_wrapper_class.md | 13 - ...lugin-core-server.appcategory.arialabel.md | 13 - ...gin-core-server.appcategory.euiicontype.md | 13 - ...ibana-plugin-core-server.appcategory.id.md | 13 - ...na-plugin-core-server.appcategory.label.md | 13 - .../kibana-plugin-core-server.appcategory.md | 24 -- ...na-plugin-core-server.appcategory.order.md | 13 - .../kibana-plugin-core-server.asyncplugin.md | 27 -- ...na-plugin-core-server.asyncplugin.setup.md | 23 -- ...na-plugin-core-server.asyncplugin.start.md | 23 -- ...ana-plugin-core-server.asyncplugin.stop.md | 15 - ...kibana-plugin-core-server.authenticated.md | 20 -- ...a-plugin-core-server.authenticated.type.md | 11 - ...lugin-core-server.authenticationhandler.md | 13 - .../kibana-plugin-core-server.authheaders.md | 13 - ...ibana-plugin-core-server.authnothandled.md | 19 - ...-plugin-core-server.authnothandled.type.md | 11 - ...ibana-plugin-core-server.authredirected.md | 20 -- ...-plugin-core-server.authredirected.type.md | 11 - ...ore-server.authredirectedparams.headers.md | 15 - ...plugin-core-server.authredirectedparams.md | 20 -- .../kibana-plugin-core-server.authresult.md | 12 - ...ana-plugin-core-server.authresultparams.md | 22 -- ...-server.authresultparams.requestheaders.md | 13 - ...server.authresultparams.responseheaders.md | 13 - ...ugin-core-server.authresultparams.state.md | 13 - ...ibana-plugin-core-server.authresulttype.md | 21 -- .../kibana-plugin-core-server.authstatus.md | 22 -- ...n-core-server.authtoolkit.authenticated.md | 13 - .../kibana-plugin-core-server.authtoolkit.md | 22 -- ...ugin-core-server.authtoolkit.nothandled.md | 13 - ...ugin-core-server.authtoolkit.redirected.md | 15 - ...asedeprecationdetails.correctiveactions.md | 23 -- ....basedeprecationdetails.deprecationtype.md | 15 - ...basedeprecationdetails.documentationurl.md | 13 - ...ore-server.basedeprecationdetails.level.md | 13 - ...ugin-core-server.basedeprecationdetails.md | 26 -- ...e-server.basedeprecationdetails.message.md | 13 - ...r.basedeprecationdetails.requirerestart.md | 13 - ...ore-server.basedeprecationdetails.title.md | 13 - .../kibana-plugin-core-server.basepath.get.md | 13 - .../kibana-plugin-core-server.basepath.md | 29 -- ...ana-plugin-core-server.basepath.prepend.md | 13 - ...ugin-core-server.basepath.publicbaseurl.md | 18 - ...bana-plugin-core-server.basepath.remove.md | 13 - ...gin-core-server.basepath.serverbasepath.md | 15 - .../kibana-plugin-core-server.basepath.set.md | 13 - ...ugin-core-server.capabilities.catalogue.md | 13 - ...gin-core-server.capabilities.management.md | 15 - .../kibana-plugin-core-server.capabilities.md | 22 -- ...lugin-core-server.capabilities.navlinks.md | 13 - ...plugin-core-server.capabilitiesprovider.md | 13 - ...na-plugin-core-server.capabilitiessetup.md | 27 -- ...rver.capabilitiessetup.registerprovider.md | 45 --- ...rver.capabilitiessetup.registerswitcher.md | 58 --- ...na-plugin-core-server.capabilitiesstart.md | 20 -- ...r.capabilitiesstart.resolvecapabilities.md | 25 -- ...plugin-core-server.capabilitiesswitcher.md | 13 - ...ver.configdeprecationdetails.configpath.md | 11 - ...onfigdeprecationdetails.deprecationtype.md | 11 - ...in-core-server.configdeprecationdetails.md | 21 -- ...ver.contextsetup.createcontextcontainer.md | 17 - .../kibana-plugin-core-server.contextsetup.md | 136 ------- ...lugin-core-server.corepreboot.analytics.md | 13 - ...n-core-server.corepreboot.elasticsearch.md | 13 - ...ana-plugin-core-server.corepreboot.http.md | 13 - .../kibana-plugin-core-server.corepreboot.md | 23 -- ...-plugin-core-server.corepreboot.preboot.md | 13 - ....corerequesthandlercontext.deprecations.md | 13 - ...corerequesthandlercontext.elasticsearch.md | 13 - ...n-core-server.corerequesthandlercontext.md | 25 -- ....corerequesthandlercontext.savedobjects.md | 17 - ...er.corerequesthandlercontext.uisettings.md | 13 - ...-plugin-core-server.coresetup.analytics.md | 13 - ...ugin-core-server.coresetup.capabilities.md | 13 - ...na-plugin-core-server.coresetup.context.md | 13 - ...ugin-core-server.coresetup.deprecations.md | 13 - ...a-plugin-core-server.coresetup.doclinks.md | 12 - ...gin-core-server.coresetup.elasticsearch.md | 13 - ...-core-server.coresetup.executioncontext.md | 13 - ...-core-server.coresetup.getstartservices.md | 13 - ...ibana-plugin-core-server.coresetup.http.md | 15 - ...ibana-plugin-core-server.coresetup.i18n.md | 13 - ...na-plugin-core-server.coresetup.logging.md | 12 - .../kibana-plugin-core-server.coresetup.md | 34 -- ...na-plugin-core-server.coresetup.metrics.md | 13 - ...ugin-core-server.coresetup.savedobjects.md | 13 - ...ana-plugin-core-server.coresetup.status.md | 13 - ...plugin-core-server.coresetup.uisettings.md | 13 - ...-plugin-core-server.corestart.analytics.md | 13 - ...ugin-core-server.corestart.capabilities.md | 13 - ...a-plugin-core-server.corestart.doclinks.md | 12 - ...gin-core-server.corestart.elasticsearch.md | 13 - ...-core-server.corestart.executioncontext.md | 13 - ...ibana-plugin-core-server.corestart.http.md | 13 - .../kibana-plugin-core-server.corestart.md | 28 -- ...na-plugin-core-server.corestart.metrics.md | 13 - ...ugin-core-server.corestart.savedobjects.md | 13 - ...plugin-core-server.corestart.uisettings.md | 13 - ...in-core-server.corestatus.elasticsearch.md | 11 - .../kibana-plugin-core-server.corestatus.md | 21 -- ...gin-core-server.corestatus.savedobjects.md | 11 - ...lugin-core-server.countresponse._shards.md | 11 - ...-plugin-core-server.countresponse.count.md | 11 - ...kibana-plugin-core-server.countresponse.md | 20 -- ...na-plugin-core-server.cspconfig.default.md | 11 - ...-core-server.cspconfig.disableembedding.md | 11 - ...ana-plugin-core-server.cspconfig.header.md | 11 - .../kibana-plugin-core-server.cspconfig.md | 29 -- ...ana-plugin-core-server.cspconfig.strict.md | 11 - ...ore-server.cspconfig.warnlegacybrowsers.md | 11 - ...e-server.customhttpresponseoptions.body.md | 13 - ...omhttpresponseoptions.bypasserrorformat.md | 13 - ...erver.customhttpresponseoptions.headers.md | 13 - ...n-core-server.customhttpresponseoptions.md | 23 -- ...er.customhttpresponseoptions.statuscode.md | 11 - ...core-server.customrequesthandlercontext.md | 14 - ...-core-server.deletedocumentresponse._id.md | 11 - ...re-server.deletedocumentresponse._index.md | 11 - ...e-server.deletedocumentresponse._shards.md | 11 - ...ore-server.deletedocumentresponse._type.md | 11 - ...-server.deletedocumentresponse._version.md | 11 - ...ore-server.deletedocumentresponse.error.md | 13 - ...ore-server.deletedocumentresponse.found.md | 11 - ...ugin-core-server.deletedocumentresponse.md | 26 -- ...re-server.deletedocumentresponse.result.md | 11 - ...r.deprecationsclient.getalldeprecations.md | 11 - ...a-plugin-core-server.deprecationsclient.md | 20 -- ...-plugin-core-server.deprecationsdetails.md | 12 - ...-server.deprecationsettings.doclinkskey.md | 13 - ...-plugin-core-server.deprecationsettings.md | 21 -- ...core-server.deprecationsettings.message.md | 13 - ...in-core-server.deprecationsservicesetup.md | 85 ----- ...ationsservicesetup.registerdeprecations.md | 11 - ...ugin-core-server.destructiveroutemethod.md | 13 - ...-plugin-core-server.elasticsearchclient.md | 13 - ...n-core-server.elasticsearchclientconfig.md | 19 - ...erver.elasticsearchconfig._constructor_.md | 20 -- ...e-server.elasticsearchconfig.apiversion.md | 13 - ...-server.elasticsearchconfig.compression.md | 13 - ...erver.elasticsearchconfig.customheaders.md | 13 - ...er.elasticsearchconfig.healthcheckdelay.md | 13 - ...n-core-server.elasticsearchconfig.hosts.md | 13 - ...asticsearchconfig.ignoreversionmismatch.md | 13 - ...e-server.elasticsearchconfig.maxsockets.md | 13 - ...-plugin-core-server.elasticsearchconfig.md | 43 --- ...ore-server.elasticsearchconfig.password.md | 13 - ...-server.elasticsearchconfig.pingtimeout.md | 13 - ...ticsearchconfig.requestheaderswhitelist.md | 13 - ...rver.elasticsearchconfig.requesttimeout.md | 13 - ...elasticsearchconfig.serviceaccounttoken.md | 15 - ...server.elasticsearchconfig.shardtimeout.md | 13 - ...erver.elasticsearchconfig.sniffinterval.md | 13 - ...sticsearchconfig.sniffonconnectionfault.md | 13 - ...server.elasticsearchconfig.sniffonstart.md | 13 - ...gin-core-server.elasticsearchconfig.ssl.md | 15 - ...ore-server.elasticsearchconfig.username.md | 13 - ...earchconfigpreboot.credentialsspecified.md | 13 - ...server.elasticsearchconfigpreboot.hosts.md | 13 - ...-core-server.elasticsearchconfigpreboot.md | 21 -- ...-server.elasticsearcherrordetails.error.md | 14 - ...n-core-server.elasticsearcherrordetails.md | 19 - ...rver.elasticsearchservicepreboot.config.md | 21 -- ...lasticsearchservicepreboot.createclient.md | 22 -- ...core-server.elasticsearchservicepreboot.md | 20 -- ...server.elasticsearchservicesetup.legacy.md | 17 - ...n-core-server.elasticsearchservicesetup.md | 20 -- ...ervicesetup.setunauthorizederrorhandler.md | 35 -- ...server.elasticsearchservicestart.client.md | 21 -- ....elasticsearchservicestart.createclient.md | 22 -- ...n-core-server.elasticsearchservicestart.md | 20 -- ...asticsearchstatusmeta.incompatiblenodes.md | 11 - ...gin-core-server.elasticsearchstatusmeta.md | 21 -- ...csearchstatusmeta.nodesinforequesterror.md | 11 - ...er.elasticsearchstatusmeta.warningnodes.md | 11 - ...re-server.errorhttpresponseoptions.body.md | 13 - ...server.errorhttpresponseoptions.headers.md | 13 - ...in-core-server.errorhttpresponseoptions.md | 21 -- ...er.eventloopdelaysmonitor._constructor_.md | 13 - ...e-server.eventloopdelaysmonitor.collect.md | 21 -- ...ugin-core-server.eventloopdelaysmonitor.md | 26 -- ...ore-server.eventloopdelaysmonitor.reset.md | 17 - ...core-server.eventloopdelaysmonitor.stop.md | 17 - ...erver.executioncontextsetup.getaslabels.md | 15 - ...lugin-core-server.executioncontextsetup.md | 20 -- ...erver.executioncontextsetup.withcontext.md | 25 -- ...lugin-core-server.executioncontextstart.md | 12 - ...-core-server.exposedtobrowserdescriptor.md | 16 - ...-plugin-core-server.fakerequest.headers.md | 13 - .../kibana-plugin-core-server.fakerequest.md | 20 -- ...aturedeprecationdetails.deprecationtype.md | 11 - ...n-core-server.featuredeprecationdetails.md | 20 -- ...ibana-plugin-core-server.getauthheaders.md | 13 - .../kibana-plugin-core-server.getauthstate.md | 16 - ...-server.getdeprecationscontext.esclient.md | 11 - ...ugin-core-server.getdeprecationscontext.md | 20 -- ...tdeprecationscontext.savedobjectsclient.md | 11 - ...bana-plugin-core-server.getresponse._id.md | 11 - ...a-plugin-core-server.getresponse._index.md | 11 - ...n-core-server.getresponse._primary_term.md | 11 - ...plugin-core-server.getresponse._routing.md | 11 - ...-plugin-core-server.getresponse._seq_no.md | 11 - ...-plugin-core-server.getresponse._source.md | 11 - ...na-plugin-core-server.getresponse._type.md | 11 - ...plugin-core-server.getresponse._version.md | 11 - ...na-plugin-core-server.getresponse.found.md | 11 - .../kibana-plugin-core-server.getresponse.md | 27 -- ...a-plugin-core-server.handlercontexttype.md | 13 - ...bana-plugin-core-server.handlerfunction.md | 13 - ...na-plugin-core-server.handlerparameters.md | 13 - .../kibana-plugin-core-server.headers_2.md | 17 - .../kibana-plugin-core-server.httpauth.get.md | 13 - ...in-core-server.httpauth.isauthenticated.md | 13 - .../kibana-plugin-core-server.httpauth.md | 20 -- ...kibana-plugin-core-server.httpresources.md | 20 -- ...ugin-core-server.httpresources.register.md | 13 - ...rver.httpresourcesrenderoptions.headers.md | 18 - ...-core-server.httpresourcesrenderoptions.md | 20 -- ...core-server.httpresourcesrequesthandler.md | 18 - ...ore-server.httpresourcesresponseoptions.md | 13 - ...core-server.httpresourcesservicetoolkit.md | 23 -- ...esservicetoolkit.renderanonymouscoreapp.md | 13 - ...tpresourcesservicetoolkit.rendercoreapp.md | 13 - ....httpresourcesservicetoolkit.renderhtml.md | 13 - ...er.httpresourcesservicetoolkit.renderjs.md | 13 - ...in-core-server.httpresponseoptions.body.md | 13 - ...r.httpresponseoptions.bypasserrorformat.md | 13 - ...core-server.httpresponseoptions.headers.md | 13 - ...-plugin-core-server.httpresponseoptions.md | 22 -- ...-plugin-core-server.httpresponsepayload.md | 13 - ...gin-core-server.httpserverinfo.hostname.md | 13 - ...ibana-plugin-core-server.httpserverinfo.md | 23 -- ...-plugin-core-server.httpserverinfo.name.md | 13 - ...-plugin-core-server.httpserverinfo.port.md | 13 - ...gin-core-server.httpserverinfo.protocol.md | 13 - ...core-server.httpservicepreboot.basepath.md | 13 - ...server.httpservicepreboot.getserverinfo.md | 13 - ...a-plugin-core-server.httpservicepreboot.md | 80 ----- ...erver.httpservicepreboot.registerroutes.md | 39 -- ...n-core-server.httpservicesetup.basepath.md | 13 - ...setup.createcookiesessionstoragefactory.md | 13 - ...re-server.httpservicesetup.createrouter.md | 27 -- ...plugin-core-server.httpservicesetup.csp.md | 13 - ...e-server.httpservicesetup.getserverinfo.md | 13 - ...ana-plugin-core-server.httpservicesetup.md | 91 ----- ...re-server.httpservicesetup.registerauth.md | 18 - ...ver.httpservicesetup.registeronpostauth.md | 18 - ...rver.httpservicesetup.registeronpreauth.md | 18 - ....httpservicesetup.registeronpreresponse.md | 18 - ...r.httpservicesetup.registeronprerouting.md | 18 - ...ervicesetup.registerroutehandlercontext.md | 41 --- ...lugin-core-server.httpservicestart.auth.md | 13 - ...n-core-server.httpservicestart.basepath.md | 13 - ...e-server.httpservicestart.getserverinfo.md | 13 - ...ana-plugin-core-server.httpservicestart.md | 21 -- ...-core-server.i18nservicesetup.getlocale.md | 17 - ...er.i18nservicesetup.gettranslationfiles.md | 17 - ...ana-plugin-core-server.i18nservicesetup.md | 20 -- .../kibana-plugin-core-server.ibasepath.md | 15 - ...re-server.iclusterclient.asinternaluser.md | 13 - ...gin-core-server.iclusterclient.asscoped.md | 13 - ...ibana-plugin-core-server.iclusterclient.md | 21 -- ...-server.icontextcontainer.createhandler.md | 27 -- ...na-plugin-core-server.icontextcontainer.md | 79 ---- ...erver.icontextcontainer.registercontext.md | 34 -- ...ana-plugin-core-server.icontextprovider.md | 18 - ...core-server.icspconfig.disableembedding.md | 13 - ...na-plugin-core-server.icspconfig.header.md | 13 - .../kibana-plugin-core-server.icspconfig.md | 23 -- ...na-plugin-core-server.icspconfig.strict.md | 13 - ...re-server.icspconfig.warnlegacybrowsers.md | 13 - ...-core-server.icustomclusterclient.close.md | 13 - ...plugin-core-server.icustomclusterclient.md | 21 -- ...-core-server.iexecutioncontextcontainer.md | 20 -- ...erver.iexecutioncontextcontainer.tojson.md | 15 - ...ver.iexecutioncontextcontainer.tostring.md | 15 - ...a-plugin-core-server.iexternalurlconfig.md | 20 -- ...n-core-server.iexternalurlconfig.policy.md | 13 - ...in-core-server.iexternalurlpolicy.allow.md | 13 - ...gin-core-server.iexternalurlpolicy.host.md | 23 -- ...a-plugin-core-server.iexternalurlpolicy.md | 22 -- ...core-server.iexternalurlpolicy.protocol.md | 23 -- ...bana-plugin-core-server.ikibanaresponse.md | 22 -- ...gin-core-server.ikibanaresponse.options.md | 11 - ...gin-core-server.ikibanaresponse.payload.md | 11 - ...ugin-core-server.ikibanaresponse.status.md | 11 - ...server.ikibanasocket.authorizationerror.md | 13 - ...in-core-server.ikibanasocket.authorized.md | 13 - ...server.ikibanasocket.getpeercertificate.md | 22 -- ...rver.ikibanasocket.getpeercertificate_1.md | 22 -- ...rver.ikibanasocket.getpeercertificate_2.md | 26 -- ...n-core-server.ikibanasocket.getprotocol.md | 17 - ...kibana-plugin-core-server.ikibanasocket.md | 31 -- ...n-core-server.ikibanasocket.renegotiate.md | 29 -- ...n-core-server.intervalhistogram.exceeds.md | 11 - ...-server.intervalhistogram.fromtimestamp.md | 11 - ...-server.intervalhistogram.lastupdatedat.md | 11 - ...lugin-core-server.intervalhistogram.max.md | 11 - ...na-plugin-core-server.intervalhistogram.md | 27 -- ...ugin-core-server.intervalhistogram.mean.md | 11 - ...lugin-core-server.intervalhistogram.min.md | 11 - ...re-server.intervalhistogram.percentiles.md | 16 - ...in-core-server.intervalhistogram.stddev.md | 11 - ...e-server.irenderoptions.isanonymouspage.md | 13 - ...ibana-plugin-core-server.irenderoptions.md | 19 - ...ibana-plugin-core-server.irouter.delete.md | 13 - .../kibana-plugin-core-server.irouter.get.md | 13 - ...-core-server.irouter.handlelegacyerrors.md | 13 - .../kibana-plugin-core-server.irouter.md | 26 -- ...kibana-plugin-core-server.irouter.patch.md | 13 - .../kibana-plugin-core-server.irouter.post.md | 13 - .../kibana-plugin-core-server.irouter.put.md | 13 - ...a-plugin-core-server.irouter.routerpath.md | 13 - ...bana-plugin-core-server.isauthenticated.md | 13 - ...r.isavedobjectsexporter.exportbyobjects.md | 30 -- ...ver.isavedobjectsexporter.exportbytypes.md | 30 -- ...lugin-core-server.isavedobjectsexporter.md | 21 -- ...ore-server.isavedobjectsimporter.import.md | 28 -- ...lugin-core-server.isavedobjectsimporter.md | 21 -- ...avedobjectsimporter.resolveimporterrors.md | 28 -- ...er.isavedobjectspointintimefinder.close.md | 15 - ...ver.isavedobjectspointintimefinder.find.md | 13 - ...e-server.isavedobjectspointintimefinder.md | 20 -- ...gin-core-server.isavedobjectsrepository.md | 13 - ...in-core-server.isavedobjecttyperegistry.md | 13 - ...rver.iscopedclusterclient.ascurrentuser.md | 13 - ...ver.iscopedclusterclient.asinternaluser.md | 13 - ...plugin-core-server.iscopedclusterclient.md | 21 -- ...lugin-core-server.iuisettingsclient.get.md | 13 - ...in-core-server.iuisettingsclient.getall.md | 13 - ...-server.iuisettingsclient.getregistered.md | 13 - ...erver.iuisettingsclient.getuserprovided.md | 13 - ...e-server.iuisettingsclient.isoverridden.md | 13 - ...re-server.iuisettingsclient.issensitive.md | 13 - ...na-plugin-core-server.iuisettingsclient.md | 29 -- ...in-core-server.iuisettingsclient.remove.md | 13 - ...ore-server.iuisettingsclient.removemany.md | 13 - ...lugin-core-server.iuisettingsclient.set.md | 13 - ...n-core-server.iuisettingsclient.setmany.md | 13 - ...ugin-core-server.kibanaexecutioncontext.md | 21 -- ...core-server.kibanarequest._constructor_.md | 24 -- ...a-plugin-core-server.kibanarequest.auth.md | 13 - ...a-plugin-core-server.kibanarequest.body.md | 11 - ...plugin-core-server.kibanarequest.events.md | 13 - ...lugin-core-server.kibanarequest.headers.md | 18 - ...ana-plugin-core-server.kibanarequest.id.md | 18 - ...re-server.kibanarequest.issystemrequest.md | 13 - ...kibana-plugin-core-server.kibanarequest.md | 38 -- ...plugin-core-server.kibanarequest.params.md | 11 - ...-plugin-core-server.kibanarequest.query.md | 11 - ...-core-server.kibanarequest.rewrittenurl.md | 13 - ...-plugin-core-server.kibanarequest.route.md | 13 - ...plugin-core-server.kibanarequest.socket.md | 13 - ...na-plugin-core-server.kibanarequest.url.md | 13 - ...a-plugin-core-server.kibanarequest.uuid.md | 18 - ...ore-server.kibanarequestevents.aborted_.md | 13 - ...e-server.kibanarequestevents.completed_.md | 18 - ...-plugin-core-server.kibanarequestevents.md | 21 -- ...a-plugin-core-server.kibanarequestroute.md | 22 -- ...n-core-server.kibanarequestroute.method.md | 11 - ...-core-server.kibanarequestroute.options.md | 11 - ...gin-core-server.kibanarequestroute.path.md | 11 - ...n-core-server.kibanarequestrouteoptions.md | 13 - ...lugin-core-server.kibanaresponsefactory.md | 130 ------- .../kibana-plugin-core-server.knownheaders.md | 13 - ...in-core-server.lifecycleresponsefactory.md | 13 - ...-plugin-core-server.makeusagefromschema.md | 15 - .../core/server/kibana-plugin-core-server.md | 338 ------------------ ...re-server.mergesavedobjectmigrationmaps.md | 21 -- ....metricsservicesetup.collectioninterval.md | 13 - ...rver.metricsservicesetup.getopsmetrics_.md | 23 -- ...-plugin-core-server.metricsservicesetup.md | 21 -- ...-plugin-core-server.metricsservicestart.md | 13 - ...-server.mutatingoperationrefreshsetting.md | 13 - ...sversioncompatibility.incompatiblenodes.md | 11 - ....nodesversioncompatibility.iscompatible.md | 11 - ...nodesversioncompatibility.kibanaversion.md | 11 - ...n-core-server.nodesversioncompatibility.md | 23 -- ...erver.nodesversioncompatibility.message.md | 11 - ...sioncompatibility.nodesinforequesterror.md | 11 - ....nodesversioncompatibility.warningnodes.md | 11 - ...na-plugin-core-server.onpostauthhandler.md | 13 - ...na-plugin-core-server.onpostauthtoolkit.md | 20 -- ...ugin-core-server.onpostauthtoolkit.next.md | 13 - ...ana-plugin-core-server.onpreauthhandler.md | 13 - ...ana-plugin-core-server.onpreauthtoolkit.md | 20 -- ...lugin-core-server.onpreauthtoolkit.next.md | 13 - ...-server.onpreresponseextensions.headers.md | 13 - ...gin-core-server.onpreresponseextensions.md | 20 -- ...plugin-core-server.onpreresponsehandler.md | 13 - ...na-plugin-core-server.onpreresponseinfo.md | 20 -- ...ore-server.onpreresponseinfo.statuscode.md | 11 - ...in-core-server.onpreresponserender.body.md | 13 - ...core-server.onpreresponserender.headers.md | 13 - ...-plugin-core-server.onpreresponserender.md | 21 -- ...plugin-core-server.onpreresponsetoolkit.md | 21 -- ...n-core-server.onpreresponsetoolkit.next.md | 13 - ...core-server.onpreresponsetoolkit.render.md | 13 - ...-plugin-core-server.onpreroutinghandler.md | 13 - ...-plugin-core-server.onpreroutingtoolkit.md | 21 -- ...in-core-server.onpreroutingtoolkit.next.md | 13 - ...e-server.onpreroutingtoolkit.rewriteurl.md | 13 - ...gin-core-server.opsmetrics.collected_at.md | 13 - ...erver.opsmetrics.concurrent_connections.md | 13 - .../kibana-plugin-core-server.opsmetrics.md | 26 -- ...kibana-plugin-core-server.opsmetrics.os.md | 13 - ...a-plugin-core-server.opsmetrics.process.md | 18 - ...plugin-core-server.opsmetrics.processes.md | 13 - ...-plugin-core-server.opsmetrics.requests.md | 13 - ...n-core-server.opsmetrics.response_times.md | 13 - ...ana-plugin-core-server.opsosmetrics.cpu.md | 22 -- ...plugin-core-server.opsosmetrics.cpuacct.md | 16 - ...-plugin-core-server.opsosmetrics.distro.md | 13 - ...-core-server.opsosmetrics.distrorelease.md | 13 - ...na-plugin-core-server.opsosmetrics.load.md | 17 - .../kibana-plugin-core-server.opsosmetrics.md | 28 -- ...-plugin-core-server.opsosmetrics.memory.md | 17 - ...lugin-core-server.opsosmetrics.platform.md | 13 - ...ore-server.opsosmetrics.platformrelease.md | 13 - ...re-server.opsosmetrics.uptime_in_millis.md | 13 - ...rver.opsprocessmetrics.event_loop_delay.md | 13 - ...ocessmetrics.event_loop_delay_histogram.md | 13 - ...na-plugin-core-server.opsprocessmetrics.md | 24 -- ...in-core-server.opsprocessmetrics.memory.md | 20 -- ...lugin-core-server.opsprocessmetrics.pid.md | 13 - ...rver.opsprocessmetrics.uptime_in_millis.md | 13 - ...opsservermetrics.concurrent_connections.md | 13 - ...ana-plugin-core-server.opsservermetrics.md | 22 -- ...n-core-server.opsservermetrics.requests.md | 17 - ...-server.opsservermetrics.response_times.md | 16 - .../kibana-plugin-core-server.plugin_2.md | 22 -- ...ibana-plugin-core-server.plugin_2.setup.md | 23 -- ...ibana-plugin-core-server.plugin_2.start.md | 23 -- ...kibana-plugin-core-server.plugin_2.stop.md | 15 - ...ver.pluginconfigdescriptor.deprecations.md | 13 - ....pluginconfigdescriptor.exposetobrowser.md | 13 - ...er.pluginconfigdescriptor.exposetousage.md | 17 - ...ugin-core-server.pluginconfigdescriptor.md | 50 --- ...re-server.pluginconfigdescriptor.schema.md | 15 - ...a-plugin-core-server.pluginconfigschema.md | 13 - ...na-plugin-core-server.plugininitializer.md | 13 - ...-server.plugininitializercontext.config.md | 20 -- ...ore-server.plugininitializercontext.env.md | 16 - ...-server.plugininitializercontext.logger.md | 31 -- ...in-core-server.plugininitializercontext.md | 23 -- ...erver.plugininitializercontext.opaqueid.md | 11 - ...n-core-server.pluginmanifest.configpath.md | 18 - ...-core-server.pluginmanifest.description.md | 13 - ....pluginmanifest.enabledonanonymouspages.md | 13 - ...e-server.pluginmanifest.extrapublicdirs.md | 18 - ...na-plugin-core-server.pluginmanifest.id.md | 13 - ...ore-server.pluginmanifest.kibanaversion.md | 13 - ...ibana-plugin-core-server.pluginmanifest.md | 38 -- ...e-server.pluginmanifest.optionalplugins.md | 13 - ...plugin-core-server.pluginmanifest.owner.md | 14 - ...e-server.pluginmanifest.requiredbundles.md | 18 - ...e-server.pluginmanifest.requiredplugins.md | 13 - ...lugin-core-server.pluginmanifest.server.md | 13 - ...re-server.pluginmanifest.servicefolders.md | 13 - ...-plugin-core-server.pluginmanifest.type.md | 13 - ...na-plugin-core-server.pluginmanifest.ui.md | 13 - ...ugin-core-server.pluginmanifest.version.md | 13 - ...a-plugin-core-server.pollesnodesversion.md | 12 - ...esversionoptions.esversioncheckinterval.md | 11 - ...desversionoptions.ignoreversionmismatch.md | 11 - ...ollesnodesversionoptions.internalclient.md | 11 - ...pollesnodesversionoptions.kibanaversion.md | 11 - ...re-server.pollesnodesversionoptions.log.md | 11 - ...n-core-server.pollesnodesversionoptions.md | 23 -- ...kibana-plugin-core-server.prebootplugin.md | 21 -- ...-plugin-core-server.prebootplugin.setup.md | 23 -- ...a-plugin-core-server.prebootplugin.stop.md | 15 - ...otservicepreboot.holdsetupuntilresolved.md | 15 - ...ver.prebootservicepreboot.issetuponhold.md | 13 - ...lugin-core-server.prebootservicepreboot.md | 43 --- ...ugin-core-server.publicuisettingsparams.md | 13 - ...gin-core-server.redirectresponseoptions.md | 17 - ...isterdeprecationsconfig.getdeprecations.md | 11 - ...-core-server.registerdeprecationsconfig.md | 19 - ...ibana-plugin-core-server.requesthandler.md | 41 --- ...-core-server.requesthandlercontext.core.md | 11 - ...lugin-core-server.requesthandlercontext.md | 21 -- ...n-core-server.requesthandlercontextbase.md | 20 -- ...erver.requesthandlercontextbase.resolve.md | 23 -- ...e-server.requesthandlercontextcontainer.md | 13 - ...re-server.requesthandlercontextprovider.md | 13 - ...lugin-core-server.requesthandlerwrapper.md | 26 -- ...-core-server.resolvecapabilitiesoptions.md | 20 -- ...abilitiesoptions.usedefaultcapabilities.md | 13 - ...kibana-plugin-core-server.responseerror.md | 16 - ...gin-core-server.responseerrorattributes.md | 13 - ...bana-plugin-core-server.responseheaders.md | 13 - .../kibana-plugin-core-server.routeconfig.md | 22 -- ...-plugin-core-server.routeconfig.options.md | 13 - ...ana-plugin-core-server.routeconfig.path.md | 18 - ...plugin-core-server.routeconfig.validate.md | 61 ---- ...-server.routeconfigoptions.authrequired.md | 15 - ...gin-core-server.routeconfigoptions.body.md | 13 - ...a-plugin-core-server.routeconfigoptions.md | 24 -- ...gin-core-server.routeconfigoptions.tags.md | 13 - ...-core-server.routeconfigoptions.timeout.md | 16 - ...-server.routeconfigoptions.xsrfrequired.md | 15 - ...e-server.routeconfigoptionsbody.accepts.md | 15 - ...-server.routeconfigoptionsbody.maxbytes.md | 15 - ...ugin-core-server.routeconfigoptionsbody.md | 23 -- ...re-server.routeconfigoptionsbody.output.md | 15 - ...ore-server.routeconfigoptionsbody.parse.md | 15 - ...ana-plugin-core-server.routecontenttype.md | 13 - .../kibana-plugin-core-server.routemethod.md | 13 - ...ibana-plugin-core-server.routeregistrar.md | 13 - ...rver.routevalidationerror._constructor_.md | 21 -- ...plugin-core-server.routevalidationerror.md | 21 -- ...gin-core-server.routevalidationfunction.md | 41 --- ...routevalidationresultfactory.badrequest.md | 13 - ...ore-server.routevalidationresultfactory.md | 23 -- ...-server.routevalidationresultfactory.ok.md | 13 - ...-plugin-core-server.routevalidationspec.md | 15 - ...n-core-server.routevalidatorconfig.body.md | 13 - ...plugin-core-server.routevalidatorconfig.md | 22 -- ...core-server.routevalidatorconfig.params.md | 13 - ...-core-server.routevalidatorconfig.query.md | 13 - ...in-core-server.routevalidatorfullconfig.md | 13 - ...lugin-core-server.routevalidatoroptions.md | 20 -- ...ore-server.routevalidatoroptions.unsafe.md | 17 - ...bana-plugin-core-server.saferoutemethod.md | 13 - ...ugin-core-server.savedobject.attributes.md | 13 - ...server.savedobject.coremigrationversion.md | 13 - ...na-plugin-core-server.savedobject.error.md | 11 - ...ibana-plugin-core-server.savedobject.id.md | 13 - .../kibana-plugin-core-server.savedobject.md | 28 -- ...ore-server.savedobject.migrationversion.md | 13 - ...ugin-core-server.savedobject.namespaces.md | 13 - ...plugin-core-server.savedobject.originid.md | 13 - ...ugin-core-server.savedobject.references.md | 13 - ...ana-plugin-core-server.savedobject.type.md | 13 - ...ugin-core-server.savedobject.updated_at.md | 13 - ...-plugin-core-server.savedobject.version.md | 13 - ...plugin-core-server.savedobjectattribute.md | 13 - ...lugin-core-server.savedobjectattributes.md | 13 - ...-core-server.savedobjectattributesingle.md | 13 - ...texportbaseoptions.excludeexportdetails.md | 13 - ...jectexportbaseoptions.includenamespaces.md | 13 - ...exportbaseoptions.includereferencesdeep.md | 13 - ...ore-server.savedobjectexportbaseoptions.md | 23 -- ....savedobjectexportbaseoptions.namespace.md | 13 - ...er.savedobjectexportbaseoptions.request.md | 13 - ...text.converttomultinamespacetypeversion.md | 13 - ...tmigrationcontext.issinglenamespacetype.md | 13 - ...-server.savedobjectmigrationcontext.log.md | 13 - ...core-server.savedobjectmigrationcontext.md | 23 -- ...objectmigrationcontext.migrationversion.md | 13 - ...ugin-core-server.savedobjectmigrationfn.md | 43 --- ...gin-core-server.savedobjectmigrationmap.md | 26 -- ...gin-core-server.savedobjectreference.id.md | 11 - ...plugin-core-server.savedobjectreference.md | 22 -- ...n-core-server.savedobjectreference.name.md | 11 - ...n-core-server.savedobjectreference.type.md | 11 - ...rver.savedobjectreferencewithcontext.id.md | 13 - ...treferencewithcontext.inboundreferences.md | 17 - ...vedobjectreferencewithcontext.ismissing.md | 13 - ...-server.savedobjectreferencewithcontext.md | 27 -- ...avedobjectreferencewithcontext.originid.md | 13 - ....savedobjectreferencewithcontext.spaces.md | 13 - ...cewithcontext.spaceswithmatchingaliases.md | 13 - ...cewithcontext.spaceswithmatchingorigins.md | 13 - ...er.savedobjectreferencewithcontext.type.md | 13 - ...gin-core-server.savedobjectsanitizeddoc.md | 13 - ...gin-core-server.savedobjectsbaseoptions.md | 19 - ...erver.savedobjectsbaseoptions.namespace.md | 13 - ...savedobjectsbulkcreateobject.attributes.md | 11 - ...tsbulkcreateobject.coremigrationversion.md | 18 - ...-server.savedobjectsbulkcreateobject.id.md | 11 - ...jectsbulkcreateobject.initialnamespaces.md | 15 - ...ore-server.savedobjectsbulkcreateobject.md | 27 -- ...bjectsbulkcreateobject.migrationversion.md | 13 - ...r.savedobjectsbulkcreateobject.originid.md | 13 - ...savedobjectsbulkcreateobject.references.md | 11 - ...erver.savedobjectsbulkcreateobject.type.md | 11 - ...er.savedobjectsbulkcreateobject.version.md | 11 - ...server.savedobjectsbulkgetobject.fields.md | 13 - ...ore-server.savedobjectsbulkgetobject.id.md | 11 - ...n-core-server.savedobjectsbulkgetobject.md | 22 -- ...er.savedobjectsbulkgetobject.namespaces.md | 15 - ...e-server.savedobjectsbulkgetobject.type.md | 11 - ...server.savedobjectsbulkresolveobject.id.md | 11 - ...re-server.savedobjectsbulkresolveobject.md | 20 -- ...rver.savedobjectsbulkresolveobject.type.md | 11 - ...-server.savedobjectsbulkresolveresponse.md | 19 - ...ctsbulkresolveresponse.resolved_objects.md | 11 - ...in-core-server.savedobjectsbulkresponse.md | 19 - ....savedobjectsbulkresponse.saved_objects.md | 11 - ...savedobjectsbulkupdateobject.attributes.md | 13 - ...-server.savedobjectsbulkupdateobject.id.md | 13 - ...ore-server.savedobjectsbulkupdateobject.md | 23 -- ....savedobjectsbulkupdateobject.namespace.md | 15 - ...erver.savedobjectsbulkupdateobject.type.md | 13 - ...re-server.savedobjectsbulkupdateoptions.md | 20 -- ...r.savedobjectsbulkupdateoptions.refresh.md | 13 - ...e-server.savedobjectsbulkupdateresponse.md | 19 - ...objectsbulkupdateresponse.saved_objects.md | 11 - ...ver.savedobjectscheckconflictsobject.id.md | 11 - ...server.savedobjectscheckconflictsobject.md | 20 -- ...r.savedobjectscheckconflictsobject.type.md | 11 - ...vedobjectscheckconflictsresponse.errors.md | 15 - ...rver.savedobjectscheckconflictsresponse.md | 19 - ...re-server.savedobjectsclient.bulkcreate.md | 25 -- ...-core-server.savedobjectsclient.bulkget.md | 29 -- ...e-server.savedobjectsclient.bulkresolve.md | 31 -- ...re-server.savedobjectsclient.bulkupdate.md | 25 -- ...erver.savedobjectsclient.checkconflicts.md | 25 -- ...ver.savedobjectsclient.closepointintime.md | 27 -- ...sclient.collectmultinamespacereferences.md | 25 -- ...n-core-server.savedobjectsclient.create.md | 26 -- ...edobjectsclient.createpointintimefinder.md | 52 --- ...n-core-server.savedobjectsclient.delete.md | 26 -- ...n-core-server.savedobjectsclient.errors.md | 11 - ...gin-core-server.savedobjectsclient.find.md | 24 -- ...ugin-core-server.savedobjectsclient.get.md | 26 -- ...a-plugin-core-server.savedobjectsclient.md | 45 --- ...vedobjectsclient.openpointintimefortype.md | 27 -- ...r.savedobjectsclient.removereferencesto.md | 26 -- ...-core-server.savedobjectsclient.resolve.md | 26 -- ...n-core-server.savedobjectsclient.update.md | 27 -- ....savedobjectsclient.updateobjectsspaces.md | 27 -- ...-core-server.savedobjectsclientcontract.md | 39 -- ...n-core-server.savedobjectsclientfactory.md | 16 - ...erver.savedobjectsclientfactoryprovider.md | 13 - ...sclientprovideroptions.excludedwrappers.md | 11 - ...ientprovideroptions.includedhiddentypes.md | 11 - ...erver.savedobjectsclientprovideroptions.md | 21 -- ...server.savedobjectsclientwrapperfactory.md | 13 - ...savedobjectsclientwrapperoptions.client.md | 11 - ...server.savedobjectsclientwrapperoptions.md | 22 -- ...avedobjectsclientwrapperoptions.request.md | 11 - ...bjectsclientwrapperoptions.typeregistry.md | 11 - ...ver.savedobjectsclosepointintimeoptions.md | 12 - ...er.savedobjectsclosepointintimeresponse.md | 20 -- ...jectsclosepointintimeresponse.num_freed.md | 13 - ...jectsclosepointintimeresponse.succeeded.md | 13 - ...ollectmultinamespacereferencesobject.id.md | 11 - ...tscollectmultinamespacereferencesobject.md | 23 -- ...lectmultinamespacereferencesobject.type.md | 11 - ...scollectmultinamespacereferencesoptions.md | 21 -- ...multinamespacereferencesoptions.purpose.md | 13 - ...collectmultinamespacereferencesresponse.md | 20 -- ...ultinamespacereferencesresponse.objects.md | 11 - ...jectscreateoptions.coremigrationversion.md | 18 - ...ore-server.savedobjectscreateoptions.id.md | 13 - ...dobjectscreateoptions.initialnamespaces.md | 15 - ...n-core-server.savedobjectscreateoptions.md | 28 -- ...edobjectscreateoptions.migrationversion.md | 13 - ...rver.savedobjectscreateoptions.originid.md | 13 - ...ver.savedobjectscreateoptions.overwrite.md | 13 - ...er.savedobjectscreateoptions.references.md | 11 - ...erver.savedobjectscreateoptions.refresh.md | 13 - ...erver.savedobjectscreateoptions.version.md | 13 - ...atepointintimefinderdependencies.client.md | 11 - ...ectscreatepointintimefinderdependencies.md | 19 - ...edobjectscreatepointintimefinderoptions.md | 12 - ...er.savedobjectsdeletebynamespaceoptions.md | 20 -- ...objectsdeletebynamespaceoptions.refresh.md | 13 - ...-server.savedobjectsdeleteoptions.force.md | 13 - ...n-core-server.savedobjectsdeleteoptions.md | 21 -- ...erver.savedobjectsdeleteoptions.refresh.md | 13 - ...jectserrorhelpers.createbadrequesterror.md | 22 -- ...objectserrorhelpers.createconflicterror.md | 24 -- ...errorhelpers.creategenericnotfounderror.md | 23 -- ...creategenericnotfoundesunavailableerror.md | 23 -- ...orhelpers.createindexaliasnotfounderror.md | 22 -- ...serrorhelpers.createinvalidversionerror.md | 22 -- ...errorhelpers.createtoomanyrequestserror.md | 23 -- ...errorhelpers.createunsupportedtypeerror.md | 22 -- ...ctserrorhelpers.decoratebadrequesterror.md | 23 -- ...jectserrorhelpers.decorateconflicterror.md | 23 -- ...pers.decorateescannotexecutescripterror.md | 23 -- ...errorhelpers.decorateesunavailableerror.md | 23 -- ...ectserrorhelpers.decorateforbiddenerror.md | 23 -- ...bjectserrorhelpers.decorategeneralerror.md | 23 -- ...helpers.decorateindexaliasnotfounderror.md | 23 -- ...errorhelpers.decoratenotauthorizederror.md | 23 -- ...pers.decoraterequestentitytoolargeerror.md | 23 -- ...rorhelpers.decoratetoomanyrequestserror.md | 23 -- ...edobjectserrorhelpers.isbadrequesterror.md | 22 -- ...avedobjectserrorhelpers.isconflicterror.md | 22 -- ...rorhelpers.isescannotexecutescripterror.md | 22 -- ...bjectserrorhelpers.isesunavailableerror.md | 22 -- ...vedobjectserrorhelpers.isforbiddenerror.md | 22 -- ...savedobjectserrorhelpers.isgeneralerror.md | 22 -- ...jectserrorhelpers.isinvalidversionerror.md | 22 -- ...bjectserrorhelpers.isnotauthorizederror.md | 22 -- ...avedobjectserrorhelpers.isnotfounderror.md | 22 -- ...rorhelpers.isrequestentitytoolargeerror.md | 22 -- ...serrorhelpers.issavedobjectsclienterror.md | 22 -- ...ectserrorhelpers.istoomanyrequestserror.md | 22 -- ...in-core-server.savedobjectserrorhelpers.md | 48 --- ...erver.savedobjectsexportbyobjectoptions.md | 21 -- ...vedobjectsexportbyobjectoptions.objects.md | 16 - ...objectsexportbytypeoptions.hasreference.md | 13 - ...-server.savedobjectsexportbytypeoptions.md | 23 -- ....savedobjectsexportbytypeoptions.search.md | 13 - ...r.savedobjectsexportbytypeoptions.types.md | 13 - ...r.savedobjectsexporterror._constructor_.md | 22 -- ...rver.savedobjectsexporterror.attributes.md | 11 - ...edobjectsexporterror.exportsizeexceeded.md | 22 -- ...bjectsexporterror.invalidtransformerror.md | 24 -- ...gin-core-server.savedobjectsexporterror.md | 36 -- ...avedobjectsexporterror.objectfetcherror.md | 22 -- ...objectsexporterror.objecttransformerror.md | 25 -- ...ore-server.savedobjectsexporterror.type.md | 11 - ...ver.savedobjectsexportexcludedobject.id.md | 13 - ...server.savedobjectsexportexcludedobject.md | 21 -- ...savedobjectsexportexcludedobject.reason.md | 13 - ...r.savedobjectsexportexcludedobject.type.md | 13 - ...ectsexportresultdetails.excludedobjects.md | 13 - ...xportresultdetails.excludedobjectscount.md | 13 - ...bjectsexportresultdetails.exportedcount.md | 13 - ...-server.savedobjectsexportresultdetails.md | 24 -- ...ectsexportresultdetails.missingrefcount.md | 13 - ...tsexportresultdetails.missingreferences.md | 16 - ...core-server.savedobjectsexporttransform.md | 84 ----- ...rver.savedobjectsexporttransformcontext.md | 20 -- ...edobjectsexporttransformcontext.request.md | 13 - ...in-core-server.savedobjectsfieldmapping.md | 18 - ...bjectsfindoptions.defaultsearchoperator.md | 13 - ...e-server.savedobjectsfindoptions.fields.md | 18 - ...e-server.savedobjectsfindoptions.filter.md | 11 - ...er.savedobjectsfindoptions.hasreference.md | 13 - ...objectsfindoptions.hasreferenceoperator.md | 13 - ...gin-core-server.savedobjectsfindoptions.md | 36 -- ...rver.savedobjectsfindoptions.namespaces.md | 11 - ...ore-server.savedobjectsfindoptions.page.md | 11 - ...-server.savedobjectsfindoptions.perpage.md | 11 - ...core-server.savedobjectsfindoptions.pit.md | 13 - ...rver.savedobjectsfindoptions.preference.md | 13 - ...avedobjectsfindoptions.rootsearchfields.md | 13 - ...e-server.savedobjectsfindoptions.search.md | 13 - ...ver.savedobjectsfindoptions.searchafter.md | 13 - ...er.savedobjectsfindoptions.searchfields.md | 13 - ...erver.savedobjectsfindoptions.sortfield.md | 11 - ...erver.savedobjectsfindoptions.sortorder.md | 11 - ...ore-server.savedobjectsfindoptions.type.md | 11 - ...dobjectsfindoptions.typetonamespacesmap.md | 13 - ...ver.savedobjectsfindoptionsreference.id.md | 11 - ...server.savedobjectsfindoptionsreference.md | 20 -- ...r.savedobjectsfindoptionsreference.type.md | 11 - ...r.savedobjectsfindresponse.aggregations.md | 11 - ...in-core-server.savedobjectsfindresponse.md | 27 -- ...re-server.savedobjectsfindresponse.page.md | 11 - ...erver.savedobjectsfindresponse.per_page.md | 11 - ...-server.savedobjectsfindresponse.pit_id.md | 11 - ....savedobjectsfindresponse.saved_objects.md | 11 - ...e-server.savedobjectsfindresponse.total.md | 11 - ...ugin-core-server.savedobjectsfindresult.md | 21 -- ...ore-server.savedobjectsfindresult.score.md | 13 - ...core-server.savedobjectsfindresult.sort.md | 40 --- ...simportactionrequiredwarning.actionpath.md | 13 - ...importactionrequiredwarning.buttonlabel.md | 13 - ...savedobjectsimportactionrequiredwarning.md | 25 -- ...ectsimportactionrequiredwarning.message.md | 13 - ...objectsimportactionrequiredwarning.type.md | 11 - ...portambiguousconflicterror.destinations.md | 15 - ...avedobjectsimportambiguousconflicterror.md | 21 -- ...bjectsimportambiguousconflicterror.type.md | 11 - ...bjectsimportconflicterror.destinationid.md | 11 - ...-server.savedobjectsimportconflicterror.md | 21 -- ...er.savedobjectsimportconflicterror.type.md | 11 - ...rver.savedobjectsimporterror.attributes.md | 11 - ...edobjectsimporterror.importsizeexceeded.md | 22 -- ...gin-core-server.savedobjectsimporterror.md | 31 -- ...jectsimporterror.nonuniqueimportobjects.md | 22 -- ...simporterror.nonuniqueretrydestinations.md | 22 -- ...bjectsimporterror.nonuniqueretryobjects.md | 22 -- ...objectsimporterror.referencesfetcherror.md | 22 -- ...ore-server.savedobjectsimporterror.type.md | 11 - ...-server.savedobjectsimportfailure.error.md | 11 - ...ore-server.savedobjectsimportfailure.id.md | 11 - ...n-core-server.savedobjectsimportfailure.md | 24 -- ...e-server.savedobjectsimportfailure.meta.md | 14 - ...ver.savedobjectsimportfailure.overwrite.md | 13 - ...e-server.savedobjectsimportfailure.type.md | 11 - ...ugin-core-server.savedobjectsimporthook.md | 17 - ...ore-server.savedobjectsimporthookresult.md | 20 -- ...r.savedobjectsimporthookresult.warnings.md | 13 - ...avedobjectsimportmissingreferenceserror.md | 21 -- ...importmissingreferenceserror.references.md | 14 - ...bjectsimportmissingreferenceserror.type.md | 11 - ...vedobjectsimportoptions.createnewcopies.md | 13 - ...n-core-server.savedobjectsimportoptions.md | 24 -- ...ver.savedobjectsimportoptions.namespace.md | 13 - ...ver.savedobjectsimportoptions.overwrite.md | 13 - ...er.savedobjectsimportoptions.readstream.md | 13 - ...erver.savedobjectsimportoptions.refresh.md | 13 - ...erver.savedobjectsimportresponse.errors.md | 11 - ...-core-server.savedobjectsimportresponse.md | 24 -- ...rver.savedobjectsimportresponse.success.md | 11 - ...savedobjectsimportresponse.successcount.md | 11 - ...vedobjectsimportresponse.successresults.md | 11 - ...ver.savedobjectsimportresponse.warnings.md | 11 - ...r.savedobjectsimportretry.createnewcopy.md | 13 - ...r.savedobjectsimportretry.destinationid.md | 13 - ...-core-server.savedobjectsimportretry.id.md | 11 - ...ectsimportretry.ignoremissingreferences.md | 13 - ...gin-core-server.savedobjectsimportretry.md | 26 -- ...erver.savedobjectsimportretry.overwrite.md | 11 - ...vedobjectsimportretry.replacereferences.md | 15 - ...ore-server.savedobjectsimportretry.type.md | 11 - ...-server.savedobjectsimportsimplewarning.md | 21 -- ...savedobjectsimportsimplewarning.message.md | 13 - ...er.savedobjectsimportsimplewarning.type.md | 11 - ...savedobjectsimportsuccess.createnewcopy.md | 16 - ...savedobjectsimportsuccess.destinationid.md | 13 - ...ore-server.savedobjectsimportsuccess.id.md | 11 - ...n-core-server.savedobjectsimportsuccess.md | 25 -- ...e-server.savedobjectsimportsuccess.meta.md | 14 - ...ver.savedobjectsimportsuccess.overwrite.md | 13 - ...e-server.savedobjectsimportsuccess.type.md | 11 - ...e-server.savedobjectsimportunknownerror.md | 22 -- ....savedobjectsimportunknownerror.message.md | 11 - ...vedobjectsimportunknownerror.statuscode.md | 11 - ...ver.savedobjectsimportunknownerror.type.md | 11 - ....savedobjectsimportunsupportedtypeerror.md | 20 -- ...dobjectsimportunsupportedtypeerror.type.md | 11 - ...n-core-server.savedobjectsimportwarning.md | 15 - ...dobjectsincrementcounterfield.fieldname.md | 13 - ...bjectsincrementcounterfield.incrementby.md | 13 - ...erver.savedobjectsincrementcounterfield.md | 20 -- ...jectsincrementcounteroptions.initialize.md | 13 - ...ver.savedobjectsincrementcounteroptions.md | 23 -- ...ncrementcounteroptions.migrationversion.md | 13 - ...dobjectsincrementcounteroptions.refresh.md | 13 - ...ncrementcounteroptions.upsertattributes.md | 13 - ...re-server.savedobjectsmappingproperties.md | 13 - ...erver.savedobjectsmigrationlogger.debug.md | 11 - ...erver.savedobjectsmigrationlogger.error.md | 11 - ...server.savedobjectsmigrationlogger.info.md | 11 - ...core-server.savedobjectsmigrationlogger.md | 23 -- ...server.savedobjectsmigrationlogger.warn.md | 11 - ...ver.savedobjectsmigrationlogger.warning.md | 16 - ...ore-server.savedobjectsmigrationversion.md | 18 - ...n-core-server.savedobjectsnamespacetype.md | 13 - ...objectsopenpointintimeoptions.keepalive.md | 13 - ...rver.savedobjectsopenpointintimeoptions.md | 21 -- ...bjectsopenpointintimeoptions.namespaces.md | 15 - ...bjectsopenpointintimeoptions.preference.md | 13 - ....savedobjectsopenpointintimeresponse.id.md | 13 - ...ver.savedobjectsopenpointintimeresponse.md | 19 - ...in-core-server.savedobjectspitparams.id.md | 11 - ...-server.savedobjectspitparams.keepalive.md | 11 - ...lugin-core-server.savedobjectspitparams.md | 20 -- ...ugin-core-server.savedobjectsrawdoc._id.md | 11 - ...server.savedobjectsrawdoc._primary_term.md | 11 - ...-core-server.savedobjectsrawdoc._seq_no.md | 11 - ...-core-server.savedobjectsrawdoc._source.md | 11 - ...a-plugin-core-server.savedobjectsrawdoc.md | 23 -- ...e-server.savedobjectsrawdocparseoptions.md | 20 -- ...tsrawdocparseoptions.namespacetreatment.md | 15 - ...r.savedobjectsremovereferencestooptions.md | 20 -- ...bjectsremovereferencestooptions.refresh.md | 13 - ....savedobjectsremovereferencestoresponse.md | 20 -- ...jectsremovereferencestoresponse.updated.md | 13 - ...erver.savedobjectsrepository.bulkcreate.md | 27 -- ...e-server.savedobjectsrepository.bulkget.md | 31 -- ...rver.savedobjectsrepository.bulkresolve.md | 31 -- ...erver.savedobjectsrepository.bulkupdate.md | 27 -- ...r.savedobjectsrepository.checkconflicts.md | 25 -- ...savedobjectsrepository.closepointintime.md | 59 --- ...ository.collectmultinamespacereferences.md | 25 -- ...re-server.savedobjectsrepository.create.md | 28 -- ...jectsrepository.createpointintimefinder.md | 52 --- ...re-server.savedobjectsrepository.delete.md | 28 -- ...avedobjectsrepository.deletebynamespace.md | 27 -- ...core-server.savedobjectsrepository.find.md | 24 -- ...-core-server.savedobjectsrepository.get.md | 28 -- ...savedobjectsrepository.incrementcounter.md | 69 ---- ...ugin-core-server.savedobjectsrepository.md | 37 -- ...bjectsrepository.openpointintimefortype.md | 54 --- ...vedobjectsrepository.removereferencesto.md | 30 -- ...e-server.savedobjectsrepository.resolve.md | 28 -- ...re-server.savedobjectsrepository.update.md | 29 -- ...edobjectsrepository.updateobjectsspaces.md | 27 -- ...ositoryfactory.createinternalrepository.md | 13 - ...epositoryfactory.createscopedrepository.md | 13 - ...re-server.savedobjectsrepositoryfactory.md | 21 -- ...olveimporterrorsoptions.createnewcopies.md | 13 - ....savedobjectsresolveimporterrorsoptions.md | 23 -- ...ctsresolveimporterrorsoptions.namespace.md | 13 - ...tsresolveimporterrorsoptions.readstream.md | 13 - ...jectsresolveimporterrorsoptions.retries.md | 13 - ...vedobjectsresolveresponse.alias_purpose.md | 17 - ...dobjectsresolveresponse.alias_target_id.md | 15 - ...core-server.savedobjectsresolveresponse.md | 22 -- ...ver.savedobjectsresolveresponse.outcome.md | 15 - ...avedobjectsresolveresponse.saved_object.md | 13 - ...er.savedobjectsserializer.generaterawid.md | 26 -- ...sserializer.generaterawlegacyurlaliasid.md | 26 -- ...savedobjectsserializer.israwsavedobject.md | 25 -- ...ugin-core-server.savedobjectsserializer.md | 30 -- ...savedobjectsserializer.rawtosavedobject.md | 25 -- ...savedobjectsserializer.savedobjecttoraw.md | 24 -- ...vedobjectsservicesetup.addclientwrapper.md | 13 - ...savedobjectsservicesetup.getkibanaindex.md | 13 - ...in-core-server.savedobjectsservicesetup.md | 56 --- ...r.savedobjectsservicesetup.registertype.md | 60 ---- ...tsservicesetup.setclientfactoryprovider.md | 13 - ...savedobjectsservicestart.createexporter.md | 13 - ...savedobjectsservicestart.createimporter.md | 13 - ...tsservicestart.createinternalrepository.md | 13 - ...ectsservicestart.createscopedrepository.md | 18 - ...vedobjectsservicestart.createserializer.md | 13 - ...avedobjectsservicestart.getscopedclient.md | 15 - ...avedobjectsservicestart.gettyperegistry.md | 13 - ...in-core-server.savedobjectsservicestart.md | 26 -- ...lugin-core-server.savedobjectstatusmeta.md | 20 -- ...r.savedobjectstatusmeta.migratedindices.md | 15 - ...r.savedobjectstype.converttoaliasscript.md | 13 - ...type.converttomultinamespacetypeversion.md | 51 --- ...erver.savedobjectstype.excludeonupgrade.md | 13 - ...gin-core-server.savedobjectstype.hidden.md | 15 - ...re-server.savedobjectstype.indexpattern.md | 13 - ...core-server.savedobjectstype.management.md | 13 - ...n-core-server.savedobjectstype.mappings.md | 13 - ...ana-plugin-core-server.savedobjectstype.md | 58 --- ...core-server.savedobjectstype.migrations.md | 13 - ...lugin-core-server.savedobjectstype.name.md | 13 - ...e-server.savedobjectstype.namespacetype.md | 13 - ...in-core-server.savedobjectstype.schemas.md | 17 - ...managementdefinition.defaultsearchfield.md | 13 - ...ctstypemanagementdefinition.displayname.md | 13 - ...ectstypemanagementdefinition.getediturl.md | 13 - ...ctstypemanagementdefinition.getinappurl.md | 16 - ...bjectstypemanagementdefinition.gettitle.md | 13 - ...vedobjectstypemanagementdefinition.icon.md | 13 - ...ementdefinition.importableandexportable.md | 13 - ...tstypemanagementdefinition.isexportable.md | 48 --- ...er.savedobjectstypemanagementdefinition.md | 30 -- ...bjectstypemanagementdefinition.onexport.md | 24 -- ...bjectstypemanagementdefinition.onimport.md | 54 --- ...anagementdefinition.visibleinmanagement.md | 18 - ...vedobjectstypemappingdefinition.dynamic.md | 13 - ...erver.savedobjectstypemappingdefinition.md | 45 --- ...objectstypemappingdefinition.properties.md | 13 - ...avedobjectsupdateobjectsspacesobject.id.md | 13 - ...r.savedobjectsupdateobjectsspacesobject.md | 21 -- ...edobjectsupdateobjectsspacesobject.type.md | 13 - ....savedobjectsupdateobjectsspacesoptions.md | 21 -- ...jectsupdateobjectsspacesoptions.refresh.md | 13 - ...savedobjectsupdateobjectsspacesresponse.md | 20 -- ...ectsupdateobjectsspacesresponse.objects.md | 11 - ...updateobjectsspacesresponseobject.error.md | 13 - ...ctsupdateobjectsspacesresponseobject.id.md | 13 - ...bjectsupdateobjectsspacesresponseobject.md | 23 -- ...pdateobjectsspacesresponseobject.spaces.md | 13 - ...supdateobjectsspacesresponseobject.type.md | 13 - ...n-core-server.savedobjectsupdateoptions.md | 24 -- ...er.savedobjectsupdateoptions.references.md | 13 - ...erver.savedobjectsupdateoptions.refresh.md | 13 - ...vedobjectsupdateoptions.retryonconflict.md | 13 - ...server.savedobjectsupdateoptions.upsert.md | 13 - ...erver.savedobjectsupdateoptions.version.md | 13 - ...r.savedobjectsupdateresponse.attributes.md | 11 - ...-core-server.savedobjectsupdateresponse.md | 21 -- ...r.savedobjectsupdateresponse.references.md | 11 - ...vedobjectsutils.createemptyfindresponse.md | 13 - ...ore-server.savedobjectsutils.generateid.md | 17 - ....savedobjectsutils.getconvertedobjectid.md | 28 -- ...ore-server.savedobjectsutils.israndomid.md | 24 -- ...na-plugin-core-server.savedobjectsutils.md | 29 -- ...r.savedobjectsutils.namespaceidtostring.md | 13 - ...r.savedobjectsutils.namespacestringtoid.md | 13 - ...n-core-server.savedobjectsvalidationmap.md | 37 -- ...-core-server.savedobjectsvalidationspec.md | 13 - ...dobjecttypeexcludefromupgradefilterhook.md | 19 - ...ver.savedobjecttyperegistry.getalltypes.md | 19 - ...egistry.getimportableandexportabletypes.md | 17 - ...server.savedobjecttyperegistry.getindex.md | 24 -- ...-server.savedobjecttyperegistry.gettype.md | 24 -- ...savedobjecttyperegistry.getvisibletypes.md | 19 - ...server.savedobjecttyperegistry.ishidden.md | 24 -- ...ttyperegistry.isimportableandexportable.md | 24 -- ...avedobjecttyperegistry.ismultinamespace.md | 24 -- ...dobjecttyperegistry.isnamespaceagnostic.md | 24 -- ...ver.savedobjecttyperegistry.isshareable.md | 24 -- ...vedobjecttyperegistry.issinglenamespace.md | 24 -- ...gin-core-server.savedobjecttyperegistry.md | 31 -- ...er.savedobjecttyperegistry.registertype.md | 24 -- ...n-core-server.savedobjectunsanitizeddoc.md | 13 - ...ana-plugin-core-server.scopeablerequest.md | 15 - ...n-core-server.searchresponse._scroll_id.md | 11 - ...ugin-core-server.searchresponse._shards.md | 11 - ...core-server.searchresponse.aggregations.md | 11 - ...-plugin-core-server.searchresponse.hits.md | 28 -- ...ibana-plugin-core-server.searchresponse.md | 25 -- ...lugin-core-server.searchresponse.pit_id.md | 11 - ...in-core-server.searchresponse.timed_out.md | 11 - ...-plugin-core-server.searchresponse.took.md | 11 - ...plugin-core-server.servicestatus.detail.md | 13 - ...e-server.servicestatus.documentationurl.md | 13 - ...-plugin-core-server.servicestatus.level.md | 13 - ...kibana-plugin-core-server.servicestatus.md | 24 -- ...a-plugin-core-server.servicestatus.meta.md | 13 - ...lugin-core-server.servicestatus.summary.md | 13 - ...a-plugin-core-server.servicestatuslevel.md | 13 - ...-plugin-core-server.servicestatuslevels.md | 41 --- ...r.sessioncookievalidationresult.isvalid.md | 13 - ...re-server.sessioncookievalidationresult.md | 21 -- ...rver.sessioncookievalidationresult.path.md | 13 - ...plugin-core-server.sessionstorage.clear.md | 17 - ...a-plugin-core-server.sessionstorage.get.md | 17 - ...ibana-plugin-core-server.sessionstorage.md | 22 -- ...a-plugin-core-server.sessionstorage.set.md | 24 -- ...ssionstoragecookieoptions.encryptionkey.md | 13 - ...er.sessionstoragecookieoptions.issecure.md | 13 - ...core-server.sessionstoragecookieoptions.md | 24 -- ...server.sessionstoragecookieoptions.name.md | 13 - ...er.sessionstoragecookieoptions.samesite.md | 13 - ...er.sessionstoragecookieoptions.validate.md | 13 - ...e-server.sessionstoragefactory.asscoped.md | 11 - ...lugin-core-server.sessionstoragefactory.md | 20 -- ...na-plugin-core-server.shardsinfo.failed.md | 11 - .../kibana-plugin-core-server.shardsinfo.md | 22 -- ...a-plugin-core-server.shardsinfo.skipped.md | 11 - ...lugin-core-server.shardsinfo.successful.md | 11 - ...ana-plugin-core-server.shardsinfo.total.md | 11 - ...lugin-core-server.shardsresponse.failed.md | 11 - ...ibana-plugin-core-server.shardsresponse.md | 22 -- ...ugin-core-server.shardsresponse.skipped.md | 11 - ...n-core-server.shardsresponse.successful.md | 11 - ...plugin-core-server.shardsresponse.total.md | 11 - ...a-plugin-core-server.sharedglobalconfig.md | 16 - ...lugin-core-server.startservicesaccessor.md | 13 - ...in-core-server.statusservicesetup.core_.md | 13 - ...server.statusservicesetup.dependencies_.md | 13 - ...erver.statusservicesetup.derivedstatus_.md | 20 -- ...tatusservicesetup.isstatuspageanonymous.md | 13 - ...a-plugin-core-server.statusservicesetup.md | 83 ----- ...core-server.statusservicesetup.overall_.md | 20 -- ...ugin-core-server.statusservicesetup.set.md | 30 -- ...n-core-server.uisettingsparams.category.md | 13 - ...ore-server.uisettingsparams.deprecation.md | 13 - ...ore-server.uisettingsparams.description.md | 13 - ...ana-plugin-core-server.uisettingsparams.md | 33 -- ...gin-core-server.uisettingsparams.metric.md | 21 -- ...lugin-core-server.uisettingsparams.name.md | 13 - ...re-server.uisettingsparams.optionlabels.md | 13 - ...in-core-server.uisettingsparams.options.md | 13 - ...ugin-core-server.uisettingsparams.order.md | 15 - ...n-core-server.uisettingsparams.readonly.md | 13 - ...ver.uisettingsparams.requirespagereload.md | 13 - ...gin-core-server.uisettingsparams.schema.md | 11 - ...-core-server.uisettingsparams.sensitive.md | 13 - ...lugin-core-server.uisettingsparams.type.md | 13 - ...ugin-core-server.uisettingsparams.value.md | 13 - ...ugin-core-server.uisettingsservicesetup.md | 19 - ...-server.uisettingsservicesetup.register.md | 39 -- ...uisettingsservicestart.asscopedtoclient.md | 36 -- ...ugin-core-server.uisettingsservicestart.md | 19 - ...ibana-plugin-core-server.uisettingstype.md | 13 - ...na-plugin-core-server.unauthorizederror.md | 14 - ...in-core-server.unauthorizederrorhandler.md | 13 - ...nauthorizederrorhandlernothandledresult.md | 19 - ...orizederrorhandlernothandledresult.type.md | 11 - ...r.unauthorizederrorhandleroptions.error.md | 11 - ...-server.unauthorizederrorhandleroptions.md | 20 -- ...unauthorizederrorhandleroptions.request.md | 11 - ...e-server.unauthorizederrorhandlerresult.md | 12 - ...rorhandlerresultretryparams.authheaders.md | 11 - ...authorizederrorhandlerresultretryparams.md | 19 - ...ver.unauthorizederrorhandlerretryresult.md | 20 -- ...nauthorizederrorhandlerretryresult.type.md | 11 - ...-server.unauthorizederrorhandlertoolkit.md | 21 -- ...uthorizederrorhandlertoolkit.nothandled.md | 13 - ...r.unauthorizederrorhandlertoolkit.retry.md | 13 - ...-server.userprovidedvalues.isoverridden.md | 11 - ...a-plugin-core-server.userprovidedvalues.md | 21 -- ...ore-server.userprovidedvalues.uservalue.md | 11 - ...bana-plugin-core-server.validbodyoutput.md | 13 - package.json | 1 - scripts/check_published_api_changes.js | 10 - src/core/README.md | 14 - src/dev/run_check_published_api_changes.ts | 288 --------------- test/scripts/checks/doc_api_changes.sh | 6 - test/scripts/jenkins_unit.sh | 1 - vars/tasks.groovy | 1 - 1720 files changed, 30484 deletions(-) delete mode 100755 .buildkite/scripts/steps/checks/doc_api_changes.sh delete mode 100644 docs/development/core/public/index.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.approute.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.capabilities.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.category.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.chromeless.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.deeplinks.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.defaultpath.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.exactroute.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.keywords.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.mount.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.navlinkstatus.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.searchable.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.status.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.title.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app.updater_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.app_wrapper_class.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appcategory.arialabel.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appcategory.euiicontype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appcategory.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appcategory.label.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appcategory.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appcategory.order.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appdeeplink.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleaveaction.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleaveactiontype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.buttoncolor.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.callback.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.confirmbuttontext.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.text.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.title.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleavedefaultaction.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleavedefaultaction.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appleavehandler.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.applicationsetup.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.applicationsetup.register.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.applicationsetup.registerappupdater.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.applicationstart.applications_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.applicationstart.capabilities.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.applicationstart.currentappid_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.applicationstart.geturlforapp.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.applicationstart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.applicationstart.navigatetoapp.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.applicationstart.navigatetourl.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appmount.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appmountparameters.appbasepath.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appmountparameters.element.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appmountparameters.history.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appmountparameters.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appmountparameters.onappleave.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appmountparameters.setheaderactionmenu.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appmountparameters.theme_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appnavlinkstatus.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appnavoptions.euiicontype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appnavoptions.icon.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appnavoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appnavoptions.order.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appnavoptions.tooltip.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appstatus.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appunmount.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appupdatablefields.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.appupdater.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.capabilities.catalogue.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.capabilities.management.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.capabilities.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.capabilities.navlinks.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromebadge.icontype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromebadge.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromebadge.text.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromebadge.tooltip.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromebreadcrumb.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromedoctitle.change.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromedoctitle.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromedoctitle.reset.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextension.appname.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextension.content.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextension.links.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextension.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionlinkbase.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.content.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.href.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.linktype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.href.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.linktype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.href.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.linktype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.labels.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.linktype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.title.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenulink.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpmenuactions.hidehelpmenu.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromehelpmenuactions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.mount.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.order.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registercenter.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registerleft.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registerright.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.baseurl.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.category.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.disabled.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.euiicontype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.hidden.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.href.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.icon.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.order.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.title.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.tooltip.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlink.url.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlinks.enableforcedappswitchernavigation.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlinks.get.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getall.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getforceappswitchernavigation_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getnavlinks_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlinks.has.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromenavlinks.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.add.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.get.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.get_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.label.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.link.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.doctitle.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.getbadge_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.getbreadcrumbs_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.getbreadcrumbsappendextension_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.getcustomnavlink_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.gethelpextension_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.getisnavdrawerlocked_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.getisvisible_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.hasheaderbanner_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.navcontrols.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.navlinks.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.recentlyaccessed.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.setbadge.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.setbreadcrumbs.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.setbreadcrumbsappendextension.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.setcustomnavlink.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.setheaderbanner.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.sethelpextension.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.sethelpsupporturl.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromestart.setisvisible.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromeuserbanner.content.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.chromeuserbanner.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.coresetup.analytics.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.coresetup.application.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.coresetup.executioncontext.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.coresetup.fatalerrors.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.coresetup.getstartservices.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.coresetup.http.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.coresetup.injectedmetadata.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.coresetup.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.coresetup.notifications.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.coresetup.theme.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.coresetup.uisettings.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.analytics.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.application.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.chrome.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.deprecations.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.doclinks.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.executioncontext.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.fatalerrors.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.http.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.i18n.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.injectedmetadata.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.notifications.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.overlays.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.savedobjects.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.theme.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.corestart.uisettings.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.getalldeprecations.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.getdeprecations.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.isdeprecationresolvable.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.resolvedeprecation.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.errortoastoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.errortoastoptions.title.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.errortoastoptions.toastmessage.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.clear.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.context_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.get.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.getaslabels.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.set.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.withglobalcontext.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.executioncontextstart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.message.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.stack.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.add.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.get_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.fatalerrorsstart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.asresponse.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.assystemrequest.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.context.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.headers.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.prependbasepath.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.query.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpfetchoptionswithpath.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpfetchoptionswithpath.path.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpfetchquery.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httphandler.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpheadersinit.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpinterceptor.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpinterceptor.request.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpinterceptor.requesterror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpinterceptor.response.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpinterceptor.responseerror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.error.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.fetchoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.error.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.request.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.body.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.cache.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.credentials.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.headers.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.integrity.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.keepalive.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.method.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.mode.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.redirect.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.referrer.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.referrerpolicy.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.signal.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httprequestinit.window.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpresponse.body.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpresponse.fetchoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpresponse.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpresponse.request.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpresponse.response.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.addloadingcountsource.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.anonymouspaths.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.basepath.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.delete.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.externalurl.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.fetch.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.get.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.getloadingcount_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.head.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.intercept.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.options.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.patch.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.post.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpsetup.put.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.httpstart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.i18nstart.context.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.i18nstart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.isanonymous.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.register.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ibasepath.get.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ibasepath.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ibasepath.prepend.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ibasepath.publicbaseurl.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ibasepath.remove.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ibasepath.serverbasepath.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iexternalurl.isinternalurl.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iexternalurl.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iexternalurl.validateurl.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.allow.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.host.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.protocol.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.body.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.name.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.req.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.request.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.res.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.response.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.halt.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.halted.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.body.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.response.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.itoasts.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.get.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.get_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getall.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getupdate_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getupdateerrors_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.iscustom.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isdeclared.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isdefault.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isoverridden.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.remove.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.set.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.kibanaexecutioncontext.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.mountpoint.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.deeplinkid.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.openinnewtab.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.path.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.replace.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.skipappleave.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.state.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.forceredirect.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.skipappleave.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.navtype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.notificationssetup.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.notificationssetup.toasts.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.notificationsstart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.notificationsstart.toasts.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.add.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.getcomponent.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.remove.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.replace.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions._aria-label_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions._data-test-subj_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.classname.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.closebuttonarialabel.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.hideclosebutton.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.maskprops.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.onclose.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.outsideclickcloses.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.ownfocus.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.size.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutstart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayflyoutstart.open.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions._data-test-subj_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.buttoncolor.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.cancelbuttontext.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.classname.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.closebuttonarialabel.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.confirmbuttontext.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.defaultfocusedbutton.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.maxwidth.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.title.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions._data-test-subj_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.classname.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.closebuttonarialabel.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.maxwidth.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.open.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.openconfirm.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayref.close.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayref.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlayref.onclose.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaystart.banners.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaystart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaystart.openconfirm.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaystart.openflyout.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.overlaystart.openmodal.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.plugin_2.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.plugin_2.setup.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.plugin_2.start.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.plugin_2.stop.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.plugininitializer.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.config.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.env.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.opaqueid.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.publicappdeeplinkinfo.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.publicappinfo.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.publicuisettingsparams.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.resolvedeprecationresponse.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.alias_purpose.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.alias_target_id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.outcome.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.saved_object.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.responseerrorbody.attributes.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.responseerrorbody.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.responseerrorbody.message.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.responseerrorbody.statuscode.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.attributes.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.coremigrationversion.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.error.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.migrationversion.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.namespaces.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.originid.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.references.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.updated_at.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobject.version.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectattribute.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectattributes.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectattributesingle.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjecterror.error.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjecterror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjecterror.message.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjecterror.metadata.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjecterror.statuscode.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreference.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreference.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreference.name.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreference.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbaseoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbaseoptions.namespace.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbatchresponse.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbatchresponse.savedobjects.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.attributes.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateoptions.overwrite.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveresponse.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveresponse.resolved_objects.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.attributes.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.references.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.version.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateoptions.namespace.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkcreate.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkget.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkresolve.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkupdate.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.create.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.delete.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.find.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.get.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.resolve.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.update.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.coremigrationversion.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.migrationversion.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.overwrite.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.references.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.defaultsearchoperator.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.fields.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.filter.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.hasreference.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.hasreferenceoperator.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.namespaces.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.page.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.perpage.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.pit.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.preference.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.rootsearchfields.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.search.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.searchafter.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.searchfields.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.sortfield.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.sortorder.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.typetonamespacesmap.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.aggregations.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.page.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.perpage.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.total.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.actionpath.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.buttonlabel.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.message.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.destinations.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.destinationid.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.error.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.meta.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.overwrite.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.references.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.errors.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.success.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.successcount.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.successresults.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.warnings.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.createnewcopy.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.destinationid.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.ignoremissingreferences.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.overwrite.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.replacereferences.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.message.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.createnewcopy.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.destinationid.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.meta.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.overwrite.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.message.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.statuscode.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsimportwarning.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsmigrationversion.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsnamespacetype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.alias_purpose.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.alias_target_id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.outcome.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.saved_object.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsstart.client.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsstart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.references.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.upsert.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.version.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory._constructor_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.action.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.block.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.createhref.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.createsubhistory.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.go.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.goback.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.goforward.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.length.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.listen.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.location.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.push.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.scopedhistory.replace.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject._constructor_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject._version.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.attributes.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.coremigrationversion.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.delete.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.error.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.get.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.has.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.id.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.migrationversion.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.namespaces.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.references.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.save.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.set.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.simplesavedobject.updatedat.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.startservicesaccessor.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toast.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastinput.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastinputfields.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastoptions.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastoptions.toastlifetimems.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastsapi._constructor_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastsapi.add.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastsapi.adddanger.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastsapi.adderror.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastsapi.addinfo.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastsapi.addsuccess.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastsapi.addwarning.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastsapi.get_.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastsapi.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastsapi.remove.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastssetup.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.toastsstart.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.category.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.deprecation.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.description.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.metric.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.name.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.optionlabels.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.options.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.order.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.readonly.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.requirespagereload.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.schema.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.sensitive.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.type.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsparams.value.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingsstate.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.uisettingstype.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.unmountcallback.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.url_max_length.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.isoverridden.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.md delete mode 100644 docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.uservalue.md delete mode 100644 docs/development/core/server/index.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.analyticsservicepreboot.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.analyticsservicesetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.analyticsservicestart.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.app_wrapper_class.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.appcategory.arialabel.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.appcategory.euiicontype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.appcategory.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.appcategory.label.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.appcategory.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.appcategory.order.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.asyncplugin.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.asyncplugin.setup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.asyncplugin.start.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.asyncplugin.stop.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authenticated.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authenticated.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authenticationhandler.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authheaders.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authnothandled.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authnothandled.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authredirected.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authredirected.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authredirectedparams.headers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authredirectedparams.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authresult.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authresultparams.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authresultparams.requestheaders.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authresultparams.responseheaders.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authresultparams.state.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authresulttype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authstatus.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authtoolkit.authenticated.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authtoolkit.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authtoolkit.nothandled.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.authtoolkit.redirected.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.correctiveactions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.deprecationtype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.documentationurl.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.level.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.message.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.requirerestart.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.title.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basepath.get.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basepath.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basepath.prepend.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basepath.publicbaseurl.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basepath.remove.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basepath.serverbasepath.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.basepath.set.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.capabilities.catalogue.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.capabilities.management.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.capabilities.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.capabilities.navlinks.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.capabilitiesprovider.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.registerprovider.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.registerswitcher.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.capabilitiesstart.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.capabilitiesstart.resolvecapabilities.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.capabilitiesswitcher.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.configpath.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.deprecationtype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.contextsetup.createcontextcontainer.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.contextsetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corepreboot.analytics.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corepreboot.elasticsearch.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corepreboot.http.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corepreboot.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corepreboot.preboot.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.deprecations.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.elasticsearch.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.savedobjects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.uisettings.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.analytics.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.capabilities.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.context.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.deprecations.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.doclinks.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.elasticsearch.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.executioncontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.getstartservices.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.http.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.i18n.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.logging.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.metrics.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.savedobjects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.status.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.coresetup.uisettings.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestart.analytics.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestart.capabilities.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestart.doclinks.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestart.elasticsearch.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestart.executioncontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestart.http.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestart.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestart.metrics.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestart.savedobjects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestart.uisettings.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestatus.elasticsearch.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestatus.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.corestatus.savedobjects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.countresponse._shards.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.countresponse.count.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.countresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.cspconfig.default.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.cspconfig.disableembedding.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.cspconfig.header.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.cspconfig.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.cspconfig.strict.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.cspconfig.warnlegacybrowsers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.body.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.bypasserrorformat.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.headers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.statuscode.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.customrequesthandlercontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._index.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._shards.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._version.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.error.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.found.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.result.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deprecationsclient.getalldeprecations.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deprecationsclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deprecationsdetails.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deprecationsettings.doclinkskey.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deprecationsettings.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deprecationsettings.message.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deprecationsservicesetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.deprecationsservicesetup.registerdeprecations.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.destructiveroutemethod.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchclientconfig.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig._constructor_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.apiversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.compression.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.customheaders.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.healthcheckdelay.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.hosts.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.ignoreversionmismatch.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.maxsockets.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.password.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.pingtimeout.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.requestheaderswhitelist.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.requesttimeout.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.serviceaccounttoken.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.shardtimeout.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffinterval.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffonconnectionfault.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffonstart.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.ssl.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.username.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.credentialsspecified.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.hosts.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearcherrordetails.error.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearcherrordetails.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.config.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.createclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.legacy.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.setunauthorizederrorhandler.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.client.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.createclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.incompatiblenodes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.warningnodes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.body.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.headers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor._constructor_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.collect.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.reset.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.stop.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.getaslabels.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.withcontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.executioncontextstart.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.exposedtobrowserdescriptor.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.fakerequest.headers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.fakerequest.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.featuredeprecationdetails.deprecationtype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.featuredeprecationdetails.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getauthheaders.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getauthstate.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.esclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.savedobjectsclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getresponse._id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getresponse._index.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getresponse._primary_term.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getresponse._routing.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getresponse._seq_no.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getresponse._source.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getresponse._type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getresponse._version.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getresponse.found.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.getresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.handlercontexttype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.handlerfunction.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.handlerparameters.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.headers_2.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpauth.get.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpauth.isauthenticated.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpauth.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresources.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresources.register.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresourcesrenderoptions.headers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresourcesrenderoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresourcesrequesthandler.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresourcesresponseoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderanonymouscoreapp.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.rendercoreapp.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderhtml.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderjs.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.body.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.bypasserrorformat.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.headers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpresponsepayload.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpserverinfo.hostname.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpserverinfo.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpserverinfo.name.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpserverinfo.port.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpserverinfo.protocol.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.basepath.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.getserverinfo.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.registerroutes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.basepath.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.createcookiesessionstoragefactory.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.createrouter.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.csp.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.getserverinfo.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registerauth.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpostauth.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpreauth.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpreresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronprerouting.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registerroutehandlercontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicestart.auth.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicestart.basepath.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicestart.getserverinfo.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.httpservicestart.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.getlocale.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.gettranslationfiles.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ibasepath.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iclusterclient.asinternaluser.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iclusterclient.asscoped.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iclusterclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.icontextcontainer.createhandler.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.icontextcontainer.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.icontextcontainer.registercontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.icontextprovider.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.icspconfig.disableembedding.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.icspconfig.header.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.icspconfig.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.icspconfig.strict.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.icspconfig.warnlegacybrowsers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.icustomclusterclient.close.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.icustomclusterclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.tojson.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.tostring.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iexternalurlconfig.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iexternalurlconfig.policy.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.allow.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.host.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.protocol.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.options.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.payload.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.status.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanasocket.authorizationerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanasocket.authorized.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate_1.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate_2.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getprotocol.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanasocket.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.ikibanasocket.renegotiate.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.intervalhistogram.exceeds.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.intervalhistogram.fromtimestamp.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.intervalhistogram.lastupdatedat.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.intervalhistogram.max.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.intervalhistogram.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.intervalhistogram.mean.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.intervalhistogram.min.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.intervalhistogram.percentiles.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.intervalhistogram.stddev.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.irenderoptions.isanonymouspage.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.irenderoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.irouter.delete.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.irouter.get.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.irouter.handlelegacyerrors.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.irouter.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.irouter.patch.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.irouter.post.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.irouter.put.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.irouter.routerpath.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isauthenticated.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.exportbyobjects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.exportbytypes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.import.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.resolveimporterrors.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.close.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.find.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isavedobjectsrepository.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.isavedobjecttyperegistry.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.ascurrentuser.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.asinternaluser.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.get.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getall.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getregistered.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getuserprovided.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.isoverridden.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.issensitive.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.remove.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.removemany.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.set.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.setmany.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanaexecutioncontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest._constructor_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.auth.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.body.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.events.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.headers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.issystemrequest.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.params.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.query.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.rewrittenurl.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.route.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.socket.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.url.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequest.uuid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.aborted_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.completed_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.method.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.options.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.path.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanarequestrouteoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.kibanaresponsefactory.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.knownheaders.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.lifecycleresponsefactory.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.makeusagefromschema.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.mergesavedobjectmigrationmaps.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.collectioninterval.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.getopsmetrics_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.metricsservicestart.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.mutatingoperationrefreshsetting.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.incompatiblenodes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.iscompatible.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.kibanaversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.message.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.warningnodes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpostauthhandler.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpostauthtoolkit.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpostauthtoolkit.next.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreauthhandler.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreauthtoolkit.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreauthtoolkit.next.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreresponseextensions.headers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreresponseextensions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreresponsehandler.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreresponseinfo.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreresponseinfo.statuscode.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreresponserender.body.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreresponserender.headers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreresponserender.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.next.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.render.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreroutinghandler.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.next.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.rewriteurl.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsmetrics.collected_at.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsmetrics.concurrent_connections.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsmetrics.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsmetrics.os.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsmetrics.process.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsmetrics.processes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsmetrics.requests.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsmetrics.response_times.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsosmetrics.cpu.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsosmetrics.cpuacct.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsosmetrics.distro.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsosmetrics.distrorelease.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsosmetrics.load.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsosmetrics.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsosmetrics.memory.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsosmetrics.platform.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsosmetrics.platformrelease.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsosmetrics.uptime_in_millis.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.event_loop_delay.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.event_loop_delay_histogram.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.memory.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.pid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.uptime_in_millis.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsservermetrics.concurrent_connections.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsservermetrics.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsservermetrics.requests.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.opsservermetrics.response_times.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.plugin_2.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.plugin_2.setup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.plugin_2.start.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.plugin_2.stop.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.deprecations.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.exposetobrowser.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.exposetousage.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.schema.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginconfigschema.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.plugininitializer.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.config.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.env.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.logger.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.opaqueid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.configpath.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.description.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.enabledonanonymouspages.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.extrapublicdirs.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.kibanaversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.optionalplugins.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.owner.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.requiredbundles.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.requiredplugins.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.server.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.servicefolders.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.ui.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pluginmanifest.version.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pollesnodesversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.esversioncheckinterval.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.ignoreversionmismatch.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.internalclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.kibanaversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.log.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.prebootplugin.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.prebootplugin.setup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.prebootplugin.stop.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.holdsetupuntilresolved.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.issetuponhold.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.publicuisettingsparams.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.redirectresponseoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.registerdeprecationsconfig.getdeprecations.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.registerdeprecationsconfig.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.requesthandler.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.core.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.requesthandlercontextbase.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.requesthandlercontextbase.resolve.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.requesthandlercontextcontainer.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.requesthandlercontextprovider.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.requesthandlerwrapper.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.resolvecapabilitiesoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.resolvecapabilitiesoptions.usedefaultcapabilities.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.responseerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.responseerrorattributes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.responseheaders.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfig.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfig.options.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfig.path.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfig.validate.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.authrequired.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.body.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.tags.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.timeout.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.xsrfrequired.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.accepts.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.output.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.parse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routecontenttype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routemethod.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routeregistrar.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidationerror._constructor_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidationerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidationfunction.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.badrequest.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.ok.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidationspec.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.body.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.params.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.query.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidatorfullconfig.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidatoroptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.routevalidatoroptions.unsafe.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.saferoutemethod.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.attributes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.coremigrationversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.error.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.migrationversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.namespaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.originid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.references.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.updated_at.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobject.version.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectattribute.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectattributes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectattributesingle.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.excludeexportdetails.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includereferencesdeep.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.namespace.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.request.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.converttomultinamespacetypeversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.issinglenamespacetype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.log.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.migrationversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationfn.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationmap.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreference.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreference.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreference.name.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreference.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsanitizeddoc.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbaseoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbaseoptions.namespace.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.attributes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.coremigrationversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.initialnamespaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.migrationversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.originid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.references.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.version.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.fields.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.namespaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveresponse.resolved_objects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresponse.saved_objects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.attributes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.namespace.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateoptions.refresh.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateresponse.saved_objects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsresponse.errors.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkcreate.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkget.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkresolve.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkupdate.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.checkconflicts.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.closepointintime.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.create.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.delete.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.errors.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.find.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.get.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.removereferencesto.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.resolve.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.update.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclientcontract.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclientfactory.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclientfactoryprovider.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.excludedwrappers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.includedhiddentypes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperfactory.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.client.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.request.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.typeregistry.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.num_freed.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.succeeded.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.coremigrationversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.initialnamespaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.migrationversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.originid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.overwrite.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.references.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.refresh.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.version.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.client.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.refresh.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.force.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.refresh.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createbadrequesterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createconflicterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfounderror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfoundesunavailableerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createindexaliasnotfounderror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createinvalidversionerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createtoomanyrequestserror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createunsupportedtypeerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratebadrequesterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateconflicterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateescannotexecutescripterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateesunavailableerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateforbiddenerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorategeneralerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateindexaliasnotfounderror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratenotauthorizederror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoraterequestentitytoolargeerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratetoomanyrequestserror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isbadrequesterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isconflicterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isescannotexecutescripterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isesunavailableerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isforbiddenerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isgeneralerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isinvalidversionerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isnotauthorizederror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isnotfounderror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isrequestentitytoolargeerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.issavedobjectsclienterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.istoomanyrequestserror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbyobjectoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbyobjectoptions.objects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.hasreference.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.search.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.types.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror._constructor_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.attributes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.exportsizeexceeded.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.invalidtransformerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.objectfetcherror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.objecttransformerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.reason.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjectscount.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.exportedcount.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.missingrefcount.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.missingreferences.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransform.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransformcontext.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransformcontext.request.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfieldmapping.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.defaultsearchoperator.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.fields.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.filter.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.hasreference.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.hasreferenceoperator.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.namespaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.page.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.perpage.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.pit.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.preference.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.rootsearchfields.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.search.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.searchafter.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.searchfields.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.sortfield.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.sortorder.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.typetonamespacesmap.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.aggregations.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.page.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.per_page.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.pit_id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.saved_objects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.total.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.score.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.sort.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.actionpath.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.buttonlabel.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.message.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.destinations.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.destinationid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.attributes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.importsizeexceeded.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueimportobjects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretrydestinations.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretryobjects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.referencesfetcherror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.error.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.meta.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.overwrite.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthook.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthookresult.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthookresult.warnings.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.references.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.createnewcopies.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.namespace.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.overwrite.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.readstream.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.refresh.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.errors.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.success.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.successcount.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.successresults.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.warnings.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.createnewcopy.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.destinationid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.ignoremissingreferences.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.overwrite.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.replacereferences.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.message.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.createnewcopy.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.destinationid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.meta.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.overwrite.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.message.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.statuscode.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsimportwarning.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.fieldname.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.incrementby.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.initialize.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.upsertattributes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsmappingproperties.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.debug.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.error.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.info.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.warn.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.warning.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsnamespacetype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.keepalive.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.namespaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.preference.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeresponse.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.keepalive.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._primary_term.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._seq_no.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._source.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdocparseoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdocparseoptions.namespacetreatment.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestooptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestooptions.refresh.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestoresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestoresponse.updated.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkcreate.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkget.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkresolve.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkupdate.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.checkconflicts.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.closepointintime.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.create.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.delete.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.deletebynamespace.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.find.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.get.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.openpointintimefortype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.removereferencesto.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.resolve.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.update.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.createinternalrepository.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.createscopedrepository.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.createnewcopies.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.namespace.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.readstream.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.retries.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.alias_purpose.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.alias_target_id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.outcome.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.saved_object.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawlegacyurlaliasid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.israwsavedobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.rawtosavedobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.savedobjecttoraw.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.addclientwrapper.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.getkibanaindex.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.setclientfactoryprovider.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createexporter.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createimporter.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createinternalrepository.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createscopedrepository.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createserializer.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.getscopedclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.gettyperegistry.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstatusmeta.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstatusmeta.migratedindices.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.converttoaliasscript.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.converttomultinamespacetypeversion.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.excludeonupgrade.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.hidden.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.indexpattern.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.management.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.mappings.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.migrations.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.name.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.namespacetype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstype.schemas.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.defaultsearchfield.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.displayname.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.getediturl.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.getinappurl.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.gettitle.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.icon.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.importableandexportable.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.isexportable.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.onexport.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.onimport.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.visibleinmanagement.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.dynamic.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.properties.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.references.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.refresh.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.retryonconflict.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.upsert.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.version.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.attributes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.references.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.createemptyfindresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.generateid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.getconvertedobjectid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.israndomid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.namespaceidtostring.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.namespacestringtoid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsvalidationmap.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectsvalidationspec.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttypeexcludefromupgradefilterhook.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getalltypes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getimportableandexportabletypes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getindex.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.gettype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getvisibletypes.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.ishidden.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isimportableandexportable.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.ismultinamespace.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isnamespaceagnostic.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isshareable.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.issinglenamespace.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.registertype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectunsanitizeddoc.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.scopeablerequest.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.searchresponse._scroll_id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.searchresponse._shards.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.searchresponse.aggregations.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.searchresponse.hits.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.searchresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.searchresponse.pit_id.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.searchresponse.timed_out.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.searchresponse.took.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.servicestatus.detail.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.servicestatus.documentationurl.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.servicestatus.level.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.servicestatus.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.servicestatus.meta.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.servicestatus.summary.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.servicestatuslevel.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.servicestatuslevels.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.isvalid.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.path.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstorage.clear.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstorage.get.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstorage.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstorage.set.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.encryptionkey.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.issecure.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.name.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.samesite.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.validate.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstoragefactory.asscoped.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sessionstoragefactory.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.shardsinfo.failed.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.shardsinfo.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.shardsinfo.skipped.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.shardsinfo.successful.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.shardsinfo.total.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.shardsresponse.failed.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.shardsresponse.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.shardsresponse.skipped.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.shardsresponse.successful.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.shardsresponse.total.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.sharedglobalconfig.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.startservicesaccessor.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.statusservicesetup.core_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.statusservicesetup.dependencies_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.statusservicesetup.derivedstatus_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.statusservicesetup.isstatuspageanonymous.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.statusservicesetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.statusservicesetup.overall_.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.statusservicesetup.set.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.category.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.deprecation.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.description.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.metric.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.name.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.optionlabels.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.options.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.order.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.readonly.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.requirespagereload.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.schema.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.sensitive.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsparams.value.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsservicesetup.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsservicesetup.register.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsservicestart.asscopedtoclient.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingsservicestart.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.uisettingstype.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederror.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandler.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.error.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.request.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresult.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.authheaders.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerretryresult.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerretryresult.type.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.nothandled.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.retry.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.isoverridden.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.uservalue.md delete mode 100644 docs/development/core/server/kibana-plugin-core-server.validbodyoutput.md delete mode 100644 scripts/check_published_api_changes.js delete mode 100644 src/dev/run_check_published_api_changes.ts delete mode 100755 test/scripts/checks/doc_api_changes.sh diff --git a/.buildkite/scripts/steps/checks.sh b/.buildkite/scripts/steps/checks.sh index bffb919eaa8c9..9937a25758e41 100755 --- a/.buildkite/scripts/steps/checks.sh +++ b/.buildkite/scripts/steps/checks.sh @@ -11,7 +11,6 @@ export DISABLE_BOOTSTRAP_VALIDATION=false .buildkite/scripts/steps/checks/telemetry.sh .buildkite/scripts/steps/checks/ts_projects.sh .buildkite/scripts/steps/checks/jest_configs.sh -.buildkite/scripts/steps/checks/doc_api_changes.sh .buildkite/scripts/steps/checks/kbn_pm_dist.sh .buildkite/scripts/steps/checks/plugin_list_docs.sh .buildkite/scripts/steps/checks/bundle_limits.sh diff --git a/.buildkite/scripts/steps/checks/doc_api_changes.sh b/.buildkite/scripts/steps/checks/doc_api_changes.sh deleted file mode 100755 index 73a2bb9409d02..0000000000000 --- a/.buildkite/scripts/steps/checks/doc_api_changes.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -source .buildkite/scripts/common/util.sh - -echo --- Check Doc API Changes -checks-reporter-with-killswitch "Check Doc API Changes" \ - node scripts/check_published_api_changes diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 273f1159afa63..2682f1fc9c7c9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -291,7 +291,6 @@ /packages/kbn-logging-mocks/ @elastic/kibana-core /packages/kbn-http-tools/ @elastic/kibana-core /src/plugins/saved_objects_management/ @elastic/kibana-core -/src/dev/run_check_published_api_changes.ts @elastic/kibana-core /src/plugins/advanced_settings/ @elastic/kibana-core /x-pack/plugins/global_search_bar/ @elastic/kibana-core /test/analytics @elastic/kibana-core diff --git a/docs/development/core/public/index.md b/docs/development/core/public/index.md deleted file mode 100644 index 23c347fc16a7a..0000000000000 --- a/docs/development/core/public/index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [kibana-plugin-core-public](./kibana-plugin-core-public.md) | The Kibana Core APIs for client-side plugins.A plugin's public/index file must contain a named import, plugin, that implements which returns an object that implements .The plugin integrates with the core system via lifecycle events: setup, start, and stop. In each lifecycle method, the plugin will receive the corresponding core services available (either or ) and any interfaces returned by dependency plugins' lifecycle method. Anything returned by the plugin's lifecycle method will be exposed to downstream dependencies when their corresponding lifecycle methods are invoked. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.app.approute.md b/docs/development/core/public/kibana-plugin-core-public.app.approute.md deleted file mode 100644 index 357e6400c4e8c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.approute.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [appRoute](./kibana-plugin-core-public.app.approute.md) - -## App.appRoute property - -Override the application's routing path from `/app/${id}`. Must be unique across registered applications. Should not include the base path from HTTP. - -Signature: - -```typescript -appRoute?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.capabilities.md b/docs/development/core/public/kibana-plugin-core-public.app.capabilities.md deleted file mode 100644 index 4a027a6ab132c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.capabilities.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [capabilities](./kibana-plugin-core-public.app.capabilities.md) - -## App.capabilities property - -Custom capabilities defined by the app. - -Signature: - -```typescript -capabilities?: Partial; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.category.md b/docs/development/core/public/kibana-plugin-core-public.app.category.md deleted file mode 100644 index a1e74f2bcf5e2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.category.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [category](./kibana-plugin-core-public.app.category.md) - -## App.category property - -The category definition of the product See [AppCategory](./kibana-plugin-core-public.appcategory.md) See DEFAULT\_APP\_CATEGORIES for more reference - -Signature: - -```typescript -category?: AppCategory; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.chromeless.md b/docs/development/core/public/kibana-plugin-core-public.app.chromeless.md deleted file mode 100644 index fe234cac08b68..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.chromeless.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [chromeless](./kibana-plugin-core-public.app.chromeless.md) - -## App.chromeless property - -Hide the UI chrome when the application is mounted. Defaults to `false`. Takes precedence over chrome service visibility settings. - -Signature: - -```typescript -chromeless?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.deeplinks.md b/docs/development/core/public/kibana-plugin-core-public.app.deeplinks.md deleted file mode 100644 index d9f76fb38a55d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.deeplinks.md +++ /dev/null @@ -1,48 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [deepLinks](./kibana-plugin-core-public.app.deeplinks.md) - -## App.deepLinks property - -Input type for registering secondary in-app locations for an application. - -Deep links must include at least one of `path` or `deepLinks`. A deep link that does not have a `path` represents a topological level in the application's hierarchy, but does not have a destination URL that is user-accessible. - -Signature: - -```typescript -deepLinks?: AppDeepLink[]; -``` - -## Example - - -```ts -core.application.register({ - id: 'my_app', - title: 'Translated title', - keywords: ['translated keyword1', 'translated keyword2'], - deepLinks: [ - { - id: 'sub1', - title: 'Sub1', - path: '/sub1', - keywords: ['subpath1'], - }, - { - id: 'sub2', - title: 'Sub2', - deepLinks: [ - { - id: 'subsub', - title: 'SubSub', - path: '/sub2/sub', - keywords: ['subpath2'], - }, - ], - }, - ], - mount: () => { ... } -}) -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.app.defaultpath.md b/docs/development/core/public/kibana-plugin-core-public.app.defaultpath.md deleted file mode 100644 index 3c952ec053e62..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.defaultpath.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [defaultPath](./kibana-plugin-core-public.app.defaultpath.md) - -## App.defaultPath property - -Allow to define the default path a user should be directed to when navigating to the app. When defined, this value will be used as a default for the `path` option when calling [navigateToApp](./kibana-plugin-core-public.applicationstart.navigatetoapp.md)\`, and will also be appended to the [application navLink](./kibana-plugin-core-public.chromenavlink.md) in the navigation bar. - -Signature: - -```typescript -defaultPath?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.exactroute.md b/docs/development/core/public/kibana-plugin-core-public.app.exactroute.md deleted file mode 100644 index 71f6352ec006c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.exactroute.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [exactRoute](./kibana-plugin-core-public.app.exactroute.md) - -## App.exactRoute property - -If set to true, the application's route will only be checked against an exact match. Defaults to `false`. - -Signature: - -```typescript -exactRoute?: boolean; -``` - -## Example - - -```ts -core.application.register({ - id: 'my_app', - title: 'My App', - exactRoute: true, - mount: () => { ... }, -}) - -// '[basePath]/app/my_app' will be matched -// '[basePath]/app/my_app/some/path' will not be matched -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.app.id.md b/docs/development/core/public/kibana-plugin-core-public.app.id.md deleted file mode 100644 index 39f6e62dae04c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.id.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [id](./kibana-plugin-core-public.app.id.md) - -## App.id property - -The unique identifier of the application. - -Can only be composed of alphanumeric characters, `-`, `:` and `_` - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.keywords.md b/docs/development/core/public/kibana-plugin-core-public.app.keywords.md deleted file mode 100644 index 585df1b48c16e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.keywords.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [keywords](./kibana-plugin-core-public.app.keywords.md) - -## App.keywords property - -Optional keywords to match with in deep links search. Omit if this part of the hierarchy does not have a page URL. - -Signature: - -```typescript -keywords?: string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.md b/docs/development/core/public/kibana-plugin-core-public.app.md deleted file mode 100644 index 71bf216f30250..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.md +++ /dev/null @@ -1,34 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) - -## App interface - - -Signature: - -```typescript -export interface App extends AppNavOptions -``` -Extends: AppNavOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [appRoute?](./kibana-plugin-core-public.app.approute.md) | string | (Optional) Override the application's routing path from /app/${id}. Must be unique across registered applications. Should not include the base path from HTTP. | -| [capabilities?](./kibana-plugin-core-public.app.capabilities.md) | Partial<Capabilities> | (Optional) Custom capabilities defined by the app. | -| [category?](./kibana-plugin-core-public.app.category.md) | AppCategory | (Optional) The category definition of the product See [AppCategory](./kibana-plugin-core-public.appcategory.md) See DEFAULT\_APP\_CATEGORIES for more reference | -| [chromeless?](./kibana-plugin-core-public.app.chromeless.md) | boolean | (Optional) Hide the UI chrome when the application is mounted. Defaults to false. Takes precedence over chrome service visibility settings. | -| [deepLinks?](./kibana-plugin-core-public.app.deeplinks.md) | AppDeepLink\[\] | (Optional) Input type for registering secondary in-app locations for an application.Deep links must include at least one of path or deepLinks. A deep link that does not have a path represents a topological level in the application's hierarchy, but does not have a destination URL that is user-accessible. | -| [defaultPath?](./kibana-plugin-core-public.app.defaultpath.md) | string | (Optional) Allow to define the default path a user should be directed to when navigating to the app. When defined, this value will be used as a default for the path option when calling [navigateToApp](./kibana-plugin-core-public.applicationstart.navigatetoapp.md)\`, and will also be appended to the [application navLink](./kibana-plugin-core-public.chromenavlink.md) in the navigation bar. | -| [exactRoute?](./kibana-plugin-core-public.app.exactroute.md) | boolean | (Optional) If set to true, the application's route will only be checked against an exact match. Defaults to false. | -| [id](./kibana-plugin-core-public.app.id.md) | string | The unique identifier of the application.Can only be composed of alphanumeric characters, -, : and _ | -| [keywords?](./kibana-plugin-core-public.app.keywords.md) | string\[\] | (Optional) Optional keywords to match with in deep links search. Omit if this part of the hierarchy does not have a page URL. | -| [mount](./kibana-plugin-core-public.app.mount.md) | AppMount<HistoryLocationState> | A mount function called when the user navigates to this app's route. | -| [navLinkStatus?](./kibana-plugin-core-public.app.navlinkstatus.md) | AppNavLinkStatus | (Optional) The initial status of the application's navLink. Defaulting to visible if status is accessible and hidden if status is inaccessible See [AppNavLinkStatus](./kibana-plugin-core-public.appnavlinkstatus.md) | -| [searchable?](./kibana-plugin-core-public.app.searchable.md) | boolean | (Optional) The initial flag to determine if the application is searchable in the global search. Defaulting to true if navLinkStatus is visible or omitted. | -| [status?](./kibana-plugin-core-public.app.status.md) | AppStatus | (Optional) The initial status of the application. Defaulting to accessible | -| [title](./kibana-plugin-core-public.app.title.md) | string | The title of the application. | -| [updater$?](./kibana-plugin-core-public.app.updater_.md) | Observable<AppUpdater> | (Optional) An [AppUpdater](./kibana-plugin-core-public.appupdater.md) observable that can be used to update the application [AppUpdatableFields](./kibana-plugin-core-public.appupdatablefields.md) at runtime. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.app.mount.md b/docs/development/core/public/kibana-plugin-core-public.app.mount.md deleted file mode 100644 index 460ded2a4bff1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.mount.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [mount](./kibana-plugin-core-public.app.mount.md) - -## App.mount property - -A mount function called when the user navigates to this app's route. - -Signature: - -```typescript -mount: AppMount; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.navlinkstatus.md b/docs/development/core/public/kibana-plugin-core-public.app.navlinkstatus.md deleted file mode 100644 index c01a26e42e237..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.navlinkstatus.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [navLinkStatus](./kibana-plugin-core-public.app.navlinkstatus.md) - -## App.navLinkStatus property - -The initial status of the application's navLink. Defaulting to `visible` if `status` is `accessible` and `hidden` if status is `inaccessible` See [AppNavLinkStatus](./kibana-plugin-core-public.appnavlinkstatus.md) - -Signature: - -```typescript -navLinkStatus?: AppNavLinkStatus; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.searchable.md b/docs/development/core/public/kibana-plugin-core-public.app.searchable.md deleted file mode 100644 index ab1b559a7f6a1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.searchable.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [searchable](./kibana-plugin-core-public.app.searchable.md) - -## App.searchable property - -The initial flag to determine if the application is searchable in the global search. Defaulting to `true` if `navLinkStatus` is `visible` or omitted. - -Signature: - -```typescript -searchable?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.status.md b/docs/development/core/public/kibana-plugin-core-public.app.status.md deleted file mode 100644 index caa6ff1dcac9e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.status.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [status](./kibana-plugin-core-public.app.status.md) - -## App.status property - -The initial status of the application. Defaulting to `accessible` - -Signature: - -```typescript -status?: AppStatus; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.title.md b/docs/development/core/public/kibana-plugin-core-public.app.title.md deleted file mode 100644 index c705e3ab8d2b1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.title.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [title](./kibana-plugin-core-public.app.title.md) - -## App.title property - -The title of the application. - -Signature: - -```typescript -title: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.app.updater_.md b/docs/development/core/public/kibana-plugin-core-public.app.updater_.md deleted file mode 100644 index e6789a38f12f7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app.updater_.md +++ /dev/null @@ -1,43 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [App](./kibana-plugin-core-public.app.md) > [updater$](./kibana-plugin-core-public.app.updater_.md) - -## App.updater$ property - -An [AppUpdater](./kibana-plugin-core-public.appupdater.md) observable that can be used to update the application [AppUpdatableFields](./kibana-plugin-core-public.appupdatablefields.md) at runtime. - -Signature: - -```typescript -updater$?: Observable; -``` - -## Example - -How to update an application navLink at runtime - -```ts -// inside your plugin's setup function -export class MyPlugin implements Plugin { - private appUpdater = new BehaviorSubject(() => ({})); - - setup({ application }) { - application.register({ - id: 'my-app', - title: 'My App', - updater$: this.appUpdater, - async mount(params) { - const { renderApp } = await import('./application'); - return renderApp(params); - }, - }); - } - - start() { - // later, when the navlink needs to be updated - appUpdater.next(() => { - navLinkStatus: AppNavLinkStatus.disabled, - }) - } -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.app_wrapper_class.md b/docs/development/core/public/kibana-plugin-core-public.app_wrapper_class.md deleted file mode 100644 index 577c7edbeef4a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.app_wrapper_class.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [APP\_WRAPPER\_CLASS](./kibana-plugin-core-public.app_wrapper_class.md) - -## APP\_WRAPPER\_CLASS variable - -The class name for top level \*and\* nested application wrappers to ensure proper layout - -Signature: - -```typescript -APP_WRAPPER_CLASS = "kbnAppWrapper" -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appcategory.arialabel.md b/docs/development/core/public/kibana-plugin-core-public.appcategory.arialabel.md deleted file mode 100644 index ff805bd94174a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appcategory.arialabel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppCategory](./kibana-plugin-core-public.appcategory.md) > [ariaLabel](./kibana-plugin-core-public.appcategory.arialabel.md) - -## AppCategory.ariaLabel property - -If the visual label isn't appropriate for screen readers, can override it here - -Signature: - -```typescript -ariaLabel?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appcategory.euiicontype.md b/docs/development/core/public/kibana-plugin-core-public.appcategory.euiicontype.md deleted file mode 100644 index 578f70224342b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appcategory.euiicontype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppCategory](./kibana-plugin-core-public.appcategory.md) > [euiIconType](./kibana-plugin-core-public.appcategory.euiicontype.md) - -## AppCategory.euiIconType property - -Define an icon to be used for the category If the category is only 1 item, and no icon is defined, will default to the product icon Defaults to initials if no icon is defined - -Signature: - -```typescript -euiIconType?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appcategory.id.md b/docs/development/core/public/kibana-plugin-core-public.appcategory.id.md deleted file mode 100644 index 0342a1d9ee95b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appcategory.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppCategory](./kibana-plugin-core-public.appcategory.md) > [id](./kibana-plugin-core-public.appcategory.id.md) - -## AppCategory.id property - -Unique identifier for the categories - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appcategory.label.md b/docs/development/core/public/kibana-plugin-core-public.appcategory.label.md deleted file mode 100644 index 02c000e88f31d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appcategory.label.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppCategory](./kibana-plugin-core-public.appcategory.md) > [label](./kibana-plugin-core-public.appcategory.label.md) - -## AppCategory.label property - -Label used for category name. Also used as aria-label if one isn't set. - -Signature: - -```typescript -label: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appcategory.md b/docs/development/core/public/kibana-plugin-core-public.appcategory.md deleted file mode 100644 index 40c714b51b8bd..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appcategory.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppCategory](./kibana-plugin-core-public.appcategory.md) - -## AppCategory interface - -A category definition for nav links to know where to sort them in the left hand nav - -Signature: - -```typescript -export interface AppCategory -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [ariaLabel?](./kibana-plugin-core-public.appcategory.arialabel.md) | string | (Optional) If the visual label isn't appropriate for screen readers, can override it here | -| [euiIconType?](./kibana-plugin-core-public.appcategory.euiicontype.md) | string | (Optional) Define an icon to be used for the category If the category is only 1 item, and no icon is defined, will default to the product icon Defaults to initials if no icon is defined | -| [id](./kibana-plugin-core-public.appcategory.id.md) | string | Unique identifier for the categories | -| [label](./kibana-plugin-core-public.appcategory.label.md) | string | Label used for category name. Also used as aria-label if one isn't set. | -| [order?](./kibana-plugin-core-public.appcategory.order.md) | number | (Optional) The order that categories will be sorted in Prefer large steps between categories to allow for further editing (Default categories are in steps of 1000) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.appcategory.order.md b/docs/development/core/public/kibana-plugin-core-public.appcategory.order.md deleted file mode 100644 index 76959c060fa8b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appcategory.order.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppCategory](./kibana-plugin-core-public.appcategory.md) > [order](./kibana-plugin-core-public.appcategory.order.md) - -## AppCategory.order property - -The order that categories will be sorted in Prefer large steps between categories to allow for further editing (Default categories are in steps of 1000) - -Signature: - -```typescript -order?: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appdeeplink.md b/docs/development/core/public/kibana-plugin-core-public.appdeeplink.md deleted file mode 100644 index 30fd3085a4341..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appdeeplink.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppDeepLink](./kibana-plugin-core-public.appdeeplink.md) - -## AppDeepLink type - -Input type for registering secondary in-app locations for an application. - -Deep links must include at least one of `path` or `deepLinks`. A deep link that does not have a `path` represents a topological level in the application's hierarchy, but does not have a destination URL that is user-accessible. - -Signature: - -```typescript -export declare type AppDeepLink = { - id: string; - title: string; - keywords?: string[]; - navLinkStatus?: AppNavLinkStatus; - searchable?: boolean; -} & AppNavOptions & ({ - path: string; - deepLinks?: AppDeepLink[]; -} | { - path?: string; - deepLinks: AppDeepLink[]; -}); -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appleaveaction.md b/docs/development/core/public/kibana-plugin-core-public.appleaveaction.md deleted file mode 100644 index 48323ebaf8e77..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleaveaction.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveAction](./kibana-plugin-core-public.appleaveaction.md) - -## AppLeaveAction type - -Possible actions to return from a [AppLeaveHandler](./kibana-plugin-core-public.appleavehandler.md) - -See [AppLeaveConfirmAction](./kibana-plugin-core-public.appleaveconfirmaction.md) and [AppLeaveDefaultAction](./kibana-plugin-core-public.appleavedefaultaction.md) - -Signature: - -```typescript -export declare type AppLeaveAction = AppLeaveDefaultAction | AppLeaveConfirmAction; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appleaveactiontype.md b/docs/development/core/public/kibana-plugin-core-public.appleaveactiontype.md deleted file mode 100644 index 9df408c885a18..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleaveactiontype.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveActionType](./kibana-plugin-core-public.appleaveactiontype.md) - -## AppLeaveActionType enum - -Possible type of actions on application leave. - -Signature: - -```typescript -export declare enum AppLeaveActionType -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| confirm | "confirm" | | -| default | "default" | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.buttoncolor.md b/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.buttoncolor.md deleted file mode 100644 index 6a3c790cd17a2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.buttoncolor.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveConfirmAction](./kibana-plugin-core-public.appleaveconfirmaction.md) > [buttonColor](./kibana-plugin-core-public.appleaveconfirmaction.buttoncolor.md) - -## AppLeaveConfirmAction.buttonColor property - -Signature: - -```typescript -buttonColor?: ButtonColor; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.callback.md b/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.callback.md deleted file mode 100644 index 8ebc9068aa612..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.callback.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveConfirmAction](./kibana-plugin-core-public.appleaveconfirmaction.md) > [callback](./kibana-plugin-core-public.appleaveconfirmaction.callback.md) - -## AppLeaveConfirmAction.callback property - -Signature: - -```typescript -callback?: () => void; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.confirmbuttontext.md b/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.confirmbuttontext.md deleted file mode 100644 index 10ccb6d220f3f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.confirmbuttontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveConfirmAction](./kibana-plugin-core-public.appleaveconfirmaction.md) > [confirmButtonText](./kibana-plugin-core-public.appleaveconfirmaction.confirmbuttontext.md) - -## AppLeaveConfirmAction.confirmButtonText property - -Signature: - -```typescript -confirmButtonText?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.md b/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.md deleted file mode 100644 index 9f18643787019..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveConfirmAction](./kibana-plugin-core-public.appleaveconfirmaction.md) - -## AppLeaveConfirmAction interface - -Action to return from a [AppLeaveHandler](./kibana-plugin-core-public.appleavehandler.md) to show a confirmation message when trying to leave an application. - -See - -Signature: - -```typescript -export interface AppLeaveConfirmAction -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [buttonColor?](./kibana-plugin-core-public.appleaveconfirmaction.buttoncolor.md) | ButtonColor | (Optional) | -| [callback?](./kibana-plugin-core-public.appleaveconfirmaction.callback.md) | () => void | (Optional) | -| [confirmButtonText?](./kibana-plugin-core-public.appleaveconfirmaction.confirmbuttontext.md) | string | (Optional) | -| [text](./kibana-plugin-core-public.appleaveconfirmaction.text.md) | string | | -| [title?](./kibana-plugin-core-public.appleaveconfirmaction.title.md) | string | (Optional) | -| [type](./kibana-plugin-core-public.appleaveconfirmaction.type.md) | AppLeaveActionType.confirm | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.text.md b/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.text.md deleted file mode 100644 index 9caea99fd4a07..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.text.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveConfirmAction](./kibana-plugin-core-public.appleaveconfirmaction.md) > [text](./kibana-plugin-core-public.appleaveconfirmaction.text.md) - -## AppLeaveConfirmAction.text property - -Signature: - -```typescript -text: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.title.md b/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.title.md deleted file mode 100644 index cda43267e3311..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.title.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveConfirmAction](./kibana-plugin-core-public.appleaveconfirmaction.md) > [title](./kibana-plugin-core-public.appleaveconfirmaction.title.md) - -## AppLeaveConfirmAction.title property - -Signature: - -```typescript -title?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.type.md b/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.type.md deleted file mode 100644 index fdff75caedc58..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleaveconfirmaction.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveConfirmAction](./kibana-plugin-core-public.appleaveconfirmaction.md) > [type](./kibana-plugin-core-public.appleaveconfirmaction.type.md) - -## AppLeaveConfirmAction.type property - -Signature: - -```typescript -type: AppLeaveActionType.confirm; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appleavedefaultaction.md b/docs/development/core/public/kibana-plugin-core-public.appleavedefaultaction.md deleted file mode 100644 index 5d0e0d2a216e1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleavedefaultaction.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveDefaultAction](./kibana-plugin-core-public.appleavedefaultaction.md) - -## AppLeaveDefaultAction interface - -Action to return from a [AppLeaveHandler](./kibana-plugin-core-public.appleavehandler.md) to execute the default behaviour when leaving the application. - -See - -Signature: - -```typescript -export interface AppLeaveDefaultAction -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [type](./kibana-plugin-core-public.appleavedefaultaction.type.md) | AppLeaveActionType.default | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.appleavedefaultaction.type.md b/docs/development/core/public/kibana-plugin-core-public.appleavedefaultaction.type.md deleted file mode 100644 index c6bac03c4e002..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleavedefaultaction.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveDefaultAction](./kibana-plugin-core-public.appleavedefaultaction.md) > [type](./kibana-plugin-core-public.appleavedefaultaction.type.md) - -## AppLeaveDefaultAction.type property - -Signature: - -```typescript -type: AppLeaveActionType.default; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appleavehandler.md b/docs/development/core/public/kibana-plugin-core-public.appleavehandler.md deleted file mode 100644 index 256ea00e7ef7b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appleavehandler.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppLeaveHandler](./kibana-plugin-core-public.appleavehandler.md) - -## AppLeaveHandler type - -> Warning: This API is now obsolete. -> -> [AppMountParameters.onAppLeave](./kibana-plugin-core-public.appmountparameters.onappleave.md) has been deprecated in favor of [ScopedHistory.block](./kibana-plugin-core-public.scopedhistory.block.md) 8.8.0 -> - -A handler that will be executed before leaving the application, either when going to another application or when closing the browser tab or manually changing the url. Should return `confirm` to prompt a message to the user before leaving the page, or `default` to keep the default behavior (doing nothing). - -See [AppMountParameters](./kibana-plugin-core-public.appmountparameters.md) for detailed usage examples. - -Signature: - -```typescript -export declare type AppLeaveHandler = (factory: AppLeaveActionFactory, nextAppId?: string) => AppLeaveAction; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.applicationsetup.md b/docs/development/core/public/kibana-plugin-core-public.applicationsetup.md deleted file mode 100644 index 2e8702a56f309..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.applicationsetup.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ApplicationSetup](./kibana-plugin-core-public.applicationsetup.md) - -## ApplicationSetup interface - - -Signature: - -```typescript -export interface ApplicationSetup -``` - -## Methods - -| Method | Description | -| --- | --- | -| [register(app)](./kibana-plugin-core-public.applicationsetup.register.md) | Register an mountable application to the system. | -| [registerAppUpdater(appUpdater$)](./kibana-plugin-core-public.applicationsetup.registerappupdater.md) | Register an application updater that can be used to change the [AppUpdatableFields](./kibana-plugin-core-public.appupdatablefields.md) fields of all applications at runtime.This is meant to be used by plugins that needs to updates the whole list of applications. To only updates a specific application, use the updater$ property of the registered application instead. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.applicationsetup.register.md b/docs/development/core/public/kibana-plugin-core-public.applicationsetup.register.md deleted file mode 100644 index e53b28e88d6ea..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.applicationsetup.register.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ApplicationSetup](./kibana-plugin-core-public.applicationsetup.md) > [register](./kibana-plugin-core-public.applicationsetup.register.md) - -## ApplicationSetup.register() method - -Register an mountable application to the system. - -Signature: - -```typescript -register(app: App): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| app | App<HistoryLocationState> | an [App](./kibana-plugin-core-public.app.md) | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.applicationsetup.registerappupdater.md b/docs/development/core/public/kibana-plugin-core-public.applicationsetup.registerappupdater.md deleted file mode 100644 index 6e8203fd68197..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.applicationsetup.registerappupdater.md +++ /dev/null @@ -1,46 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ApplicationSetup](./kibana-plugin-core-public.applicationsetup.md) > [registerAppUpdater](./kibana-plugin-core-public.applicationsetup.registerappupdater.md) - -## ApplicationSetup.registerAppUpdater() method - -Register an application updater that can be used to change the [AppUpdatableFields](./kibana-plugin-core-public.appupdatablefields.md) fields of all applications at runtime. - -This is meant to be used by plugins that needs to updates the whole list of applications. To only updates a specific application, use the `updater$` property of the registered application instead. - -Signature: - -```typescript -registerAppUpdater(appUpdater$: Observable): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| appUpdater$ | Observable<AppUpdater> | | - -Returns: - -void - -## Example - -How to register an application updater that disables some applications: - -```ts -// inside your plugin's setup function -export class MyPlugin implements Plugin { - setup({ application }) { - application.registerAppUpdater( - new BehaviorSubject(app => { - if (myPluginApi.shouldDisable(app)) - return { - status: AppStatus.inaccessible, - }; - }) - ); - } -} -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.applicationstart.applications_.md b/docs/development/core/public/kibana-plugin-core-public.applicationstart.applications_.md deleted file mode 100644 index bcc5435f35951..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.applicationstart.applications_.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ApplicationStart](./kibana-plugin-core-public.applicationstart.md) > [applications$](./kibana-plugin-core-public.applicationstart.applications_.md) - -## ApplicationStart.applications$ property - -Observable emitting the list of currently registered apps and their associated status. - -Signature: - -```typescript -applications$: Observable>; -``` - -## Remarks - -Applications disabled by [Capabilities](./kibana-plugin-core-public.capabilities.md) will not be present in the map. Applications manually disabled from the client-side using an [application updater](./kibana-plugin-core-public.appupdater.md) are present, with their status properly set as `inaccessible`. - diff --git a/docs/development/core/public/kibana-plugin-core-public.applicationstart.capabilities.md b/docs/development/core/public/kibana-plugin-core-public.applicationstart.capabilities.md deleted file mode 100644 index 3d9353a246888..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.applicationstart.capabilities.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ApplicationStart](./kibana-plugin-core-public.applicationstart.md) > [capabilities](./kibana-plugin-core-public.applicationstart.capabilities.md) - -## ApplicationStart.capabilities property - -Gets the read-only capabilities. - -Signature: - -```typescript -capabilities: RecursiveReadonly; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.applicationstart.currentappid_.md b/docs/development/core/public/kibana-plugin-core-public.applicationstart.currentappid_.md deleted file mode 100644 index 1c1e118b8bfac..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.applicationstart.currentappid_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ApplicationStart](./kibana-plugin-core-public.applicationstart.md) > [currentAppId$](./kibana-plugin-core-public.applicationstart.currentappid_.md) - -## ApplicationStart.currentAppId$ property - -An observable that emits the current application id and each subsequent id update. - -Signature: - -```typescript -currentAppId$: Observable; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.applicationstart.geturlforapp.md b/docs/development/core/public/kibana-plugin-core-public.applicationstart.geturlforapp.md deleted file mode 100644 index 8bc89f617e157..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.applicationstart.geturlforapp.md +++ /dev/null @@ -1,33 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ApplicationStart](./kibana-plugin-core-public.applicationstart.md) > [getUrlForApp](./kibana-plugin-core-public.applicationstart.geturlforapp.md) - -## ApplicationStart.getUrlForApp() method - -Returns the absolute path (or URL) to a given app, including the global base path. - -By default, it returns the absolute path of the application (e.g `/basePath/app/my-app`). Use the `absolute` option to generate an absolute url instead (e.g `http://host:port/basePath/app/my-app`) - -Note that when generating absolute urls, the origin (protocol, host and port) are determined from the browser's current location. - -Signature: - -```typescript -getUrlForApp(appId: string, options?: { - path?: string; - absolute?: boolean; - deepLinkId?: string; - }): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| appId | string | | -| options | { path?: string; absolute?: boolean; deepLinkId?: string; } | | - -Returns: - -string - diff --git a/docs/development/core/public/kibana-plugin-core-public.applicationstart.md b/docs/development/core/public/kibana-plugin-core-public.applicationstart.md deleted file mode 100644 index 62128b840fb78..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.applicationstart.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ApplicationStart](./kibana-plugin-core-public.applicationstart.md) - -## ApplicationStart interface - - -Signature: - -```typescript -export interface ApplicationStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [applications$](./kibana-plugin-core-public.applicationstart.applications_.md) | Observable<ReadonlyMap<string, PublicAppInfo>> | Observable emitting the list of currently registered apps and their associated status. | -| [capabilities](./kibana-plugin-core-public.applicationstart.capabilities.md) | RecursiveReadonly<Capabilities> | Gets the read-only capabilities. | -| [currentAppId$](./kibana-plugin-core-public.applicationstart.currentappid_.md) | Observable<string \| undefined> | An observable that emits the current application id and each subsequent id update. | - -## Methods - -| Method | Description | -| --- | --- | -| [getUrlForApp(appId, options)](./kibana-plugin-core-public.applicationstart.geturlforapp.md) | Returns the absolute path (or URL) to a given app, including the global base path.By default, it returns the absolute path of the application (e.g /basePath/app/my-app). Use the absolute option to generate an absolute url instead (e.g http://host:port/basePath/app/my-app)Note that when generating absolute urls, the origin (protocol, host and port) are determined from the browser's current location. | -| [navigateToApp(appId, options)](./kibana-plugin-core-public.applicationstart.navigatetoapp.md) | Navigate to a given app | -| [navigateToUrl(url, options)](./kibana-plugin-core-public.applicationstart.navigatetourl.md) | Navigate to given URL in a SPA friendly way when possible (when the URL will redirect to a valid application within the current basePath).The method resolves pathnames the same way browsers do when resolving a <a href> value. The provided url can be: - an absolute URL - an absolute path - a path relative to the current URL (window.location.href)If all these criteria are true for the given URL: - (only for absolute URLs) The origin of the URL matches the origin of the browser's current location - The resolved pathname of the provided URL/path starts with the current basePath (eg. /mybasepath/s/my-space) - The pathname segment after the basePath matches any known application route (eg. /app// or any application's appRoute configuration)Then a SPA navigation will be performed using navigateToApp using the corresponding application and path. Otherwise, fallback to a full page reload to navigate to the url using window.location.assign. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.applicationstart.navigatetoapp.md b/docs/development/core/public/kibana-plugin-core-public.applicationstart.navigatetoapp.md deleted file mode 100644 index a6f87209148fd..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.applicationstart.navigatetoapp.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ApplicationStart](./kibana-plugin-core-public.applicationstart.md) > [navigateToApp](./kibana-plugin-core-public.applicationstart.navigatetoapp.md) - -## ApplicationStart.navigateToApp() method - -Navigate to a given app - -Signature: - -```typescript -navigateToApp(appId: string, options?: NavigateToAppOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| appId | string | | -| options | NavigateToAppOptions | navigation options | - -Returns: - -Promise<void> - diff --git a/docs/development/core/public/kibana-plugin-core-public.applicationstart.navigatetourl.md b/docs/development/core/public/kibana-plugin-core-public.applicationstart.navigatetourl.md deleted file mode 100644 index b6093340cfbf3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.applicationstart.navigatetourl.md +++ /dev/null @@ -1,50 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ApplicationStart](./kibana-plugin-core-public.applicationstart.md) > [navigateToUrl](./kibana-plugin-core-public.applicationstart.navigatetourl.md) - -## ApplicationStart.navigateToUrl() method - -Navigate to given URL in a SPA friendly way when possible (when the URL will redirect to a valid application within the current basePath). - -The method resolves pathnames the same way browsers do when resolving a `` value. The provided `url` can be: - an absolute URL - an absolute path - a path relative to the current URL (window.location.href) - -If all these criteria are true for the given URL: - (only for absolute URLs) The origin of the URL matches the origin of the browser's current location - The resolved pathname of the provided URL/path starts with the current basePath (eg. /mybasepath/s/my-space) - The pathname segment after the basePath matches any known application route (eg. /app// or any application's `appRoute` configuration) - -Then a SPA navigation will be performed using `navigateToApp` using the corresponding application and path. Otherwise, fallback to a full page reload to navigate to the url using `window.location.assign`. - -Signature: - -```typescript -navigateToUrl(url: string, options?: NavigateToUrlOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| url | string | an absolute URL, an absolute path or a relative path, to navigate to. | -| options | NavigateToUrlOptions | navigation options | - -Returns: - -Promise<void> - -## Example - - -```ts -// current url: `https://kibana:8080/base-path/s/my-space/app/dashboard` - -// will call `application.navigateToApp('discover', { path: '/some-path?foo=bar'})` -application.navigateToUrl('https://kibana:8080/base-path/s/my-space/app/discover/some-path?foo=bar') -application.navigateToUrl('/base-path/s/my-space/app/discover/some-path?foo=bar') -application.navigateToUrl('./discover/some-path?foo=bar') - -// will perform a full page reload using `window.location.assign` -application.navigateToUrl('https://elsewhere:8080/base-path/s/my-space/app/discover/some-path') // origin does not match -application.navigateToUrl('/app/discover/some-path') // does not include the current basePath -application.navigateToUrl('/base-path/s/my-space/app/unknown-app/some-path') // unknown application -application.navigateToUrl('../discover') // resolve to `/base-path/s/my-space/discover` which is not a path of a known app. -application.navigateToUrl('../../other-space/discover') // resolve to `/base-path/s/other-space/discover` which is not within the current basePath. -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.appmount.md b/docs/development/core/public/kibana-plugin-core-public.appmount.md deleted file mode 100644 index 0b02b7df597ae..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appmount.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppMount](./kibana-plugin-core-public.appmount.md) - -## AppMount type - -A mount function called when the user navigates to this app's route. - -Signature: - -```typescript -export declare type AppMount = (params: AppMountParameters) => AppUnmount | Promise; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.appbasepath.md b/docs/development/core/public/kibana-plugin-core-public.appmountparameters.appbasepath.md deleted file mode 100644 index 09a96cb3ce57a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.appbasepath.md +++ /dev/null @@ -1,61 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppMountParameters](./kibana-plugin-core-public.appmountparameters.md) > [appBasePath](./kibana-plugin-core-public.appmountparameters.appbasepath.md) - -## AppMountParameters.appBasePath property - -> Warning: This API is now obsolete. -> -> Use [AppMountParameters.history](./kibana-plugin-core-public.appmountparameters.history.md) instead. 8.8.0 -> - -The route path for configuring navigation to the application. This string should not include the base path from HTTP. - -Signature: - -```typescript -appBasePath: string; -``` - -## Example - -How to configure react-router with a base path: - -```ts -// inside your plugin's setup function -export class MyPlugin implements Plugin { - setup({ application }) { - application.register({ - id: 'my-app', - appRoute: '/my-app', - async mount(params) { - const { renderApp } = await import('./application'); - return renderApp(params); - }, - }); - } -} -``` - -```ts -// application.tsx -import React from 'react'; -import ReactDOM from 'react-dom'; -import { BrowserRouter, Route } from 'react-router-dom'; - -import { CoreStart, AppMountParameters } from 'src/core/public'; -import { MyPluginDepsStart } from './plugin'; - -export renderApp = ({ appBasePath, element }: AppMountParameters) => { - ReactDOM.render( - // pass `appBasePath` to `basename` - - - , - element - ); - - return () => ReactDOM.unmountComponentAtNode(element); -} -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.element.md b/docs/development/core/public/kibana-plugin-core-public.appmountparameters.element.md deleted file mode 100644 index 4d8c2a8644ad9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.element.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppMountParameters](./kibana-plugin-core-public.appmountparameters.md) > [element](./kibana-plugin-core-public.appmountparameters.element.md) - -## AppMountParameters.element property - -The container element to render the application into. - -Signature: - -```typescript -element: HTMLElement; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.history.md b/docs/development/core/public/kibana-plugin-core-public.appmountparameters.history.md deleted file mode 100644 index c22267eadbe28..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.history.md +++ /dev/null @@ -1,55 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppMountParameters](./kibana-plugin-core-public.appmountparameters.md) > [history](./kibana-plugin-core-public.appmountparameters.history.md) - -## AppMountParameters.history property - -A scoped history instance for your application. Should be used to wire up your applications Router. - -Signature: - -```typescript -history: ScopedHistory; -``` - -## Example - -How to configure react-router with a base path: - -```ts -// inside your plugin's setup function -export class MyPlugin implements Plugin { - setup({ application }) { - application.register({ - id: 'my-app', - appRoute: '/my-app', - async mount(params) { - const { renderApp } = await import('./application'); - return renderApp(params); - }, - }); - } -} -``` - -```ts -// application.tsx -import React from 'react'; -import ReactDOM from 'react-dom'; -import { Router, Route } from 'react-router-dom'; - -import { CoreStart, AppMountParameters } from 'src/core/public'; -import { MyPluginDepsStart } from './plugin'; - -export renderApp = ({ element, history }: AppMountParameters) => { - ReactDOM.render( - - - , - element - ); - - return () => ReactDOM.unmountComponentAtNode(element); -} -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.md b/docs/development/core/public/kibana-plugin-core-public.appmountparameters.md deleted file mode 100644 index 357998ecaea26..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppMountParameters](./kibana-plugin-core-public.appmountparameters.md) - -## AppMountParameters interface - - -Signature: - -```typescript -export interface AppMountParameters -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [appBasePath](./kibana-plugin-core-public.appmountparameters.appbasepath.md) | string | The route path for configuring navigation to the application. This string should not include the base path from HTTP. | -| [element](./kibana-plugin-core-public.appmountparameters.element.md) | HTMLElement | The container element to render the application into. | -| [history](./kibana-plugin-core-public.appmountparameters.history.md) | ScopedHistory<HistoryLocationState> | A scoped history instance for your application. Should be used to wire up your applications Router. | -| [onAppLeave](./kibana-plugin-core-public.appmountparameters.onappleave.md) | (handler: AppLeaveHandler) => void | A function that can be used to register a handler that will be called when the user is leaving the current application, allowing to prompt a confirmation message before actually changing the page.This will be called either when the user goes to another application, or when trying to close the tab or manually changing the url. | -| [setHeaderActionMenu](./kibana-plugin-core-public.appmountparameters.setheaderactionmenu.md) | (menuMount: MountPoint \| undefined) => void | A function that can be used to set the mount point used to populate the application action container in the chrome header.Calling the handler multiple time will erase the current content of the action menu with the mount from the latest call. Calling the handler with undefined will unmount the current mount point. Calling the handler after the application has been unmounted will have no effect. | -| [theme$](./kibana-plugin-core-public.appmountparameters.theme_.md) | Observable<CoreTheme> | An observable emitting . Should be used when mounting the application to include theme information. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.onappleave.md b/docs/development/core/public/kibana-plugin-core-public.appmountparameters.onappleave.md deleted file mode 100644 index 67c6d63175591..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.onappleave.md +++ /dev/null @@ -1,45 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppMountParameters](./kibana-plugin-core-public.appmountparameters.md) > [onAppLeave](./kibana-plugin-core-public.appmountparameters.onappleave.md) - -## AppMountParameters.onAppLeave property - -> Warning: This API is now obsolete. -> -> [ScopedHistory.block](./kibana-plugin-core-public.scopedhistory.block.md) should be used instead. 8.8.0 -> - -A function that can be used to register a handler that will be called when the user is leaving the current application, allowing to prompt a confirmation message before actually changing the page. - -This will be called either when the user goes to another application, or when trying to close the tab or manually changing the url. - -Signature: - -```typescript -onAppLeave: (handler: AppLeaveHandler) => void; -``` - -## Example - - -```ts -// application.tsx -import React from 'react'; -import ReactDOM from 'react-dom'; -import { BrowserRouter, Route } from 'react-router-dom'; - -import { CoreStart, AppMountParameters } from 'src/core/public'; -import { MyPluginDepsStart } from './plugin'; - -export renderApp = ({ element, history, onAppLeave }: AppMountParameters) => { - const { renderApp, hasUnsavedChanges } = await import('./application'); - onAppLeave(actions => { - if(hasUnsavedChanges()) { - return actions.confirm('Some changes were not saved. Are you sure you want to leave?'); - } - return actions.default(); - }); - return renderApp({ element, history }); -} -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.setheaderactionmenu.md b/docs/development/core/public/kibana-plugin-core-public.appmountparameters.setheaderactionmenu.md deleted file mode 100644 index 715e1ba4bf291..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.setheaderactionmenu.md +++ /dev/null @@ -1,38 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppMountParameters](./kibana-plugin-core-public.appmountparameters.md) > [setHeaderActionMenu](./kibana-plugin-core-public.appmountparameters.setheaderactionmenu.md) - -## AppMountParameters.setHeaderActionMenu property - -A function that can be used to set the mount point used to populate the application action container in the chrome header. - -Calling the handler multiple time will erase the current content of the action menu with the mount from the latest call. Calling the handler with `undefined` will unmount the current mount point. Calling the handler after the application has been unmounted will have no effect. - -Signature: - -```typescript -setHeaderActionMenu: (menuMount: MountPoint | undefined) => void; -``` - -## Example - - -```ts -// application.tsx -import React from 'react'; -import ReactDOM from 'react-dom'; -import { BrowserRouter, Route } from 'react-router-dom'; - -import { CoreStart, AppMountParameters } from 'src/core/public'; -import { MyPluginDepsStart } from './plugin'; - -export renderApp = ({ element, history, setHeaderActionMenu }: AppMountParameters) => { - const { renderApp } = await import('./application'); - const { renderActionMenu } = await import('./action_menu'); - setHeaderActionMenu((element) => { - return renderActionMenu(element); - }) - return renderApp({ element, history }); -} -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.theme_.md b/docs/development/core/public/kibana-plugin-core-public.appmountparameters.theme_.md deleted file mode 100644 index 7c69f76237361..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appmountparameters.theme_.md +++ /dev/null @@ -1,33 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppMountParameters](./kibana-plugin-core-public.appmountparameters.md) > [theme$](./kibana-plugin-core-public.appmountparameters.theme_.md) - -## AppMountParameters.theme$ property - -An observable emitting . Should be used when mounting the application to include theme information. - -Signature: - -```typescript -theme$: Observable; -``` - -## Example - -When mounting a react application: - -```ts -// application.tsx -import React from 'react'; -import ReactDOM from 'react-dom'; - -import { AppMountParameters } from 'src/core/public'; -import { wrapWithTheme } from 'src/plugins/kibana_react'; -import { MyApp } from './app'; - -export renderApp = ({ element, theme$ }: AppMountParameters) => { - ReactDOM.render(wrapWithTheme(, theme$), element); - return () => ReactDOM.unmountComponentAtNode(element); -} -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.appnavlinkstatus.md b/docs/development/core/public/kibana-plugin-core-public.appnavlinkstatus.md deleted file mode 100644 index 979816249d5cf..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appnavlinkstatus.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppNavLinkStatus](./kibana-plugin-core-public.appnavlinkstatus.md) - -## AppNavLinkStatus enum - -Status of the application's navLink. - -Signature: - -```typescript -export declare enum AppNavLinkStatus -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| default | 0 | The application navLink will be visible if the application's [AppStatus](./kibana-plugin-core-public.appstatus.md) is set to accessible and hidden if the application status is set to inaccessible. | -| disabled | 2 | The application navLink is visible but inactive and not clickable in the navigation bar. | -| hidden | 3 | The application navLink does not appear in the navigation bar. | -| visible | 1 | The application navLink is visible and clickable in the navigation bar. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.appnavoptions.euiicontype.md b/docs/development/core/public/kibana-plugin-core-public.appnavoptions.euiicontype.md deleted file mode 100644 index ed9d07cd29861..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appnavoptions.euiicontype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppNavOptions](./kibana-plugin-core-public.appnavoptions.md) > [euiIconType](./kibana-plugin-core-public.appnavoptions.euiicontype.md) - -## AppNavOptions.euiIconType property - -A EUI iconType that will be used for the app's icon. This icon takes precedence over the `icon` property. - -Signature: - -```typescript -euiIconType?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appnavoptions.icon.md b/docs/development/core/public/kibana-plugin-core-public.appnavoptions.icon.md deleted file mode 100644 index 3b809fc4aec39..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appnavoptions.icon.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppNavOptions](./kibana-plugin-core-public.appnavoptions.md) > [icon](./kibana-plugin-core-public.appnavoptions.icon.md) - -## AppNavOptions.icon property - -A URL to an image file used as an icon. Used as a fallback if `euiIconType` is not provided. - -Signature: - -```typescript -icon?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appnavoptions.md b/docs/development/core/public/kibana-plugin-core-public.appnavoptions.md deleted file mode 100644 index c6c583b7a9098..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appnavoptions.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppNavOptions](./kibana-plugin-core-public.appnavoptions.md) - -## AppNavOptions interface - -App navigation menu options - -Signature: - -```typescript -export interface AppNavOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [euiIconType?](./kibana-plugin-core-public.appnavoptions.euiicontype.md) | string | (Optional) A EUI iconType that will be used for the app's icon. This icon takes precedence over the icon property. | -| [icon?](./kibana-plugin-core-public.appnavoptions.icon.md) | string | (Optional) A URL to an image file used as an icon. Used as a fallback if euiIconType is not provided. | -| [order?](./kibana-plugin-core-public.appnavoptions.order.md) | number | (Optional) An ordinal used to sort nav links relative to one another for display. | -| [tooltip?](./kibana-plugin-core-public.appnavoptions.tooltip.md) | string | (Optional) A tooltip shown when hovering over app link. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.appnavoptions.order.md b/docs/development/core/public/kibana-plugin-core-public.appnavoptions.order.md deleted file mode 100644 index ca7ae482a04ad..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appnavoptions.order.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppNavOptions](./kibana-plugin-core-public.appnavoptions.md) > [order](./kibana-plugin-core-public.appnavoptions.order.md) - -## AppNavOptions.order property - -An ordinal used to sort nav links relative to one another for display. - -Signature: - -```typescript -order?: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appnavoptions.tooltip.md b/docs/development/core/public/kibana-plugin-core-public.appnavoptions.tooltip.md deleted file mode 100644 index 97c18c2e56a1e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appnavoptions.tooltip.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppNavOptions](./kibana-plugin-core-public.appnavoptions.md) > [tooltip](./kibana-plugin-core-public.appnavoptions.tooltip.md) - -## AppNavOptions.tooltip property - -A tooltip shown when hovering over app link. - -Signature: - -```typescript -tooltip?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appstatus.md b/docs/development/core/public/kibana-plugin-core-public.appstatus.md deleted file mode 100644 index 438d6d7d4728b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appstatus.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppStatus](./kibana-plugin-core-public.appstatus.md) - -## AppStatus enum - -Accessibility status of an application. - -Signature: - -```typescript -export declare enum AppStatus -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| accessible | 0 | Application is accessible. | -| inaccessible | 1 | Application is not accessible. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.appunmount.md b/docs/development/core/public/kibana-plugin-core-public.appunmount.md deleted file mode 100644 index 1c066f67a8ffe..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appunmount.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppUnmount](./kibana-plugin-core-public.appunmount.md) - -## AppUnmount type - -A function called when an application should be unmounted from the page. This function should be synchronous. - -Signature: - -```typescript -export declare type AppUnmount = () => void; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appupdatablefields.md b/docs/development/core/public/kibana-plugin-core-public.appupdatablefields.md deleted file mode 100644 index c24da05abe7ec..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appupdatablefields.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppUpdatableFields](./kibana-plugin-core-public.appupdatablefields.md) - -## AppUpdatableFields type - -Defines the list of fields that can be updated via an [AppUpdater](./kibana-plugin-core-public.appupdater.md). - -Signature: - -```typescript -export declare type AppUpdatableFields = Pick; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.appupdater.md b/docs/development/core/public/kibana-plugin-core-public.appupdater.md deleted file mode 100644 index 744c52f221da7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.appupdater.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [AppUpdater](./kibana-plugin-core-public.appupdater.md) - -## AppUpdater type - -Updater for applications. see [ApplicationSetup](./kibana-plugin-core-public.applicationsetup.md) - -Signature: - -```typescript -export declare type AppUpdater = (app: App) => Partial | undefined; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.capabilities.catalogue.md b/docs/development/core/public/kibana-plugin-core-public.capabilities.catalogue.md deleted file mode 100644 index f31b1b3333175..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.capabilities.catalogue.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [Capabilities](./kibana-plugin-core-public.capabilities.md) > [catalogue](./kibana-plugin-core-public.capabilities.catalogue.md) - -## Capabilities.catalogue property - -Catalogue capabilities. Catalogue entries drive the visibility of the Kibana homepage options. - -Signature: - -```typescript -catalogue: Record; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.capabilities.management.md b/docs/development/core/public/kibana-plugin-core-public.capabilities.management.md deleted file mode 100644 index c1f06e692d638..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.capabilities.management.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [Capabilities](./kibana-plugin-core-public.capabilities.md) > [management](./kibana-plugin-core-public.capabilities.management.md) - -## Capabilities.management property - -Management section capabilities. - -Signature: - -```typescript -management: { - [sectionId: string]: Record; - }; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.capabilities.md b/docs/development/core/public/kibana-plugin-core-public.capabilities.md deleted file mode 100644 index e908bd554d88d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.capabilities.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [Capabilities](./kibana-plugin-core-public.capabilities.md) - -## Capabilities interface - -The read-only set of capabilities available for the current UI session. Capabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID, and the boolean is a flag indicating if the capability is enabled or disabled. - -Signature: - -```typescript -export interface Capabilities -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [catalogue](./kibana-plugin-core-public.capabilities.catalogue.md) | Record<string, boolean> | Catalogue capabilities. Catalogue entries drive the visibility of the Kibana homepage options. | -| [management](./kibana-plugin-core-public.capabilities.management.md) | { \[sectionId: string\]: Record<string, boolean>; } | Management section capabilities. | -| [navLinks](./kibana-plugin-core-public.capabilities.navlinks.md) | Record<string, boolean> | Navigation link capabilities. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.capabilities.navlinks.md b/docs/development/core/public/kibana-plugin-core-public.capabilities.navlinks.md deleted file mode 100644 index 5f4016ba5a308..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.capabilities.navlinks.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [Capabilities](./kibana-plugin-core-public.capabilities.md) > [navLinks](./kibana-plugin-core-public.capabilities.navlinks.md) - -## Capabilities.navLinks property - -Navigation link capabilities. - -Signature: - -```typescript -navLinks: Record; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromebadge.icontype.md b/docs/development/core/public/kibana-plugin-core-public.chromebadge.icontype.md deleted file mode 100644 index 28244a2c9d8c7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromebadge.icontype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeBadge](./kibana-plugin-core-public.chromebadge.md) > [iconType](./kibana-plugin-core-public.chromebadge.icontype.md) - -## ChromeBadge.iconType property - -Signature: - -```typescript -iconType?: IconType; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromebadge.md b/docs/development/core/public/kibana-plugin-core-public.chromebadge.md deleted file mode 100644 index e2e4d1910fdd5..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromebadge.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeBadge](./kibana-plugin-core-public.chromebadge.md) - -## ChromeBadge interface - - -Signature: - -```typescript -export interface ChromeBadge -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [iconType?](./kibana-plugin-core-public.chromebadge.icontype.md) | IconType | (Optional) | -| [text](./kibana-plugin-core-public.chromebadge.text.md) | string | | -| [tooltip](./kibana-plugin-core-public.chromebadge.tooltip.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromebadge.text.md b/docs/development/core/public/kibana-plugin-core-public.chromebadge.text.md deleted file mode 100644 index b2b4e415c24c7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromebadge.text.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeBadge](./kibana-plugin-core-public.chromebadge.md) > [text](./kibana-plugin-core-public.chromebadge.text.md) - -## ChromeBadge.text property - -Signature: - -```typescript -text: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromebadge.tooltip.md b/docs/development/core/public/kibana-plugin-core-public.chromebadge.tooltip.md deleted file mode 100644 index fa22d739e86ee..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromebadge.tooltip.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeBadge](./kibana-plugin-core-public.chromebadge.md) > [tooltip](./kibana-plugin-core-public.chromebadge.tooltip.md) - -## ChromeBadge.tooltip property - -Signature: - -```typescript -tooltip: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromebreadcrumb.md b/docs/development/core/public/kibana-plugin-core-public.chromebreadcrumb.md deleted file mode 100644 index f88e855d436ad..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromebreadcrumb.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeBreadcrumb](./kibana-plugin-core-public.chromebreadcrumb.md) - -## ChromeBreadcrumb type - - -Signature: - -```typescript -export declare type ChromeBreadcrumb = EuiBreadcrumb; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.change.md b/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.change.md deleted file mode 100644 index cf31d16cae0e0..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.change.md +++ /dev/null @@ -1,33 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeDocTitle](./kibana-plugin-core-public.chromedoctitle.md) > [change](./kibana-plugin-core-public.chromedoctitle.change.md) - -## ChromeDocTitle.change() method - -Changes the current document title. - -Signature: - -```typescript -change(newTitle: string | string[]): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| newTitle | string \| string\[\] | The new title to set, either a string or string array | - -Returns: - -void - -## Example - -How to change the title of the document - -```ts -chrome.docTitle.change('My application title') -chrome.docTitle.change(['My application', 'My section']) -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.md b/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.md deleted file mode 100644 index 48e04b648e8d8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.md +++ /dev/null @@ -1,37 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeDocTitle](./kibana-plugin-core-public.chromedoctitle.md) - -## ChromeDocTitle interface - -APIs for accessing and updating the document title. - -Signature: - -```typescript -export interface ChromeDocTitle -``` - -## Example 1 - -How to change the title of the document - -```ts -chrome.docTitle.change('My application') -``` - -## Example 2 - -How to reset the title of the document to it's initial value - -```ts -chrome.docTitle.reset() -``` - -## Methods - -| Method | Description | -| --- | --- | -| [change(newTitle)](./kibana-plugin-core-public.chromedoctitle.change.md) | Changes the current document title. | -| [reset()](./kibana-plugin-core-public.chromedoctitle.reset.md) | Resets the document title to it's initial value. (meaning the one present in the title meta at application load.) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.reset.md b/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.reset.md deleted file mode 100644 index e11635fd6d3f8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.reset.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeDocTitle](./kibana-plugin-core-public.chromedoctitle.md) > [reset](./kibana-plugin-core-public.chromedoctitle.reset.md) - -## ChromeDocTitle.reset() method - -Resets the document title to it's initial value. (meaning the one present in the title meta at application load.) - -Signature: - -```typescript -reset(): void; -``` -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.appname.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.appname.md deleted file mode 100644 index 2ac957095c666..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.appname.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtension](./kibana-plugin-core-public.chromehelpextension.md) > [appName](./kibana-plugin-core-public.chromehelpextension.appname.md) - -## ChromeHelpExtension.appName property - -Provide your plugin's name to create a header for separation - -Signature: - -```typescript -appName: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.content.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.content.md deleted file mode 100644 index 68e05949e9b1b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.content.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtension](./kibana-plugin-core-public.chromehelpextension.md) > [content](./kibana-plugin-core-public.chromehelpextension.content.md) - -## ChromeHelpExtension.content property - -Custom content to occur below the list of links - -Signature: - -```typescript -content?: (element: HTMLDivElement, menuActions: ChromeHelpMenuActions) => () => void; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.links.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.links.md deleted file mode 100644 index 41a6b638a3360..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.links.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtension](./kibana-plugin-core-public.chromehelpextension.md) > [links](./kibana-plugin-core-public.chromehelpextension.links.md) - -## ChromeHelpExtension.links property - -Creates unified links for sending users to documentation, GitHub, Discuss, or a custom link/button - -Signature: - -```typescript -links?: ChromeHelpExtensionMenuLink[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.md deleted file mode 100644 index 0c038f81edc90..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextension.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtension](./kibana-plugin-core-public.chromehelpextension.md) - -## ChromeHelpExtension interface - - -Signature: - -```typescript -export interface ChromeHelpExtension -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [appName](./kibana-plugin-core-public.chromehelpextension.appname.md) | string | Provide your plugin's name to create a header for separation | -| [content?](./kibana-plugin-core-public.chromehelpextension.content.md) | (element: HTMLDivElement, menuActions: ChromeHelpMenuActions) => () => void | (Optional) Custom content to occur below the list of links | -| [links?](./kibana-plugin-core-public.chromehelpextension.links.md) | ChromeHelpExtensionMenuLink\[\] | (Optional) Creates unified links for sending users to documentation, GitHub, Discuss, or a custom link/button | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionlinkbase.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionlinkbase.md deleted file mode 100644 index 1faef45c0b2b7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionlinkbase.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionLinkBase](./kibana-plugin-core-public.chromehelpextensionlinkbase.md) - -## ChromeHelpExtensionLinkBase type - - -Signature: - -```typescript -export declare type ChromeHelpExtensionLinkBase = Pick; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.content.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.content.md deleted file mode 100644 index dc455ca43d24a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.content.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuCustomLink](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.md) > [content](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.content.md) - -## ChromeHelpExtensionMenuCustomLink.content property - -Content of the button (in lieu of `children`) - -Signature: - -```typescript -content: React.ReactNode; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.href.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.href.md deleted file mode 100644 index feb91acd6d915..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.href.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuCustomLink](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.md) > [href](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.href.md) - -## ChromeHelpExtensionMenuCustomLink.href property - -URL of the link - -Signature: - -```typescript -href: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.linktype.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.linktype.md deleted file mode 100644 index a02b219754042..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.linktype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuCustomLink](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.md) > [linkType](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.linktype.md) - -## ChromeHelpExtensionMenuCustomLink.linkType property - -Extend EuiButtonEmpty to provide extra functionality - -Signature: - -```typescript -linkType: 'custom'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.md deleted file mode 100644 index daf724c72c23e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenucustomlink.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuCustomLink](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.md) - -## ChromeHelpExtensionMenuCustomLink interface - - -Signature: - -```typescript -export interface ChromeHelpExtensionMenuCustomLink extends ChromeHelpExtensionLinkBase -``` -Extends: ChromeHelpExtensionLinkBase - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [content](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.content.md) | React.ReactNode | Content of the button (in lieu of children) | -| [href](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.href.md) | string | URL of the link | -| [linkType](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.linktype.md) | 'custom' | Extend EuiButtonEmpty to provide extra functionality | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.href.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.href.md deleted file mode 100644 index b6714c39a4699..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.href.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuDiscussLink](./kibana-plugin-core-public.chromehelpextensionmenudiscusslink.md) > [href](./kibana-plugin-core-public.chromehelpextensionmenudiscusslink.href.md) - -## ChromeHelpExtensionMenuDiscussLink.href property - -URL to discuss page. i.e. `https://discuss.elastic.co/c/${appName}` - -Signature: - -```typescript -href: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.linktype.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.linktype.md deleted file mode 100644 index 0141677b26a40..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.linktype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuDiscussLink](./kibana-plugin-core-public.chromehelpextensionmenudiscusslink.md) > [linkType](./kibana-plugin-core-public.chromehelpextensionmenudiscusslink.linktype.md) - -## ChromeHelpExtensionMenuDiscussLink.linkType property - -Creates a generic give feedback link with comment icon - -Signature: - -```typescript -linkType: 'discuss'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.md deleted file mode 100644 index 3dc32fcb6d87f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudiscusslink.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuDiscussLink](./kibana-plugin-core-public.chromehelpextensionmenudiscusslink.md) - -## ChromeHelpExtensionMenuDiscussLink interface - - -Signature: - -```typescript -export interface ChromeHelpExtensionMenuDiscussLink extends ChromeHelpExtensionLinkBase -``` -Extends: ChromeHelpExtensionLinkBase - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [href](./kibana-plugin-core-public.chromehelpextensionmenudiscusslink.href.md) | string | URL to discuss page. i.e. https://discuss.elastic.co/c/${appName} | -| [linkType](./kibana-plugin-core-public.chromehelpextensionmenudiscusslink.linktype.md) | 'discuss' | Creates a generic give feedback link with comment icon | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.href.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.href.md deleted file mode 100644 index 9897bc6fcd2f7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.href.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuDocumentationLink](./kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.md) > [href](./kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.href.md) - -## ChromeHelpExtensionMenuDocumentationLink.href property - -URL to documentation page. i.e. `${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/${appName}.html`, - -Signature: - -```typescript -href: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.linktype.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.linktype.md deleted file mode 100644 index b75a70f9518b3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.linktype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuDocumentationLink](./kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.md) > [linkType](./kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.linktype.md) - -## ChromeHelpExtensionMenuDocumentationLink.linkType property - -Creates a deep-link to app-specific documentation - -Signature: - -```typescript -linkType: 'documentation'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.md deleted file mode 100644 index d20b513b1c550..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuDocumentationLink](./kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.md) - -## ChromeHelpExtensionMenuDocumentationLink interface - - -Signature: - -```typescript -export interface ChromeHelpExtensionMenuDocumentationLink extends ChromeHelpExtensionLinkBase -``` -Extends: ChromeHelpExtensionLinkBase - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [href](./kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.href.md) | string | URL to documentation page. i.e. ${ELASTIC_WEBSITE_URL}guide/en/kibana/${DOC_LINK_VERSION}/${appName}.html, | -| [linkType](./kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.linktype.md) | 'documentation' | Creates a deep-link to app-specific documentation | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.labels.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.labels.md deleted file mode 100644 index 1976215e7243c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.labels.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuGitHubLink](./kibana-plugin-core-public.chromehelpextensionmenugithublink.md) > [labels](./kibana-plugin-core-public.chromehelpextensionmenugithublink.labels.md) - -## ChromeHelpExtensionMenuGitHubLink.labels property - -Include at least one app-specific label to be applied to the new github issue - -Signature: - -```typescript -labels: string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.linktype.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.linktype.md deleted file mode 100644 index b3df27213e5b7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.linktype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuGitHubLink](./kibana-plugin-core-public.chromehelpextensionmenugithublink.md) > [linkType](./kibana-plugin-core-public.chromehelpextensionmenugithublink.linktype.md) - -## ChromeHelpExtensionMenuGitHubLink.linkType property - -Creates a link to a new github issue in the Kibana repo - -Signature: - -```typescript -linkType: 'github'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.md deleted file mode 100644 index 56eee43d26902..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuGitHubLink](./kibana-plugin-core-public.chromehelpextensionmenugithublink.md) - -## ChromeHelpExtensionMenuGitHubLink interface - - -Signature: - -```typescript -export interface ChromeHelpExtensionMenuGitHubLink extends ChromeHelpExtensionLinkBase -``` -Extends: ChromeHelpExtensionLinkBase - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [labels](./kibana-plugin-core-public.chromehelpextensionmenugithublink.labels.md) | string\[\] | Include at least one app-specific label to be applied to the new github issue | -| [linkType](./kibana-plugin-core-public.chromehelpextensionmenugithublink.linktype.md) | 'github' | Creates a link to a new github issue in the Kibana repo | -| [title?](./kibana-plugin-core-public.chromehelpextensionmenugithublink.title.md) | string | (Optional) Provides initial text for the title of the issue | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.title.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.title.md deleted file mode 100644 index af6091f9e7252..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenugithublink.title.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuGitHubLink](./kibana-plugin-core-public.chromehelpextensionmenugithublink.md) > [title](./kibana-plugin-core-public.chromehelpextensionmenugithublink.title.md) - -## ChromeHelpExtensionMenuGitHubLink.title property - -Provides initial text for the title of the issue - -Signature: - -```typescript -title?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenulink.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenulink.md deleted file mode 100644 index cb7d795e3eb8e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpextensionmenulink.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpExtensionMenuLink](./kibana-plugin-core-public.chromehelpextensionmenulink.md) - -## ChromeHelpExtensionMenuLink type - - -Signature: - -```typescript -export declare type ChromeHelpExtensionMenuLink = ChromeHelpExtensionMenuGitHubLink | ChromeHelpExtensionMenuDiscussLink | ChromeHelpExtensionMenuDocumentationLink | ChromeHelpExtensionMenuCustomLink; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpmenuactions.hidehelpmenu.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpmenuactions.hidehelpmenu.md deleted file mode 100644 index bcd67a8fe6f21..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpmenuactions.hidehelpmenu.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpMenuActions](./kibana-plugin-core-public.chromehelpmenuactions.md) > [hideHelpMenu](./kibana-plugin-core-public.chromehelpmenuactions.hidehelpmenu.md) - -## ChromeHelpMenuActions.hideHelpMenu property - -Signature: - -```typescript -hideHelpMenu: () => void; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromehelpmenuactions.md b/docs/development/core/public/kibana-plugin-core-public.chromehelpmenuactions.md deleted file mode 100644 index f33581cda5879..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromehelpmenuactions.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeHelpMenuActions](./kibana-plugin-core-public.chromehelpmenuactions.md) - -## ChromeHelpMenuActions interface - - -Signature: - -```typescript -export interface ChromeHelpMenuActions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [hideHelpMenu](./kibana-plugin-core-public.chromehelpmenuactions.hidehelpmenu.md) | () => void | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.md b/docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.md deleted file mode 100644 index c0371078c28a4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavControl](./kibana-plugin-core-public.chromenavcontrol.md) - -## ChromeNavControl interface - - -Signature: - -```typescript -export interface ChromeNavControl -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [mount](./kibana-plugin-core-public.chromenavcontrol.mount.md) | MountPoint | | -| [order?](./kibana-plugin-core-public.chromenavcontrol.order.md) | number | (Optional) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.mount.md b/docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.mount.md deleted file mode 100644 index 911fbe2131b52..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.mount.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavControl](./kibana-plugin-core-public.chromenavcontrol.md) > [mount](./kibana-plugin-core-public.chromenavcontrol.mount.md) - -## ChromeNavControl.mount property - -Signature: - -```typescript -mount: MountPoint; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.order.md b/docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.order.md deleted file mode 100644 index ca6d865a68e4b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrol.order.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavControl](./kibana-plugin-core-public.chromenavcontrol.md) > [order](./kibana-plugin-core-public.chromenavcontrol.order.md) - -## ChromeNavControl.order property - -Signature: - -```typescript -order?: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.md b/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.md deleted file mode 100644 index 72018d46428a4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.md +++ /dev/null @@ -1,35 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavControls](./kibana-plugin-core-public.chromenavcontrols.md) - -## ChromeNavControls interface - -[APIs](./kibana-plugin-core-public.chromenavcontrols.md) for registering new controls to be displayed in the navigation bar. - -Signature: - -```typescript -export interface ChromeNavControls -``` - -## Example - -Register a left-side nav control rendered with React. - -```jsx -chrome.navControls.registerLeft({ - mount(targetDomElement) { - ReactDOM.mount(, targetDomElement); - return () => ReactDOM.unmountComponentAtNode(targetDomElement); - } -}) -``` - -## Methods - -| Method | Description | -| --- | --- | -| [registerCenter(navControl)](./kibana-plugin-core-public.chromenavcontrols.registercenter.md) | Register a nav control to be presented on the top-center side of the chrome header. | -| [registerLeft(navControl)](./kibana-plugin-core-public.chromenavcontrols.registerleft.md) | Register a nav control to be presented on the bottom-left side of the chrome header. | -| [registerRight(navControl)](./kibana-plugin-core-public.chromenavcontrols.registerright.md) | Register a nav control to be presented on the top-right side of the chrome header. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registercenter.md b/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registercenter.md deleted file mode 100644 index 68b243bf47f85..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registercenter.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavControls](./kibana-plugin-core-public.chromenavcontrols.md) > [registerCenter](./kibana-plugin-core-public.chromenavcontrols.registercenter.md) - -## ChromeNavControls.registerCenter() method - -Register a nav control to be presented on the top-center side of the chrome header. - -Signature: - -```typescript -registerCenter(navControl: ChromeNavControl): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| navControl | ChromeNavControl | | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registerleft.md b/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registerleft.md deleted file mode 100644 index ee0789c285f0b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registerleft.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavControls](./kibana-plugin-core-public.chromenavcontrols.md) > [registerLeft](./kibana-plugin-core-public.chromenavcontrols.registerleft.md) - -## ChromeNavControls.registerLeft() method - -Register a nav control to be presented on the bottom-left side of the chrome header. - -Signature: - -```typescript -registerLeft(navControl: ChromeNavControl): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| navControl | ChromeNavControl | | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registerright.md b/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registerright.md deleted file mode 100644 index 9091736c62eeb..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavcontrols.registerright.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavControls](./kibana-plugin-core-public.chromenavcontrols.md) > [registerRight](./kibana-plugin-core-public.chromenavcontrols.registerright.md) - -## ChromeNavControls.registerRight() method - -Register a nav control to be presented on the top-right side of the chrome header. - -Signature: - -```typescript -registerRight(navControl: ChromeNavControl): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| navControl | ChromeNavControl | | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.baseurl.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.baseurl.md deleted file mode 100644 index 88dc54cf823b9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.baseurl.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [baseUrl](./kibana-plugin-core-public.chromenavlink.baseurl.md) - -## ChromeNavLink.baseUrl property - -The base route used to open the root of an application. - -Signature: - -```typescript -readonly baseUrl: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.category.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.category.md deleted file mode 100644 index 1da313365f967..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.category.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [category](./kibana-plugin-core-public.chromenavlink.category.md) - -## ChromeNavLink.category property - -The category the app lives in - -Signature: - -```typescript -readonly category?: AppCategory; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.disabled.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.disabled.md deleted file mode 100644 index 2b4d22be187f9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.disabled.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [disabled](./kibana-plugin-core-public.chromenavlink.disabled.md) - -## ChromeNavLink.disabled property - -Disables a link from being clickable. - -Signature: - -```typescript -readonly disabled?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.euiicontype.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.euiicontype.md deleted file mode 100644 index e30e8262f40b2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.euiicontype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [euiIconType](./kibana-plugin-core-public.chromenavlink.euiicontype.md) - -## ChromeNavLink.euiIconType property - -A EUI iconType that will be used for the app's icon. This icon takes precedence over the `icon` property. - -Signature: - -```typescript -readonly euiIconType?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.hidden.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.hidden.md deleted file mode 100644 index 8f8be18fa7bfa..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.hidden.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [hidden](./kibana-plugin-core-public.chromenavlink.hidden.md) - -## ChromeNavLink.hidden property - -Hides a link from the navigation. - -Signature: - -```typescript -readonly hidden?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.href.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.href.md deleted file mode 100644 index f51fa7e5b1355..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.href.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [href](./kibana-plugin-core-public.chromenavlink.href.md) - -## ChromeNavLink.href property - -Settled state between `url`, `baseUrl`, and `active` - -Signature: - -```typescript -readonly href: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.icon.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.icon.md deleted file mode 100644 index dbc922b2a9547..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.icon.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [icon](./kibana-plugin-core-public.chromenavlink.icon.md) - -## ChromeNavLink.icon property - -A URL to an image file used as an icon. Used as a fallback if `euiIconType` is not provided. - -Signature: - -```typescript -readonly icon?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.id.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.id.md deleted file mode 100644 index a07f7963539ec..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [id](./kibana-plugin-core-public.chromenavlink.id.md) - -## ChromeNavLink.id property - -A unique identifier for looking up links. - -Signature: - -```typescript -readonly id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.md deleted file mode 100644 index 964f4d4b86aaa..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) - -## ChromeNavLink interface - - -Signature: - -```typescript -export interface ChromeNavLink -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [baseUrl](./kibana-plugin-core-public.chromenavlink.baseurl.md) | string | The base route used to open the root of an application. | -| [category?](./kibana-plugin-core-public.chromenavlink.category.md) | AppCategory | (Optional) The category the app lives in | -| [disabled?](./kibana-plugin-core-public.chromenavlink.disabled.md) | boolean | (Optional) Disables a link from being clickable. | -| [euiIconType?](./kibana-plugin-core-public.chromenavlink.euiicontype.md) | string | (Optional) A EUI iconType that will be used for the app's icon. This icon takes precedence over the icon property. | -| [hidden?](./kibana-plugin-core-public.chromenavlink.hidden.md) | boolean | (Optional) Hides a link from the navigation. | -| [href](./kibana-plugin-core-public.chromenavlink.href.md) | string | Settled state between url, baseUrl, and active | -| [icon?](./kibana-plugin-core-public.chromenavlink.icon.md) | string | (Optional) A URL to an image file used as an icon. Used as a fallback if euiIconType is not provided. | -| [id](./kibana-plugin-core-public.chromenavlink.id.md) | string | A unique identifier for looking up links. | -| [order?](./kibana-plugin-core-public.chromenavlink.order.md) | number | (Optional) An ordinal used to sort nav links relative to one another for display. | -| [title](./kibana-plugin-core-public.chromenavlink.title.md) | string | The title of the application. | -| [tooltip?](./kibana-plugin-core-public.chromenavlink.tooltip.md) | string | (Optional) A tooltip shown when hovering over an app link. | -| [url](./kibana-plugin-core-public.chromenavlink.url.md) | string | The route used to open the default path and the deep links of an application. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.order.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.order.md deleted file mode 100644 index 3597a619a8b20..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.order.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [order](./kibana-plugin-core-public.chromenavlink.order.md) - -## ChromeNavLink.order property - -An ordinal used to sort nav links relative to one another for display. - -Signature: - -```typescript -readonly order?: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.title.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.title.md deleted file mode 100644 index 43b1a08755aaf..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.title.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [title](./kibana-plugin-core-public.chromenavlink.title.md) - -## ChromeNavLink.title property - -The title of the application. - -Signature: - -```typescript -readonly title: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.tooltip.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.tooltip.md deleted file mode 100644 index 551667dbbb35e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.tooltip.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [tooltip](./kibana-plugin-core-public.chromenavlink.tooltip.md) - -## ChromeNavLink.tooltip property - -A tooltip shown when hovering over an app link. - -Signature: - -```typescript -readonly tooltip?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.url.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlink.url.md deleted file mode 100644 index b9d12e450df50..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlink.url.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) > [url](./kibana-plugin-core-public.chromenavlink.url.md) - -## ChromeNavLink.url property - -The route used to open the default path and the deep links of an application. - -Signature: - -```typescript -readonly url: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.enableforcedappswitchernavigation.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.enableforcedappswitchernavigation.md deleted file mode 100644 index 4f9b6aaada5db..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.enableforcedappswitchernavigation.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLinks](./kibana-plugin-core-public.chromenavlinks.md) > [enableForcedAppSwitcherNavigation](./kibana-plugin-core-public.chromenavlinks.enableforcedappswitchernavigation.md) - -## ChromeNavLinks.enableForcedAppSwitcherNavigation() method - -Enable forced navigation mode, which will trigger a page refresh when a nav link is clicked and only the hash is updated. - -Signature: - -```typescript -enableForcedAppSwitcherNavigation(): void; -``` -Returns: - -void - -## Remarks - -This is only necessary when rendering the status page in place of another app, as links to that app will set the current URL and change the hash, but the routes for the correct are not loaded so nothing will happen. https://github.com/elastic/kibana/pull/29770 - -Used only by status\_page plugin - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.get.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.get.md deleted file mode 100644 index 796d99b9b0e0c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.get.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLinks](./kibana-plugin-core-public.chromenavlinks.md) > [get](./kibana-plugin-core-public.chromenavlinks.get.md) - -## ChromeNavLinks.get() method - -Get the state of a navlink at this point in time. - -Signature: - -```typescript -get(id: string): ChromeNavLink | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -ChromeNavLink \| undefined - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getall.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getall.md deleted file mode 100644 index 08d5707fe3251..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getall.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLinks](./kibana-plugin-core-public.chromenavlinks.md) > [getAll](./kibana-plugin-core-public.chromenavlinks.getall.md) - -## ChromeNavLinks.getAll() method - -Get the current state of all navlinks. - -Signature: - -```typescript -getAll(): Array>; -``` -Returns: - -Array<Readonly<ChromeNavLink>> - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getforceappswitchernavigation_.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getforceappswitchernavigation_.md deleted file mode 100644 index 3b87790c37297..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getforceappswitchernavigation_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLinks](./kibana-plugin-core-public.chromenavlinks.md) > [getForceAppSwitcherNavigation$](./kibana-plugin-core-public.chromenavlinks.getforceappswitchernavigation_.md) - -## ChromeNavLinks.getForceAppSwitcherNavigation$() method - -An observable of the forced app switcher state. - -Signature: - -```typescript -getForceAppSwitcherNavigation$(): Observable; -``` -Returns: - -Observable<boolean> - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getnavlinks_.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getnavlinks_.md deleted file mode 100644 index 8ee5c0fb83081..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.getnavlinks_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLinks](./kibana-plugin-core-public.chromenavlinks.md) > [getNavLinks$](./kibana-plugin-core-public.chromenavlinks.getnavlinks_.md) - -## ChromeNavLinks.getNavLinks$() method - -Get an observable for a sorted list of navlinks. - -Signature: - -```typescript -getNavLinks$(): Observable>>; -``` -Returns: - -Observable<Array<Readonly<ChromeNavLink>>> - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.has.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.has.md deleted file mode 100644 index dfaae86a9d891..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.has.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLinks](./kibana-plugin-core-public.chromenavlinks.md) > [has](./kibana-plugin-core-public.chromenavlinks.has.md) - -## ChromeNavLinks.has() method - -Check whether or not a navlink exists. - -Signature: - -```typescript -has(id: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | - -Returns: - -boolean - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.md b/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.md deleted file mode 100644 index f71eb03d89d72..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromenavlinks.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeNavLinks](./kibana-plugin-core-public.chromenavlinks.md) - -## ChromeNavLinks interface - -[APIs](./kibana-plugin-core-public.chromenavlinks.md) for manipulating nav links. - -Signature: - -```typescript -export interface ChromeNavLinks -``` - -## Methods - -| Method | Description | -| --- | --- | -| [enableForcedAppSwitcherNavigation()](./kibana-plugin-core-public.chromenavlinks.enableforcedappswitchernavigation.md) | Enable forced navigation mode, which will trigger a page refresh when a nav link is clicked and only the hash is updated. | -| [get(id)](./kibana-plugin-core-public.chromenavlinks.get.md) | Get the state of a navlink at this point in time. | -| [getAll()](./kibana-plugin-core-public.chromenavlinks.getall.md) | Get the current state of all navlinks. | -| [getForceAppSwitcherNavigation$()](./kibana-plugin-core-public.chromenavlinks.getforceappswitchernavigation_.md) | An observable of the forced app switcher state. | -| [getNavLinks$()](./kibana-plugin-core-public.chromenavlinks.getnavlinks_.md) | Get an observable for a sorted list of navlinks. | -| [has(id)](./kibana-plugin-core-public.chromenavlinks.has.md) | Check whether or not a navlink exists. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.add.md b/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.add.md deleted file mode 100644 index 5c99c6bf7fbcb..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.add.md +++ /dev/null @@ -1,33 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeRecentlyAccessed](./kibana-plugin-core-public.chromerecentlyaccessed.md) > [add](./kibana-plugin-core-public.chromerecentlyaccessed.add.md) - -## ChromeRecentlyAccessed.add() method - -Adds a new item to the recently accessed history. - -Signature: - -```typescript -add(link: string, label: string, id: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| link | string | a relative URL to the resource (not including the ) | -| label | string | the label to display in the UI | -| id | string | a unique string used to de-duplicate the recently accessed list. | - -Returns: - -void - -## Example - - -```js -chrome.recentlyAccessed.add('/app/map/1234', 'Map 1234', '1234'); -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.get.md b/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.get.md deleted file mode 100644 index da696737b3bb7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.get.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeRecentlyAccessed](./kibana-plugin-core-public.chromerecentlyaccessed.md) > [get](./kibana-plugin-core-public.chromerecentlyaccessed.get.md) - -## ChromeRecentlyAccessed.get() method - -Gets an Array of the current recently accessed history. - -Signature: - -```typescript -get(): ChromeRecentlyAccessedHistoryItem[]; -``` -Returns: - -ChromeRecentlyAccessedHistoryItem\[\] - -## Example - - -```js -chrome.recentlyAccessed.get().forEach(console.log); -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.get_.md b/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.get_.md deleted file mode 100644 index 4655289642f99..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.get_.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeRecentlyAccessed](./kibana-plugin-core-public.chromerecentlyaccessed.md) > [get$](./kibana-plugin-core-public.chromerecentlyaccessed.get_.md) - -## ChromeRecentlyAccessed.get$() method - -Gets an Observable of the array of recently accessed history. - -Signature: - -```typescript -get$(): Observable; -``` -Returns: - -Observable<ChromeRecentlyAccessedHistoryItem\[\]> - -## Example - - -```js -chrome.recentlyAccessed.get$().subscribe(console.log); -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.md b/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.md deleted file mode 100644 index 4dad34fe86ed4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessed.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeRecentlyAccessed](./kibana-plugin-core-public.chromerecentlyaccessed.md) - -## ChromeRecentlyAccessed interface - -[APIs](./kibana-plugin-core-public.chromerecentlyaccessed.md) for recently accessed history. - -Signature: - -```typescript -export interface ChromeRecentlyAccessed -``` - -## Methods - -| Method | Description | -| --- | --- | -| [add(link, label, id)](./kibana-plugin-core-public.chromerecentlyaccessed.add.md) | Adds a new item to the recently accessed history. | -| [get()](./kibana-plugin-core-public.chromerecentlyaccessed.get.md) | Gets an Array of the current recently accessed history. | -| [get$()](./kibana-plugin-core-public.chromerecentlyaccessed.get_.md) | Gets an Observable of the array of recently accessed history. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.id.md b/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.id.md deleted file mode 100644 index daf72d7ebd01c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeRecentlyAccessedHistoryItem](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.md) > [id](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.id.md) - -## ChromeRecentlyAccessedHistoryItem.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.label.md b/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.label.md deleted file mode 100644 index 5f55522e4fdf4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.label.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeRecentlyAccessedHistoryItem](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.md) > [label](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.label.md) - -## ChromeRecentlyAccessedHistoryItem.label property - -Signature: - -```typescript -label: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.link.md b/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.link.md deleted file mode 100644 index f4b702ba30c96..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.link.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeRecentlyAccessedHistoryItem](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.md) > [link](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.link.md) - -## ChromeRecentlyAccessedHistoryItem.link property - -Signature: - -```typescript -link: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.md b/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.md deleted file mode 100644 index 3b67b41d37a35..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeRecentlyAccessedHistoryItem](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.md) - -## ChromeRecentlyAccessedHistoryItem interface - - -Signature: - -```typescript -export interface ChromeRecentlyAccessedHistoryItem -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.id.md) | string | | -| [label](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.label.md) | string | | -| [link](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.link.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.doctitle.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.doctitle.md deleted file mode 100644 index c42644eb149c8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.doctitle.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [docTitle](./kibana-plugin-core-public.chromestart.doctitle.md) - -## ChromeStart.docTitle property - -APIs for accessing and updating the document title. - -Signature: - -```typescript -docTitle: ChromeDocTitle; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.getbadge_.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.getbadge_.md deleted file mode 100644 index d3dc459bae9de..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.getbadge_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [getBadge$](./kibana-plugin-core-public.chromestart.getbadge_.md) - -## ChromeStart.getBadge$() method - -Get an observable of the current badge - -Signature: - -```typescript -getBadge$(): Observable; -``` -Returns: - -Observable<ChromeBadge \| undefined> - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.getbreadcrumbs_.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.getbreadcrumbs_.md deleted file mode 100644 index c4d3751549b16..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.getbreadcrumbs_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [getBreadcrumbs$](./kibana-plugin-core-public.chromestart.getbreadcrumbs_.md) - -## ChromeStart.getBreadcrumbs$() method - -Get an observable of the current list of breadcrumbs - -Signature: - -```typescript -getBreadcrumbs$(): Observable; -``` -Returns: - -Observable<ChromeBreadcrumb\[\]> - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.getbreadcrumbsappendextension_.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.getbreadcrumbsappendextension_.md deleted file mode 100644 index 21c12514debec..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.getbreadcrumbsappendextension_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [getBreadcrumbsAppendExtension$](./kibana-plugin-core-public.chromestart.getbreadcrumbsappendextension_.md) - -## ChromeStart.getBreadcrumbsAppendExtension$() method - -Get an observable of the current extension appended to breadcrumbs - -Signature: - -```typescript -getBreadcrumbsAppendExtension$(): Observable; -``` -Returns: - -Observable<ChromeBreadcrumbsAppendExtension \| undefined> - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.getcustomnavlink_.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.getcustomnavlink_.md deleted file mode 100644 index 59346a409562e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.getcustomnavlink_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [getCustomNavLink$](./kibana-plugin-core-public.chromestart.getcustomnavlink_.md) - -## ChromeStart.getCustomNavLink$() method - -Get an observable of the current custom nav link - -Signature: - -```typescript -getCustomNavLink$(): Observable | undefined>; -``` -Returns: - -Observable<Partial<ChromeNavLink> \| undefined> - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.gethelpextension_.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.gethelpextension_.md deleted file mode 100644 index 052bbe2630f70..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.gethelpextension_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [getHelpExtension$](./kibana-plugin-core-public.chromestart.gethelpextension_.md) - -## ChromeStart.getHelpExtension$() method - -Get an observable of the current custom help conttent - -Signature: - -```typescript -getHelpExtension$(): Observable; -``` -Returns: - -Observable<ChromeHelpExtension \| undefined> - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.getisnavdrawerlocked_.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.getisnavdrawerlocked_.md deleted file mode 100644 index 12aa71366aaac..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.getisnavdrawerlocked_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [getIsNavDrawerLocked$](./kibana-plugin-core-public.chromestart.getisnavdrawerlocked_.md) - -## ChromeStart.getIsNavDrawerLocked$() method - -Get an observable of the current locked state of the nav drawer. - -Signature: - -```typescript -getIsNavDrawerLocked$(): Observable; -``` -Returns: - -Observable<boolean> - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.getisvisible_.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.getisvisible_.md deleted file mode 100644 index 70a9c832926e1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.getisvisible_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [getIsVisible$](./kibana-plugin-core-public.chromestart.getisvisible_.md) - -## ChromeStart.getIsVisible$() method - -Get an observable of the current visibility state of the chrome. - -Signature: - -```typescript -getIsVisible$(): Observable; -``` -Returns: - -Observable<boolean> - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.hasheaderbanner_.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.hasheaderbanner_.md deleted file mode 100644 index 66dd1e2562f50..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.hasheaderbanner_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [hasHeaderBanner$](./kibana-plugin-core-public.chromestart.hasheaderbanner_.md) - -## ChromeStart.hasHeaderBanner$() method - -Get an observable of the current header banner presence state. - -Signature: - -```typescript -hasHeaderBanner$(): Observable; -``` -Returns: - -Observable<boolean> - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.md deleted file mode 100644 index 3e672fbc14d75..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.md +++ /dev/null @@ -1,67 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) - -## ChromeStart interface - -ChromeStart allows plugins to customize the global chrome header UI and enrich the UX with additional information about the current location of the browser. - -Signature: - -```typescript -export interface ChromeStart -``` - -## Remarks - -While ChromeStart exposes many APIs, they should be used sparingly and the developer should understand how they affect other plugins and applications. - -## Example 1 - -How to add a recently accessed item to the sidebar: - -```ts -core.chrome.recentlyAccessed.add('/app/map/1234', 'Map 1234', '1234'); -``` - -## Example 2 - -How to set the help dropdown extension: - -```tsx -core.chrome.setHelpExtension(elem => { - ReactDOM.render(, elem); - return () => ReactDOM.unmountComponentAtNode(elem); -}); -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [docTitle](./kibana-plugin-core-public.chromestart.doctitle.md) | ChromeDocTitle | APIs for accessing and updating the document title. | -| [navControls](./kibana-plugin-core-public.chromestart.navcontrols.md) | ChromeNavControls | [APIs](./kibana-plugin-core-public.chromenavcontrols.md) for registering new controls to be displayed in the navigation bar. | -| [navLinks](./kibana-plugin-core-public.chromestart.navlinks.md) | ChromeNavLinks | [APIs](./kibana-plugin-core-public.chromenavlinks.md) for manipulating nav links. | -| [recentlyAccessed](./kibana-plugin-core-public.chromestart.recentlyaccessed.md) | ChromeRecentlyAccessed | [APIs](./kibana-plugin-core-public.chromerecentlyaccessed.md) for recently accessed history. | - -## Methods - -| Method | Description | -| --- | --- | -| [getBadge$()](./kibana-plugin-core-public.chromestart.getbadge_.md) | Get an observable of the current badge | -| [getBreadcrumbs$()](./kibana-plugin-core-public.chromestart.getbreadcrumbs_.md) | Get an observable of the current list of breadcrumbs | -| [getBreadcrumbsAppendExtension$()](./kibana-plugin-core-public.chromestart.getbreadcrumbsappendextension_.md) | Get an observable of the current extension appended to breadcrumbs | -| [getCustomNavLink$()](./kibana-plugin-core-public.chromestart.getcustomnavlink_.md) | Get an observable of the current custom nav link | -| [getHelpExtension$()](./kibana-plugin-core-public.chromestart.gethelpextension_.md) | Get an observable of the current custom help conttent | -| [getIsNavDrawerLocked$()](./kibana-plugin-core-public.chromestart.getisnavdrawerlocked_.md) | Get an observable of the current locked state of the nav drawer. | -| [getIsVisible$()](./kibana-plugin-core-public.chromestart.getisvisible_.md) | Get an observable of the current visibility state of the chrome. | -| [hasHeaderBanner$()](./kibana-plugin-core-public.chromestart.hasheaderbanner_.md) | Get an observable of the current header banner presence state. | -| [setBadge(badge)](./kibana-plugin-core-public.chromestart.setbadge.md) | Override the current badge | -| [setBreadcrumbs(newBreadcrumbs)](./kibana-plugin-core-public.chromestart.setbreadcrumbs.md) | Override the current set of breadcrumbs | -| [setBreadcrumbsAppendExtension(breadcrumbsAppendExtension)](./kibana-plugin-core-public.chromestart.setbreadcrumbsappendextension.md) | Mount an element next to the last breadcrumb | -| [setCustomNavLink(newCustomNavLink)](./kibana-plugin-core-public.chromestart.setcustomnavlink.md) | Override the current set of custom nav link | -| [setHeaderBanner(headerBanner)](./kibana-plugin-core-public.chromestart.setheaderbanner.md) | Set the banner that will appear on top of the chrome header. | -| [setHelpExtension(helpExtension)](./kibana-plugin-core-public.chromestart.sethelpextension.md) | Override the current set of custom help content | -| [setHelpSupportUrl(url)](./kibana-plugin-core-public.chromestart.sethelpsupporturl.md) | Override the default support URL shown in the help menu | -| [setIsVisible(isVisible)](./kibana-plugin-core-public.chromestart.setisvisible.md) | Set the temporary visibility for the chrome. This does nothing if the chrome is hidden by default and should be used to hide the chrome for things like full-screen modes with an exit button. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.navcontrols.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.navcontrols.md deleted file mode 100644 index f2433d98066d9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.navcontrols.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [navControls](./kibana-plugin-core-public.chromestart.navcontrols.md) - -## ChromeStart.navControls property - -[APIs](./kibana-plugin-core-public.chromenavcontrols.md) for registering new controls to be displayed in the navigation bar. - -Signature: - -```typescript -navControls: ChromeNavControls; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.navlinks.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.navlinks.md deleted file mode 100644 index fb9222abbb211..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.navlinks.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [navLinks](./kibana-plugin-core-public.chromestart.navlinks.md) - -## ChromeStart.navLinks property - -[APIs](./kibana-plugin-core-public.chromenavlinks.md) for manipulating nav links. - -Signature: - -```typescript -navLinks: ChromeNavLinks; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.recentlyaccessed.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.recentlyaccessed.md deleted file mode 100644 index 4eabb5bf0ba23..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.recentlyaccessed.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [recentlyAccessed](./kibana-plugin-core-public.chromestart.recentlyaccessed.md) - -## ChromeStart.recentlyAccessed property - -[APIs](./kibana-plugin-core-public.chromerecentlyaccessed.md) for recently accessed history. - -Signature: - -```typescript -recentlyAccessed: ChromeRecentlyAccessed; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.setbadge.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.setbadge.md deleted file mode 100644 index 7e974b139d141..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.setbadge.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [setBadge](./kibana-plugin-core-public.chromestart.setbadge.md) - -## ChromeStart.setBadge() method - -Override the current badge - -Signature: - -```typescript -setBadge(badge?: ChromeBadge): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| badge | ChromeBadge | | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.setbreadcrumbs.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.setbreadcrumbs.md deleted file mode 100644 index f44e3e6cfd562..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.setbreadcrumbs.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [setBreadcrumbs](./kibana-plugin-core-public.chromestart.setbreadcrumbs.md) - -## ChromeStart.setBreadcrumbs() method - -Override the current set of breadcrumbs - -Signature: - -```typescript -setBreadcrumbs(newBreadcrumbs: ChromeBreadcrumb[]): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| newBreadcrumbs | ChromeBreadcrumb\[\] | | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.setbreadcrumbsappendextension.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.setbreadcrumbsappendextension.md deleted file mode 100644 index b8fa965f2726e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.setbreadcrumbsappendextension.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [setBreadcrumbsAppendExtension](./kibana-plugin-core-public.chromestart.setbreadcrumbsappendextension.md) - -## ChromeStart.setBreadcrumbsAppendExtension() method - -Mount an element next to the last breadcrumb - -Signature: - -```typescript -setBreadcrumbsAppendExtension(breadcrumbsAppendExtension?: ChromeBreadcrumbsAppendExtension): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| breadcrumbsAppendExtension | ChromeBreadcrumbsAppendExtension | | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.setcustomnavlink.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.setcustomnavlink.md deleted file mode 100644 index 7b100a25a4b2b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.setcustomnavlink.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [setCustomNavLink](./kibana-plugin-core-public.chromestart.setcustomnavlink.md) - -## ChromeStart.setCustomNavLink() method - -Override the current set of custom nav link - -Signature: - -```typescript -setCustomNavLink(newCustomNavLink?: Partial): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| newCustomNavLink | Partial<ChromeNavLink> | | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.setheaderbanner.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.setheaderbanner.md deleted file mode 100644 index 75f711c0bf10b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.setheaderbanner.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [setHeaderBanner](./kibana-plugin-core-public.chromestart.setheaderbanner.md) - -## ChromeStart.setHeaderBanner() method - -Set the banner that will appear on top of the chrome header. - -Signature: - -```typescript -setHeaderBanner(headerBanner?: ChromeUserBanner): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| headerBanner | ChromeUserBanner | | - -Returns: - -void - -## Remarks - -Using `undefined` when invoking this API will remove the banner. - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.sethelpextension.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.sethelpextension.md deleted file mode 100644 index c2bc691349f3c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.sethelpextension.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [setHelpExtension](./kibana-plugin-core-public.chromestart.sethelpextension.md) - -## ChromeStart.setHelpExtension() method - -Override the current set of custom help content - -Signature: - -```typescript -setHelpExtension(helpExtension?: ChromeHelpExtension): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| helpExtension | ChromeHelpExtension | | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.sethelpsupporturl.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.sethelpsupporturl.md deleted file mode 100644 index baeb37a89ca44..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.sethelpsupporturl.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [setHelpSupportUrl](./kibana-plugin-core-public.chromestart.sethelpsupporturl.md) - -## ChromeStart.setHelpSupportUrl() method - -Override the default support URL shown in the help menu - -Signature: - -```typescript -setHelpSupportUrl(url: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| url | string | The updated support URL | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromestart.setisvisible.md b/docs/development/core/public/kibana-plugin-core-public.chromestart.setisvisible.md deleted file mode 100644 index 9c8cc737bea4f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromestart.setisvisible.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeStart](./kibana-plugin-core-public.chromestart.md) > [setIsVisible](./kibana-plugin-core-public.chromestart.setisvisible.md) - -## ChromeStart.setIsVisible() method - -Set the temporary visibility for the chrome. This does nothing if the chrome is hidden by default and should be used to hide the chrome for things like full-screen modes with an exit button. - -Signature: - -```typescript -setIsVisible(isVisible: boolean): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| isVisible | boolean | | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.chromeuserbanner.content.md b/docs/development/core/public/kibana-plugin-core-public.chromeuserbanner.content.md deleted file mode 100644 index 7a77fdc6223de..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromeuserbanner.content.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeUserBanner](./kibana-plugin-core-public.chromeuserbanner.md) > [content](./kibana-plugin-core-public.chromeuserbanner.content.md) - -## ChromeUserBanner.content property - -Signature: - -```typescript -content: MountPoint; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.chromeuserbanner.md b/docs/development/core/public/kibana-plugin-core-public.chromeuserbanner.md deleted file mode 100644 index 0417197ab55f3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.chromeuserbanner.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeUserBanner](./kibana-plugin-core-public.chromeuserbanner.md) - -## ChromeUserBanner interface - - -Signature: - -```typescript -export interface ChromeUserBanner -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [content](./kibana-plugin-core-public.chromeuserbanner.content.md) | MountPoint<HTMLDivElement> | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.coresetup.analytics.md b/docs/development/core/public/kibana-plugin-core-public.coresetup.analytics.md deleted file mode 100644 index 209a4e862589b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.coresetup.analytics.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreSetup](./kibana-plugin-core-public.coresetup.md) > [analytics](./kibana-plugin-core-public.coresetup.analytics.md) - -## CoreSetup.analytics property - - -Signature: - -```typescript -analytics: AnalyticsServiceSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.coresetup.application.md b/docs/development/core/public/kibana-plugin-core-public.coresetup.application.md deleted file mode 100644 index 70a1f3780577c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.coresetup.application.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreSetup](./kibana-plugin-core-public.coresetup.md) > [application](./kibana-plugin-core-public.coresetup.application.md) - -## CoreSetup.application property - -[ApplicationSetup](./kibana-plugin-core-public.applicationsetup.md) - -Signature: - -```typescript -application: ApplicationSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.coresetup.executioncontext.md b/docs/development/core/public/kibana-plugin-core-public.coresetup.executioncontext.md deleted file mode 100644 index be5689ad7b080..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.coresetup.executioncontext.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreSetup](./kibana-plugin-core-public.coresetup.md) > [executionContext](./kibana-plugin-core-public.coresetup.executioncontext.md) - -## CoreSetup.executionContext property - -[ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md) - -Signature: - -```typescript -executionContext: ExecutionContextSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.coresetup.fatalerrors.md b/docs/development/core/public/kibana-plugin-core-public.coresetup.fatalerrors.md deleted file mode 100644 index 86f734c4b5c06..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.coresetup.fatalerrors.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreSetup](./kibana-plugin-core-public.coresetup.md) > [fatalErrors](./kibana-plugin-core-public.coresetup.fatalerrors.md) - -## CoreSetup.fatalErrors property - -[FatalErrorsSetup](./kibana-plugin-core-public.fatalerrorssetup.md) - -Signature: - -```typescript -fatalErrors: FatalErrorsSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.coresetup.getstartservices.md b/docs/development/core/public/kibana-plugin-core-public.coresetup.getstartservices.md deleted file mode 100644 index 8664ad0e2a0e5..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.coresetup.getstartservices.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreSetup](./kibana-plugin-core-public.coresetup.md) > [getStartServices](./kibana-plugin-core-public.coresetup.getstartservices.md) - -## CoreSetup.getStartServices property - -[StartServicesAccessor](./kibana-plugin-core-public.startservicesaccessor.md) - -Signature: - -```typescript -getStartServices: StartServicesAccessor; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.coresetup.http.md b/docs/development/core/public/kibana-plugin-core-public.coresetup.http.md deleted file mode 100644 index d9b2599b0f80a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.coresetup.http.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreSetup](./kibana-plugin-core-public.coresetup.md) > [http](./kibana-plugin-core-public.coresetup.http.md) - -## CoreSetup.http property - -[HttpSetup](./kibana-plugin-core-public.httpsetup.md) - -Signature: - -```typescript -http: HttpSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.coresetup.injectedmetadata.md b/docs/development/core/public/kibana-plugin-core-public.coresetup.injectedmetadata.md deleted file mode 100644 index 661702f2d466e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.coresetup.injectedmetadata.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreSetup](./kibana-plugin-core-public.coresetup.md) > [injectedMetadata](./kibana-plugin-core-public.coresetup.injectedmetadata.md) - -## CoreSetup.injectedMetadata property - - -Signature: - -```typescript -injectedMetadata: InjectedMetadataSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.coresetup.md b/docs/development/core/public/kibana-plugin-core-public.coresetup.md deleted file mode 100644 index 051aa0218eca7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.coresetup.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreSetup](./kibana-plugin-core-public.coresetup.md) - -## CoreSetup interface - -Core services exposed to the `Plugin` setup lifecycle - -Signature: - -```typescript -export interface CoreSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [analytics](./kibana-plugin-core-public.coresetup.analytics.md) | AnalyticsServiceSetup | | -| [application](./kibana-plugin-core-public.coresetup.application.md) | ApplicationSetup | [ApplicationSetup](./kibana-plugin-core-public.applicationsetup.md) | -| [executionContext](./kibana-plugin-core-public.coresetup.executioncontext.md) | ExecutionContextSetup | [ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md) | -| [fatalErrors](./kibana-plugin-core-public.coresetup.fatalerrors.md) | FatalErrorsSetup | [FatalErrorsSetup](./kibana-plugin-core-public.fatalerrorssetup.md) | -| [getStartServices](./kibana-plugin-core-public.coresetup.getstartservices.md) | StartServicesAccessor<TPluginsStart, TStart> | [StartServicesAccessor](./kibana-plugin-core-public.startservicesaccessor.md) | -| [http](./kibana-plugin-core-public.coresetup.http.md) | HttpSetup | [HttpSetup](./kibana-plugin-core-public.httpsetup.md) | -| [injectedMetadata](./kibana-plugin-core-public.coresetup.injectedmetadata.md) | InjectedMetadataSetup | | -| [notifications](./kibana-plugin-core-public.coresetup.notifications.md) | NotificationsSetup | [NotificationsSetup](./kibana-plugin-core-public.notificationssetup.md) | -| [theme](./kibana-plugin-core-public.coresetup.theme.md) | ThemeServiceSetup | | -| [uiSettings](./kibana-plugin-core-public.coresetup.uisettings.md) | IUiSettingsClient | [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.coresetup.notifications.md b/docs/development/core/public/kibana-plugin-core-public.coresetup.notifications.md deleted file mode 100644 index 9f5770539c83e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.coresetup.notifications.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreSetup](./kibana-plugin-core-public.coresetup.md) > [notifications](./kibana-plugin-core-public.coresetup.notifications.md) - -## CoreSetup.notifications property - -[NotificationsSetup](./kibana-plugin-core-public.notificationssetup.md) - -Signature: - -```typescript -notifications: NotificationsSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.coresetup.theme.md b/docs/development/core/public/kibana-plugin-core-public.coresetup.theme.md deleted file mode 100644 index d1db31894563e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.coresetup.theme.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreSetup](./kibana-plugin-core-public.coresetup.md) > [theme](./kibana-plugin-core-public.coresetup.theme.md) - -## CoreSetup.theme property - - -Signature: - -```typescript -theme: ThemeServiceSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.coresetup.uisettings.md b/docs/development/core/public/kibana-plugin-core-public.coresetup.uisettings.md deleted file mode 100644 index 60a7a2a984ba8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.coresetup.uisettings.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreSetup](./kibana-plugin-core-public.coresetup.md) > [uiSettings](./kibana-plugin-core-public.coresetup.uisettings.md) - -## CoreSetup.uiSettings property - -[IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) - -Signature: - -```typescript -uiSettings: IUiSettingsClient; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.analytics.md b/docs/development/core/public/kibana-plugin-core-public.corestart.analytics.md deleted file mode 100644 index 0a12fa8e26164..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.analytics.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [analytics](./kibana-plugin-core-public.corestart.analytics.md) - -## CoreStart.analytics property - - -Signature: - -```typescript -analytics: AnalyticsServiceStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.application.md b/docs/development/core/public/kibana-plugin-core-public.corestart.application.md deleted file mode 100644 index 95c1360098afe..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.application.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [application](./kibana-plugin-core-public.corestart.application.md) - -## CoreStart.application property - -[ApplicationStart](./kibana-plugin-core-public.applicationstart.md) - -Signature: - -```typescript -application: ApplicationStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.chrome.md b/docs/development/core/public/kibana-plugin-core-public.corestart.chrome.md deleted file mode 100644 index 38d72c54db264..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.chrome.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [chrome](./kibana-plugin-core-public.corestart.chrome.md) - -## CoreStart.chrome property - -[ChromeStart](./kibana-plugin-core-public.chromestart.md) - -Signature: - -```typescript -chrome: ChromeStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.deprecations.md b/docs/development/core/public/kibana-plugin-core-public.corestart.deprecations.md deleted file mode 100644 index 624c4868d54a7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.deprecations.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [deprecations](./kibana-plugin-core-public.corestart.deprecations.md) - -## CoreStart.deprecations property - -[DeprecationsServiceStart](./kibana-plugin-core-public.deprecationsservicestart.md) - -Signature: - -```typescript -deprecations: DeprecationsServiceStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.doclinks.md b/docs/development/core/public/kibana-plugin-core-public.corestart.doclinks.md deleted file mode 100644 index 014e40b3e2203..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.doclinks.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [docLinks](./kibana-plugin-core-public.corestart.doclinks.md) - -## CoreStart.docLinks property - - -Signature: - -```typescript -docLinks: DocLinksStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.executioncontext.md b/docs/development/core/public/kibana-plugin-core-public.corestart.executioncontext.md deleted file mode 100644 index 4a2239ee6a738..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.executioncontext.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [executionContext](./kibana-plugin-core-public.corestart.executioncontext.md) - -## CoreStart.executionContext property - -[ExecutionContextStart](./kibana-plugin-core-public.executioncontextstart.md) - -Signature: - -```typescript -executionContext: ExecutionContextStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.fatalerrors.md b/docs/development/core/public/kibana-plugin-core-public.corestart.fatalerrors.md deleted file mode 100644 index 609d710618386..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.fatalerrors.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [fatalErrors](./kibana-plugin-core-public.corestart.fatalerrors.md) - -## CoreStart.fatalErrors property - -[FatalErrorsStart](./kibana-plugin-core-public.fatalerrorsstart.md) - -Signature: - -```typescript -fatalErrors: FatalErrorsStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.http.md b/docs/development/core/public/kibana-plugin-core-public.corestart.http.md deleted file mode 100644 index b2123d149762d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.http.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [http](./kibana-plugin-core-public.corestart.http.md) - -## CoreStart.http property - -[HttpStart](./kibana-plugin-core-public.httpstart.md) - -Signature: - -```typescript -http: HttpStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.i18n.md b/docs/development/core/public/kibana-plugin-core-public.corestart.i18n.md deleted file mode 100644 index 22ded9881e57e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.i18n.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [i18n](./kibana-plugin-core-public.corestart.i18n.md) - -## CoreStart.i18n property - -[I18nStart](./kibana-plugin-core-public.i18nstart.md) - -Signature: - -```typescript -i18n: I18nStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.injectedmetadata.md b/docs/development/core/public/kibana-plugin-core-public.corestart.injectedmetadata.md deleted file mode 100644 index 57fadf8ea3354..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.injectedmetadata.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [injectedMetadata](./kibana-plugin-core-public.corestart.injectedmetadata.md) - -## CoreStart.injectedMetadata property - - -Signature: - -```typescript -injectedMetadata: InjectedMetadataStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.md b/docs/development/core/public/kibana-plugin-core-public.corestart.md deleted file mode 100644 index 3ced931f53c7e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.md +++ /dev/null @@ -1,34 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) - -## CoreStart interface - -Core services exposed to the `Plugin` start lifecycle - -Signature: - -```typescript -export interface CoreStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [analytics](./kibana-plugin-core-public.corestart.analytics.md) | AnalyticsServiceStart | | -| [application](./kibana-plugin-core-public.corestart.application.md) | ApplicationStart | [ApplicationStart](./kibana-plugin-core-public.applicationstart.md) | -| [chrome](./kibana-plugin-core-public.corestart.chrome.md) | ChromeStart | [ChromeStart](./kibana-plugin-core-public.chromestart.md) | -| [deprecations](./kibana-plugin-core-public.corestart.deprecations.md) | DeprecationsServiceStart | [DeprecationsServiceStart](./kibana-plugin-core-public.deprecationsservicestart.md) | -| [docLinks](./kibana-plugin-core-public.corestart.doclinks.md) | DocLinksStart | | -| [executionContext](./kibana-plugin-core-public.corestart.executioncontext.md) | ExecutionContextStart | [ExecutionContextStart](./kibana-plugin-core-public.executioncontextstart.md) | -| [fatalErrors](./kibana-plugin-core-public.corestart.fatalerrors.md) | FatalErrorsStart | [FatalErrorsStart](./kibana-plugin-core-public.fatalerrorsstart.md) | -| [http](./kibana-plugin-core-public.corestart.http.md) | HttpStart | [HttpStart](./kibana-plugin-core-public.httpstart.md) | -| [i18n](./kibana-plugin-core-public.corestart.i18n.md) | I18nStart | [I18nStart](./kibana-plugin-core-public.i18nstart.md) | -| [injectedMetadata](./kibana-plugin-core-public.corestart.injectedmetadata.md) | InjectedMetadataStart | | -| [notifications](./kibana-plugin-core-public.corestart.notifications.md) | NotificationsStart | [NotificationsStart](./kibana-plugin-core-public.notificationsstart.md) | -| [overlays](./kibana-plugin-core-public.corestart.overlays.md) | OverlayStart | [OverlayStart](./kibana-plugin-core-public.overlaystart.md) | -| [savedObjects](./kibana-plugin-core-public.corestart.savedobjects.md) | SavedObjectsStart | [SavedObjectsStart](./kibana-plugin-core-public.savedobjectsstart.md) | -| [theme](./kibana-plugin-core-public.corestart.theme.md) | ThemeServiceStart | | -| [uiSettings](./kibana-plugin-core-public.corestart.uisettings.md) | IUiSettingsClient | [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.notifications.md b/docs/development/core/public/kibana-plugin-core-public.corestart.notifications.md deleted file mode 100644 index 4e4e509e88e81..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.notifications.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [notifications](./kibana-plugin-core-public.corestart.notifications.md) - -## CoreStart.notifications property - -[NotificationsStart](./kibana-plugin-core-public.notificationsstart.md) - -Signature: - -```typescript -notifications: NotificationsStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.overlays.md b/docs/development/core/public/kibana-plugin-core-public.corestart.overlays.md deleted file mode 100644 index d65ac50b495ba..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.overlays.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [overlays](./kibana-plugin-core-public.corestart.overlays.md) - -## CoreStart.overlays property - -[OverlayStart](./kibana-plugin-core-public.overlaystart.md) - -Signature: - -```typescript -overlays: OverlayStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.savedobjects.md b/docs/development/core/public/kibana-plugin-core-public.corestart.savedobjects.md deleted file mode 100644 index 5216367abe293..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.savedobjects.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [savedObjects](./kibana-plugin-core-public.corestart.savedobjects.md) - -## CoreStart.savedObjects property - -[SavedObjectsStart](./kibana-plugin-core-public.savedobjectsstart.md) - -Signature: - -```typescript -savedObjects: SavedObjectsStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.theme.md b/docs/development/core/public/kibana-plugin-core-public.corestart.theme.md deleted file mode 100644 index 6482581805b46..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.theme.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [theme](./kibana-plugin-core-public.corestart.theme.md) - -## CoreStart.theme property - - -Signature: - -```typescript -theme: ThemeServiceStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.corestart.uisettings.md b/docs/development/core/public/kibana-plugin-core-public.corestart.uisettings.md deleted file mode 100644 index 48348a5843963..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.corestart.uisettings.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [CoreStart](./kibana-plugin-core-public.corestart.md) > [uiSettings](./kibana-plugin-core-public.corestart.uisettings.md) - -## CoreStart.uiSettings property - -[IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) - -Signature: - -```typescript -uiSettings: IUiSettingsClient; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.getalldeprecations.md b/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.getalldeprecations.md deleted file mode 100644 index 8175da8a1893a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.getalldeprecations.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [DeprecationsServiceStart](./kibana-plugin-core-public.deprecationsservicestart.md) > [getAllDeprecations](./kibana-plugin-core-public.deprecationsservicestart.getalldeprecations.md) - -## DeprecationsServiceStart.getAllDeprecations property - -Grabs deprecations details for all domains. - -Signature: - -```typescript -getAllDeprecations: () => Promise; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.getdeprecations.md b/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.getdeprecations.md deleted file mode 100644 index 6e3472b7c3fe3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.getdeprecations.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [DeprecationsServiceStart](./kibana-plugin-core-public.deprecationsservicestart.md) > [getDeprecations](./kibana-plugin-core-public.deprecationsservicestart.getdeprecations.md) - -## DeprecationsServiceStart.getDeprecations property - -Grabs deprecations for a specific domain. - -Signature: - -```typescript -getDeprecations: (domainId: string) => Promise; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.isdeprecationresolvable.md b/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.isdeprecationresolvable.md deleted file mode 100644 index 842761f6b7cea..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.isdeprecationresolvable.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [DeprecationsServiceStart](./kibana-plugin-core-public.deprecationsservicestart.md) > [isDeprecationResolvable](./kibana-plugin-core-public.deprecationsservicestart.isdeprecationresolvable.md) - -## DeprecationsServiceStart.isDeprecationResolvable property - -Returns a boolean if the provided deprecation can be automatically resolvable. - -Signature: - -```typescript -isDeprecationResolvable: (details: DomainDeprecationDetails) => boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.md b/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.md deleted file mode 100644 index bfc1d78f4d045..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [DeprecationsServiceStart](./kibana-plugin-core-public.deprecationsservicestart.md) - -## DeprecationsServiceStart interface - -DeprecationsService provides methods to fetch domain deprecation details from the Kibana server. - -Signature: - -```typescript -export interface DeprecationsServiceStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [getAllDeprecations](./kibana-plugin-core-public.deprecationsservicestart.getalldeprecations.md) | () => Promise<DomainDeprecationDetails\[\]> | Grabs deprecations details for all domains. | -| [getDeprecations](./kibana-plugin-core-public.deprecationsservicestart.getdeprecations.md) | (domainId: string) => Promise<DomainDeprecationDetails\[\]> | Grabs deprecations for a specific domain. | -| [isDeprecationResolvable](./kibana-plugin-core-public.deprecationsservicestart.isdeprecationresolvable.md) | (details: DomainDeprecationDetails) => boolean | Returns a boolean if the provided deprecation can be automatically resolvable. | -| [resolveDeprecation](./kibana-plugin-core-public.deprecationsservicestart.resolvedeprecation.md) | (details: DomainDeprecationDetails) => Promise<ResolveDeprecationResponse> | Calls the correctiveActions.api to automatically resolve the depprecation. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.resolvedeprecation.md b/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.resolvedeprecation.md deleted file mode 100644 index fae623fed3cc2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.deprecationsservicestart.resolvedeprecation.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [DeprecationsServiceStart](./kibana-plugin-core-public.deprecationsservicestart.md) > [resolveDeprecation](./kibana-plugin-core-public.deprecationsservicestart.resolvedeprecation.md) - -## DeprecationsServiceStart.resolveDeprecation property - -Calls the correctiveActions.api to automatically resolve the depprecation. - -Signature: - -```typescript -resolveDeprecation: (details: DomainDeprecationDetails) => Promise; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.errortoastoptions.md b/docs/development/core/public/kibana-plugin-core-public.errortoastoptions.md deleted file mode 100644 index c2bddc58d9c3b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.errortoastoptions.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ErrorToastOptions](./kibana-plugin-core-public.errortoastoptions.md) - -## ErrorToastOptions interface - -Options available for [IToasts](./kibana-plugin-core-public.itoasts.md) error APIs. - -Signature: - -```typescript -export interface ErrorToastOptions extends ToastOptions -``` -Extends: ToastOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [title](./kibana-plugin-core-public.errortoastoptions.title.md) | string | The title of the toast and the dialog when expanding the message. | -| [toastMessage?](./kibana-plugin-core-public.errortoastoptions.toastmessage.md) | string | (Optional) The message to be shown in the toast. If this is not specified the error's message will be shown in the toast instead. Overwriting that message can be used to provide more user-friendly toasts. If you specify this, the error message will still be shown in the detailed error modal. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.errortoastoptions.title.md b/docs/development/core/public/kibana-plugin-core-public.errortoastoptions.title.md deleted file mode 100644 index bad316896cf5c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.errortoastoptions.title.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ErrorToastOptions](./kibana-plugin-core-public.errortoastoptions.md) > [title](./kibana-plugin-core-public.errortoastoptions.title.md) - -## ErrorToastOptions.title property - -The title of the toast and the dialog when expanding the message. - -Signature: - -```typescript -title: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.errortoastoptions.toastmessage.md b/docs/development/core/public/kibana-plugin-core-public.errortoastoptions.toastmessage.md deleted file mode 100644 index a96143a94b211..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.errortoastoptions.toastmessage.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ErrorToastOptions](./kibana-plugin-core-public.errortoastoptions.md) > [toastMessage](./kibana-plugin-core-public.errortoastoptions.toastmessage.md) - -## ErrorToastOptions.toastMessage property - -The message to be shown in the toast. If this is not specified the error's message will be shown in the toast instead. Overwriting that message can be used to provide more user-friendly toasts. If you specify this, the error message will still be shown in the detailed error modal. - -Signature: - -```typescript -toastMessage?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.clear.md b/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.clear.md deleted file mode 100644 index 94936b94d0710..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.clear.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md) > [clear](./kibana-plugin-core-public.executioncontextsetup.clear.md) - -## ExecutionContextSetup.clear() method - -clears the context - -Signature: - -```typescript -clear(): void; -``` -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.context_.md b/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.context_.md deleted file mode 100644 index d6c74db6d603e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.context_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md) > [context$](./kibana-plugin-core-public.executioncontextsetup.context_.md) - -## ExecutionContextSetup.context$ property - -The current context observable - -Signature: - -```typescript -context$: Observable; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.get.md b/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.get.md deleted file mode 100644 index 65e9b1218649d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.get.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md) > [get](./kibana-plugin-core-public.executioncontextsetup.get.md) - -## ExecutionContextSetup.get() method - -Get the current top level context - -Signature: - -```typescript -get(): KibanaExecutionContext; -``` -Returns: - -KibanaExecutionContext - diff --git a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.getaslabels.md b/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.getaslabels.md deleted file mode 100644 index 0f0bda4e2913e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.getaslabels.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md) > [getAsLabels](./kibana-plugin-core-public.executioncontextsetup.getaslabels.md) - -## ExecutionContextSetup.getAsLabels() method - -returns apm labels - -Signature: - -```typescript -getAsLabels(): Labels; -``` -Returns: - -Labels - diff --git a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.md b/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.md deleted file mode 100644 index 01581d2e80a5c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md) - -## ExecutionContextSetup interface - -Kibana execution context. Used to provide execution context to Elasticsearch, reporting, performance monitoring, etc. - -Signature: - -```typescript -export interface ExecutionContextSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [context$](./kibana-plugin-core-public.executioncontextsetup.context_.md) | Observable<KibanaExecutionContext> | The current context observable | - -## Methods - -| Method | Description | -| --- | --- | -| [clear()](./kibana-plugin-core-public.executioncontextsetup.clear.md) | clears the context | -| [get()](./kibana-plugin-core-public.executioncontextsetup.get.md) | Get the current top level context | -| [getAsLabels()](./kibana-plugin-core-public.executioncontextsetup.getaslabels.md) | returns apm labels | -| [set(c$)](./kibana-plugin-core-public.executioncontextsetup.set.md) | Set the current top level context | -| [withGlobalContext(context)](./kibana-plugin-core-public.executioncontextsetup.withglobalcontext.md) | merges the current top level context with the specific event context | - diff --git a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.set.md b/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.set.md deleted file mode 100644 index e3dcea78c827a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.set.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md) > [set](./kibana-plugin-core-public.executioncontextsetup.set.md) - -## ExecutionContextSetup.set() method - -Set the current top level context - -Signature: - -```typescript -set(c$: KibanaExecutionContext): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| c$ | KibanaExecutionContext | | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.withglobalcontext.md b/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.withglobalcontext.md deleted file mode 100644 index 574d0fd989750..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.executioncontextsetup.withglobalcontext.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md) > [withGlobalContext](./kibana-plugin-core-public.executioncontextsetup.withglobalcontext.md) - -## ExecutionContextSetup.withGlobalContext() method - -merges the current top level context with the specific event context - -Signature: - -```typescript -withGlobalContext(context?: KibanaExecutionContext): KibanaExecutionContext; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | KibanaExecutionContext | | - -Returns: - -KibanaExecutionContext - diff --git a/docs/development/core/public/kibana-plugin-core-public.executioncontextstart.md b/docs/development/core/public/kibana-plugin-core-public.executioncontextstart.md deleted file mode 100644 index 0d210ba5bb1c4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.executioncontextstart.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ExecutionContextStart](./kibana-plugin-core-public.executioncontextstart.md) - -## ExecutionContextStart type - -See [ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md). - -Signature: - -```typescript -export declare type ExecutionContextStart = ExecutionContextSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.md b/docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.md deleted file mode 100644 index 9b2803e4f12ea..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [FatalErrorInfo](./kibana-plugin-core-public.fatalerrorinfo.md) - -## FatalErrorInfo interface - -Represents the `message` and `stack` of a fatal Error - -Signature: - -```typescript -export interface FatalErrorInfo -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [message](./kibana-plugin-core-public.fatalerrorinfo.message.md) | string | | -| [stack](./kibana-plugin-core-public.fatalerrorinfo.stack.md) | string \| undefined | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.message.md b/docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.message.md deleted file mode 100644 index c623f7e6bf910..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.message.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [FatalErrorInfo](./kibana-plugin-core-public.fatalerrorinfo.md) > [message](./kibana-plugin-core-public.fatalerrorinfo.message.md) - -## FatalErrorInfo.message property - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.stack.md b/docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.stack.md deleted file mode 100644 index 5f8052be6a77a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.fatalerrorinfo.stack.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [FatalErrorInfo](./kibana-plugin-core-public.fatalerrorinfo.md) > [stack](./kibana-plugin-core-public.fatalerrorinfo.stack.md) - -## FatalErrorInfo.stack property - -Signature: - -```typescript -stack: string | undefined; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.add.md b/docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.add.md deleted file mode 100644 index 0b2a064a4c7df..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.add.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [FatalErrorsSetup](./kibana-plugin-core-public.fatalerrorssetup.md) > [add](./kibana-plugin-core-public.fatalerrorssetup.add.md) - -## FatalErrorsSetup.add property - -Add a new fatal error. This will stop the Kibana Public Core and display a fatal error screen with details about the Kibana build and the error. - -Signature: - -```typescript -add: (error: string | Error, source?: string) => never; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.get_.md b/docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.get_.md deleted file mode 100644 index 15bf94d5b7cd6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.get_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [FatalErrorsSetup](./kibana-plugin-core-public.fatalerrorssetup.md) > [get$](./kibana-plugin-core-public.fatalerrorssetup.get_.md) - -## FatalErrorsSetup.get$ property - -An Observable that will emit whenever a fatal error is added with `add()` - -Signature: - -```typescript -get$: () => Rx.Observable; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.md b/docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.md deleted file mode 100644 index 1f27fd52b7e32..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.fatalerrorssetup.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [FatalErrorsSetup](./kibana-plugin-core-public.fatalerrorssetup.md) - -## FatalErrorsSetup interface - -FatalErrors stop the Kibana Public Core and displays a fatal error screen with details about the Kibana build and the error. - -Signature: - -```typescript -export interface FatalErrorsSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [add](./kibana-plugin-core-public.fatalerrorssetup.add.md) | (error: string \| Error, source?: string) => never | Add a new fatal error. This will stop the Kibana Public Core and display a fatal error screen with details about the Kibana build and the error. | -| [get$](./kibana-plugin-core-public.fatalerrorssetup.get_.md) | () => Rx.Observable<FatalErrorInfo> | An Observable that will emit whenever a fatal error is added with add() | - diff --git a/docs/development/core/public/kibana-plugin-core-public.fatalerrorsstart.md b/docs/development/core/public/kibana-plugin-core-public.fatalerrorsstart.md deleted file mode 100644 index dd462eb435369..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.fatalerrorsstart.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [FatalErrorsStart](./kibana-plugin-core-public.fatalerrorsstart.md) - -## FatalErrorsStart type - -FatalErrors stop the Kibana Public Core and displays a fatal error screen with details about the Kibana build and the error. - -Signature: - -```typescript -export declare type FatalErrorsStart = FatalErrorsSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.asresponse.md b/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.asresponse.md deleted file mode 100644 index 264e00a73fd2f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.asresponse.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) > [asResponse](./kibana-plugin-core-public.httpfetchoptions.asresponse.md) - -## HttpFetchOptions.asResponse property - -When `true` the return type of [HttpHandler](./kibana-plugin-core-public.httphandler.md) will be an [HttpResponse](./kibana-plugin-core-public.httpresponse.md) with detailed request and response information. When `false`, the return type will just be the parsed response body. Defaults to `false`. - -Signature: - -```typescript -asResponse?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.assystemrequest.md b/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.assystemrequest.md deleted file mode 100644 index f74a9d02f8420..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.assystemrequest.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) > [asSystemRequest](./kibana-plugin-core-public.httpfetchoptions.assystemrequest.md) - -## HttpFetchOptions.asSystemRequest property - -Whether or not the request should include the "system request" header to differentiate an end user request from Kibana internal request. Can be read on the server-side using KibanaRequest\#isSystemRequest. Defaults to `false`. - -Signature: - -```typescript -asSystemRequest?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.context.md b/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.context.md deleted file mode 100644 index 09ab95a5135f6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.context.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) > [context](./kibana-plugin-core-public.httpfetchoptions.context.md) - -## HttpFetchOptions.context property - -Signature: - -```typescript -context?: KibanaExecutionContext; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.headers.md b/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.headers.md deleted file mode 100644 index b29725b727cdb..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.headers.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) > [headers](./kibana-plugin-core-public.httpfetchoptions.headers.md) - -## HttpFetchOptions.headers property - -Headers to send with the request. See [HttpHeadersInit](./kibana-plugin-core-public.httpheadersinit.md). - -Signature: - -```typescript -headers?: HttpHeadersInit; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.md b/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.md deleted file mode 100644 index 9a7f05ab9cd3e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) - -## HttpFetchOptions interface - -All options that may be used with a [HttpHandler](./kibana-plugin-core-public.httphandler.md). - -Signature: - -```typescript -export interface HttpFetchOptions extends HttpRequestInit -``` -Extends: HttpRequestInit - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [asResponse?](./kibana-plugin-core-public.httpfetchoptions.asresponse.md) | boolean | (Optional) When true the return type of [HttpHandler](./kibana-plugin-core-public.httphandler.md) will be an [HttpResponse](./kibana-plugin-core-public.httpresponse.md) with detailed request and response information. When false, the return type will just be the parsed response body. Defaults to false. | -| [asSystemRequest?](./kibana-plugin-core-public.httpfetchoptions.assystemrequest.md) | boolean | (Optional) Whether or not the request should include the "system request" header to differentiate an end user request from Kibana internal request. Can be read on the server-side using KibanaRequest\#isSystemRequest. Defaults to false. | -| [context?](./kibana-plugin-core-public.httpfetchoptions.context.md) | KibanaExecutionContext | (Optional) | -| [headers?](./kibana-plugin-core-public.httpfetchoptions.headers.md) | HttpHeadersInit | (Optional) Headers to send with the request. See [HttpHeadersInit](./kibana-plugin-core-public.httpheadersinit.md). | -| [prependBasePath?](./kibana-plugin-core-public.httpfetchoptions.prependbasepath.md) | boolean | (Optional) Whether or not the request should automatically prepend the basePath. Defaults to true. | -| [query?](./kibana-plugin-core-public.httpfetchoptions.query.md) | HttpFetchQuery | (Optional) The query string for an HTTP request. See [HttpFetchQuery](./kibana-plugin-core-public.httpfetchquery.md). | - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.prependbasepath.md b/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.prependbasepath.md deleted file mode 100644 index ca638d472c52f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.prependbasepath.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) > [prependBasePath](./kibana-plugin-core-public.httpfetchoptions.prependbasepath.md) - -## HttpFetchOptions.prependBasePath property - -Whether or not the request should automatically prepend the basePath. Defaults to `true`. - -Signature: - -```typescript -prependBasePath?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.query.md b/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.query.md deleted file mode 100644 index b03e48aa15cc5..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptions.query.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) > [query](./kibana-plugin-core-public.httpfetchoptions.query.md) - -## HttpFetchOptions.query property - -The query string for an HTTP request. See [HttpFetchQuery](./kibana-plugin-core-public.httpfetchquery.md). - -Signature: - -```typescript -query?: HttpFetchQuery; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptionswithpath.md b/docs/development/core/public/kibana-plugin-core-public.httpfetchoptionswithpath.md deleted file mode 100644 index 78155adaf627e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptionswithpath.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpFetchOptionsWithPath](./kibana-plugin-core-public.httpfetchoptionswithpath.md) - -## HttpFetchOptionsWithPath interface - -Similar to [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) but with the URL path included. - -Signature: - -```typescript -export interface HttpFetchOptionsWithPath extends HttpFetchOptions -``` -Extends: HttpFetchOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [path](./kibana-plugin-core-public.httpfetchoptionswithpath.path.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptionswithpath.path.md b/docs/development/core/public/kibana-plugin-core-public.httpfetchoptionswithpath.path.md deleted file mode 100644 index b360d7d1fb824..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpfetchoptionswithpath.path.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpFetchOptionsWithPath](./kibana-plugin-core-public.httpfetchoptionswithpath.md) > [path](./kibana-plugin-core-public.httpfetchoptionswithpath.path.md) - -## HttpFetchOptionsWithPath.path property - -Signature: - -```typescript -path: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpfetchquery.md b/docs/development/core/public/kibana-plugin-core-public.httpfetchquery.md deleted file mode 100644 index 29627ddd122fe..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpfetchquery.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpFetchQuery](./kibana-plugin-core-public.httpfetchquery.md) - -## HttpFetchQuery interface - - -Signature: - -```typescript -export interface HttpFetchQuery -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httphandler.md b/docs/development/core/public/kibana-plugin-core-public.httphandler.md deleted file mode 100644 index 6a119b186bfa1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httphandler.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpHandler](./kibana-plugin-core-public.httphandler.md) - -## HttpHandler interface - -A function for making an HTTP requests to Kibana's backend. See [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) for options and [HttpResponse](./kibana-plugin-core-public.httpresponse.md) for the response. - -Signature: - -```typescript -export interface HttpHandler -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpheadersinit.md b/docs/development/core/public/kibana-plugin-core-public.httpheadersinit.md deleted file mode 100644 index e05303a23afc8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpheadersinit.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpHeadersInit](./kibana-plugin-core-public.httpheadersinit.md) - -## HttpHeadersInit interface - -Headers to append to the request. Any headers that begin with `kbn-` are considered private to Core and will cause [HttpHandler](./kibana-plugin-core-public.httphandler.md) to throw an error. - -Signature: - -```typescript -export interface HttpHeadersInit -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.md b/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.md deleted file mode 100644 index e1843b1a52988..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md) - -## HttpInterceptor interface - -An object that may define global interceptor functions for different parts of the request and response lifecycle. See [IHttpInterceptController](./kibana-plugin-core-public.ihttpinterceptcontroller.md). - -Signature: - -```typescript -export interface HttpInterceptor -``` - -## Methods - -| Method | Description | -| --- | --- | -| [request(fetchOptions, controller)?](./kibana-plugin-core-public.httpinterceptor.request.md) | (Optional) Define an interceptor to be executed before a request is sent. | -| [requestError(httpErrorRequest, controller)?](./kibana-plugin-core-public.httpinterceptor.requesterror.md) | (Optional) Define an interceptor to be executed if a request interceptor throws an error or returns a rejected Promise. | -| [response(httpResponse, controller)?](./kibana-plugin-core-public.httpinterceptor.response.md) | (Optional) Define an interceptor to be executed after a response is received. | -| [responseError(httpErrorResponse, controller)?](./kibana-plugin-core-public.httpinterceptor.responseerror.md) | (Optional) Define an interceptor to be executed if a response interceptor throws an error or returns a rejected Promise. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.request.md b/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.request.md deleted file mode 100644 index 95181e6d509f1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.request.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md) > [request](./kibana-plugin-core-public.httpinterceptor.request.md) - -## HttpInterceptor.request() method - -Define an interceptor to be executed before a request is sent. - -Signature: - -```typescript -request?(fetchOptions: Readonly, controller: IHttpInterceptController): MaybePromise> | void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| fetchOptions | Readonly<HttpFetchOptionsWithPath> | | -| controller | IHttpInterceptController | [IHttpInterceptController](./kibana-plugin-core-public.ihttpinterceptcontroller.md) | - -Returns: - -MaybePromise<Partial<HttpFetchOptionsWithPath>> \| void - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.requesterror.md b/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.requesterror.md deleted file mode 100644 index c2bd14a6d1ead..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.requesterror.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md) > [requestError](./kibana-plugin-core-public.httpinterceptor.requesterror.md) - -## HttpInterceptor.requestError() method - -Define an interceptor to be executed if a request interceptor throws an error or returns a rejected Promise. - -Signature: - -```typescript -requestError?(httpErrorRequest: HttpInterceptorRequestError, controller: IHttpInterceptController): MaybePromise> | void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| httpErrorRequest | HttpInterceptorRequestError | [HttpInterceptorRequestError](./kibana-plugin-core-public.httpinterceptorrequesterror.md) | -| controller | IHttpInterceptController | [IHttpInterceptController](./kibana-plugin-core-public.ihttpinterceptcontroller.md) | - -Returns: - -MaybePromise<Partial<HttpFetchOptionsWithPath>> \| void - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.response.md b/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.response.md deleted file mode 100644 index 40cfeffacc0ca..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.response.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md) > [response](./kibana-plugin-core-public.httpinterceptor.response.md) - -## HttpInterceptor.response() method - -Define an interceptor to be executed after a response is received. - -Signature: - -```typescript -response?(httpResponse: HttpResponse, controller: IHttpInterceptController): MaybePromise | void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| httpResponse | HttpResponse | [HttpResponse](./kibana-plugin-core-public.httpresponse.md) | -| controller | IHttpInterceptController | [IHttpInterceptController](./kibana-plugin-core-public.ihttpinterceptcontroller.md) | - -Returns: - -MaybePromise<IHttpResponseInterceptorOverrides> \| void - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.responseerror.md b/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.responseerror.md deleted file mode 100644 index d9be2e87761fc..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpinterceptor.responseerror.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md) > [responseError](./kibana-plugin-core-public.httpinterceptor.responseerror.md) - -## HttpInterceptor.responseError() method - -Define an interceptor to be executed if a response interceptor throws an error or returns a rejected Promise. - -Signature: - -```typescript -responseError?(httpErrorResponse: HttpInterceptorResponseError, controller: IHttpInterceptController): MaybePromise | void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| httpErrorResponse | HttpInterceptorResponseError | [HttpInterceptorResponseError](./kibana-plugin-core-public.httpinterceptorresponseerror.md) | -| controller | IHttpInterceptController | [IHttpInterceptController](./kibana-plugin-core-public.ihttpinterceptcontroller.md) | - -Returns: - -MaybePromise<IHttpResponseInterceptorOverrides> \| void - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.error.md b/docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.error.md deleted file mode 100644 index a5db2cb2664c1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpInterceptorRequestError](./kibana-plugin-core-public.httpinterceptorrequesterror.md) > [error](./kibana-plugin-core-public.httpinterceptorrequesterror.error.md) - -## HttpInterceptorRequestError.error property - -Signature: - -```typescript -error: Error; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.fetchoptions.md b/docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.fetchoptions.md deleted file mode 100644 index 68c338b4f974d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.fetchoptions.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpInterceptorRequestError](./kibana-plugin-core-public.httpinterceptorrequesterror.md) > [fetchOptions](./kibana-plugin-core-public.httpinterceptorrequesterror.fetchoptions.md) - -## HttpInterceptorRequestError.fetchOptions property - -Signature: - -```typescript -fetchOptions: Readonly; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.md b/docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.md deleted file mode 100644 index 499bc61ce68af..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorrequesterror.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpInterceptorRequestError](./kibana-plugin-core-public.httpinterceptorrequesterror.md) - -## HttpInterceptorRequestError interface - - -Signature: - -```typescript -export interface HttpInterceptorRequestError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [error](./kibana-plugin-core-public.httpinterceptorrequesterror.error.md) | Error | | -| [fetchOptions](./kibana-plugin-core-public.httpinterceptorrequesterror.fetchoptions.md) | Readonly<HttpFetchOptionsWithPath> | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.error.md b/docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.error.md deleted file mode 100644 index e69a3c04d1dec..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpInterceptorResponseError](./kibana-plugin-core-public.httpinterceptorresponseerror.md) > [error](./kibana-plugin-core-public.httpinterceptorresponseerror.error.md) - -## HttpInterceptorResponseError.error property - -Signature: - -```typescript -error: Error | IHttpFetchError; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.md b/docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.md deleted file mode 100644 index 014cebeb3ec4d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpInterceptorResponseError](./kibana-plugin-core-public.httpinterceptorresponseerror.md) - -## HttpInterceptorResponseError interface - - -Signature: - -```typescript -export interface HttpInterceptorResponseError extends HttpResponse -``` -Extends: HttpResponse - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [error](./kibana-plugin-core-public.httpinterceptorresponseerror.error.md) | Error \| IHttpFetchError | | -| [request](./kibana-plugin-core-public.httpinterceptorresponseerror.request.md) | Readonly<Request> | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.request.md b/docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.request.md deleted file mode 100644 index 4e4d1bbdeec28..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpinterceptorresponseerror.request.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpInterceptorResponseError](./kibana-plugin-core-public.httpinterceptorresponseerror.md) > [request](./kibana-plugin-core-public.httpinterceptorresponseerror.request.md) - -## HttpInterceptorResponseError.request property - -Signature: - -```typescript -request: Readonly; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.body.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.body.md deleted file mode 100644 index dddf1ea87ec43..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.body.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [body](./kibana-plugin-core-public.httprequestinit.body.md) - -## HttpRequestInit.body property - -A BodyInit object or null to set request's body. - -Signature: - -```typescript -body?: BodyInit | null; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.cache.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.cache.md deleted file mode 100644 index cc7ef0bf2f3c2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.cache.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [cache](./kibana-plugin-core-public.httprequestinit.cache.md) - -## HttpRequestInit.cache property - -The cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. - -Signature: - -```typescript -cache?: RequestCache; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.credentials.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.credentials.md deleted file mode 100644 index da05b9eb2e319..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.credentials.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [credentials](./kibana-plugin-core-public.httprequestinit.credentials.md) - -## HttpRequestInit.credentials property - -The credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. - -Signature: - -```typescript -credentials?: RequestCredentials; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.headers.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.headers.md deleted file mode 100644 index 64e79dc55d25d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.headers.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [headers](./kibana-plugin-core-public.httprequestinit.headers.md) - -## HttpRequestInit.headers property - -[HttpHeadersInit](./kibana-plugin-core-public.httpheadersinit.md) - -Signature: - -```typescript -headers?: HttpHeadersInit; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.integrity.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.integrity.md deleted file mode 100644 index 34d9d2f60c969..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.integrity.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [integrity](./kibana-plugin-core-public.httprequestinit.integrity.md) - -## HttpRequestInit.integrity property - -Subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. - -Signature: - -```typescript -integrity?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.keepalive.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.keepalive.md deleted file mode 100644 index 3be81e863f5fd..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.keepalive.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [keepalive](./kibana-plugin-core-public.httprequestinit.keepalive.md) - -## HttpRequestInit.keepalive property - -Whether or not request can outlive the global in which it was created. - -Signature: - -```typescript -keepalive?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.md deleted file mode 100644 index 6b0e054ff1eb3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.md +++ /dev/null @@ -1,32 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) - -## HttpRequestInit interface - -Fetch API options available to [HttpHandler](./kibana-plugin-core-public.httphandler.md)s. - -Signature: - -```typescript -export interface HttpRequestInit -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [body?](./kibana-plugin-core-public.httprequestinit.body.md) | BodyInit \| null | (Optional) A BodyInit object or null to set request's body. | -| [cache?](./kibana-plugin-core-public.httprequestinit.cache.md) | RequestCache | (Optional) The cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. | -| [credentials?](./kibana-plugin-core-public.httprequestinit.credentials.md) | RequestCredentials | (Optional) The credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. | -| [headers?](./kibana-plugin-core-public.httprequestinit.headers.md) | HttpHeadersInit | (Optional) [HttpHeadersInit](./kibana-plugin-core-public.httpheadersinit.md) | -| [integrity?](./kibana-plugin-core-public.httprequestinit.integrity.md) | string | (Optional) Subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. | -| [keepalive?](./kibana-plugin-core-public.httprequestinit.keepalive.md) | boolean | (Optional) Whether or not request can outlive the global in which it was created. | -| [method?](./kibana-plugin-core-public.httprequestinit.method.md) | string | (Optional) HTTP method, which is "GET" by default. | -| [mode?](./kibana-plugin-core-public.httprequestinit.mode.md) | RequestMode | (Optional) The mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. | -| [redirect?](./kibana-plugin-core-public.httprequestinit.redirect.md) | RequestRedirect | (Optional) The redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. | -| [referrer?](./kibana-plugin-core-public.httprequestinit.referrer.md) | string | (Optional) The referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and "about:client" when defaulting to the global's default. This is used during fetching to determine the value of the Referer header of the request being made. | -| [referrerPolicy?](./kibana-plugin-core-public.httprequestinit.referrerpolicy.md) | ReferrerPolicy | (Optional) The referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. | -| [signal?](./kibana-plugin-core-public.httprequestinit.signal.md) | AbortSignal \| null | (Optional) Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. | -| [window?](./kibana-plugin-core-public.httprequestinit.window.md) | null | (Optional) Can only be null. Used to disassociate request from any Window. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.method.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.method.md deleted file mode 100644 index f650c32f70701..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.method.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [method](./kibana-plugin-core-public.httprequestinit.method.md) - -## HttpRequestInit.method property - -HTTP method, which is "GET" by default. - -Signature: - -```typescript -method?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.mode.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.mode.md deleted file mode 100644 index 4617b02c67420..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.mode.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [mode](./kibana-plugin-core-public.httprequestinit.mode.md) - -## HttpRequestInit.mode property - -The mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. - -Signature: - -```typescript -mode?: RequestMode; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.redirect.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.redirect.md deleted file mode 100644 index f1ae55f77f133..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.redirect.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [redirect](./kibana-plugin-core-public.httprequestinit.redirect.md) - -## HttpRequestInit.redirect property - -The redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. - -Signature: - -```typescript -redirect?: RequestRedirect; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.referrer.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.referrer.md deleted file mode 100644 index 19c0435742a91..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.referrer.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [referrer](./kibana-plugin-core-public.httprequestinit.referrer.md) - -## HttpRequestInit.referrer property - -The referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and "about:client" when defaulting to the global's default. This is used during fetching to determine the value of the `Referer` header of the request being made. - -Signature: - -```typescript -referrer?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.referrerpolicy.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.referrerpolicy.md deleted file mode 100644 index 30fc275ebf6bd..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.referrerpolicy.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [referrerPolicy](./kibana-plugin-core-public.httprequestinit.referrerpolicy.md) - -## HttpRequestInit.referrerPolicy property - -The referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. - -Signature: - -```typescript -referrerPolicy?: ReferrerPolicy; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.signal.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.signal.md deleted file mode 100644 index 8f309e7b877dc..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.signal.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [signal](./kibana-plugin-core-public.httprequestinit.signal.md) - -## HttpRequestInit.signal property - -Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. - -Signature: - -```typescript -signal?: AbortSignal | null; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.window.md b/docs/development/core/public/kibana-plugin-core-public.httprequestinit.window.md deleted file mode 100644 index 6bafc9a03da58..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httprequestinit.window.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) > [window](./kibana-plugin-core-public.httprequestinit.window.md) - -## HttpRequestInit.window property - -Can only be null. Used to disassociate request from any Window. - -Signature: - -```typescript -window?: null; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpresponse.body.md b/docs/development/core/public/kibana-plugin-core-public.httpresponse.body.md deleted file mode 100644 index 5d2cb693f63e0..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpresponse.body.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpResponse](./kibana-plugin-core-public.httpresponse.md) > [body](./kibana-plugin-core-public.httpresponse.body.md) - -## HttpResponse.body property - -Parsed body received, may be undefined if there was an error. - -Signature: - -```typescript -readonly body?: TResponseBody; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpresponse.fetchoptions.md b/docs/development/core/public/kibana-plugin-core-public.httpresponse.fetchoptions.md deleted file mode 100644 index 19e74f0da9fba..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpresponse.fetchoptions.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpResponse](./kibana-plugin-core-public.httpresponse.md) > [fetchOptions](./kibana-plugin-core-public.httpresponse.fetchoptions.md) - -## HttpResponse.fetchOptions property - -The original [HttpFetchOptionsWithPath](./kibana-plugin-core-public.httpfetchoptionswithpath.md) used to send this request. - -Signature: - -```typescript -readonly fetchOptions: Readonly; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpresponse.md b/docs/development/core/public/kibana-plugin-core-public.httpresponse.md deleted file mode 100644 index c0a3644ecaf2f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpresponse.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpResponse](./kibana-plugin-core-public.httpresponse.md) - -## HttpResponse interface - - -Signature: - -```typescript -export interface HttpResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [body?](./kibana-plugin-core-public.httpresponse.body.md) | TResponseBody | (Optional) Parsed body received, may be undefined if there was an error. | -| [fetchOptions](./kibana-plugin-core-public.httpresponse.fetchoptions.md) | Readonly<HttpFetchOptionsWithPath> | The original [HttpFetchOptionsWithPath](./kibana-plugin-core-public.httpfetchoptionswithpath.md) used to send this request. | -| [request](./kibana-plugin-core-public.httpresponse.request.md) | Readonly<Request> | Raw request sent to Kibana server. | -| [response?](./kibana-plugin-core-public.httpresponse.response.md) | Readonly<Response> | (Optional) Raw response received, may be undefined if there was an error. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpresponse.request.md b/docs/development/core/public/kibana-plugin-core-public.httpresponse.request.md deleted file mode 100644 index c21b0035835ba..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpresponse.request.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpResponse](./kibana-plugin-core-public.httpresponse.md) > [request](./kibana-plugin-core-public.httpresponse.request.md) - -## HttpResponse.request property - -Raw request sent to Kibana server. - -Signature: - -```typescript -readonly request: Readonly; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpresponse.response.md b/docs/development/core/public/kibana-plugin-core-public.httpresponse.response.md deleted file mode 100644 index 519412d2f4e46..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpresponse.response.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpResponse](./kibana-plugin-core-public.httpresponse.md) > [response](./kibana-plugin-core-public.httpresponse.response.md) - -## HttpResponse.response property - -Raw response received, may be undefined if there was an error. - -Signature: - -```typescript -readonly response?: Readonly; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.addloadingcountsource.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.addloadingcountsource.md deleted file mode 100644 index 7962772dbaa5c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.addloadingcountsource.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [addLoadingCountSource](./kibana-plugin-core-public.httpsetup.addloadingcountsource.md) - -## HttpSetup.addLoadingCountSource() method - -Adds a new source of loading counts. Used to show the global loading indicator when sum of all observed counts are more than 0. - -Signature: - -```typescript -addLoadingCountSource(countSource$: Observable): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| countSource$ | Observable<number> | an Observable to subscribe to for loading count updates. | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.anonymouspaths.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.anonymouspaths.md deleted file mode 100644 index d640755f8174c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.anonymouspaths.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [anonymousPaths](./kibana-plugin-core-public.httpsetup.anonymouspaths.md) - -## HttpSetup.anonymousPaths property - -APIs for denoting certain paths for not requiring authentication - -Signature: - -```typescript -anonymousPaths: IAnonymousPaths; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.basepath.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.basepath.md deleted file mode 100644 index 15206a7ae5e1d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.basepath.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [basePath](./kibana-plugin-core-public.httpsetup.basepath.md) - -## HttpSetup.basePath property - -APIs for manipulating the basePath on URL segments. See [IBasePath](./kibana-plugin-core-public.ibasepath.md) - -Signature: - -```typescript -basePath: IBasePath; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.delete.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.delete.md deleted file mode 100644 index 972af2fb55044..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.delete.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [delete](./kibana-plugin-core-public.httpsetup.delete.md) - -## HttpSetup.delete property - -Makes an HTTP request with the DELETE method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. - -Signature: - -```typescript -delete: HttpHandler; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.externalurl.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.externalurl.md deleted file mode 100644 index b26c9d371e496..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.externalurl.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [externalUrl](./kibana-plugin-core-public.httpsetup.externalurl.md) - -## HttpSetup.externalUrl property - -Signature: - -```typescript -externalUrl: IExternalUrl; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.fetch.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.fetch.md deleted file mode 100644 index ad232598b71ca..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.fetch.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [fetch](./kibana-plugin-core-public.httpsetup.fetch.md) - -## HttpSetup.fetch property - -Makes an HTTP request. Defaults to a GET request unless overridden. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. - -Signature: - -```typescript -fetch: HttpHandler; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.get.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.get.md deleted file mode 100644 index 99b5d42643b59..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [get](./kibana-plugin-core-public.httpsetup.get.md) - -## HttpSetup.get property - -Makes an HTTP request with the GET method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. - -Signature: - -```typescript -get: HttpHandler; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.getloadingcount_.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.getloadingcount_.md deleted file mode 100644 index e10278470f542..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.getloadingcount_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [getLoadingCount$](./kibana-plugin-core-public.httpsetup.getloadingcount_.md) - -## HttpSetup.getLoadingCount$() method - -Get the sum of all loading count sources as a single Observable. - -Signature: - -```typescript -getLoadingCount$(): Observable; -``` -Returns: - -Observable<number> - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.head.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.head.md deleted file mode 100644 index 07faeae2a9c0f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.head.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [head](./kibana-plugin-core-public.httpsetup.head.md) - -## HttpSetup.head property - -Makes an HTTP request with the HEAD method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. - -Signature: - -```typescript -head: HttpHandler; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.intercept.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.intercept.md deleted file mode 100644 index 27962d3c3867b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.intercept.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [intercept](./kibana-plugin-core-public.httpsetup.intercept.md) - -## HttpSetup.intercept() method - -Adds a new [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md) to the global HTTP client. - -Signature: - -```typescript -intercept(interceptor: HttpInterceptor): () => void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| interceptor | HttpInterceptor | a [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md) | - -Returns: - -() => void - -a function for removing the attached interceptor. - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.md deleted file mode 100644 index 2d8116b0eeba6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.md +++ /dev/null @@ -1,37 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) - -## HttpSetup interface - - -Signature: - -```typescript -export interface HttpSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [anonymousPaths](./kibana-plugin-core-public.httpsetup.anonymouspaths.md) | IAnonymousPaths | APIs for denoting certain paths for not requiring authentication | -| [basePath](./kibana-plugin-core-public.httpsetup.basepath.md) | IBasePath | APIs for manipulating the basePath on URL segments. See [IBasePath](./kibana-plugin-core-public.ibasepath.md) | -| [delete](./kibana-plugin-core-public.httpsetup.delete.md) | HttpHandler | Makes an HTTP request with the DELETE method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. | -| [externalUrl](./kibana-plugin-core-public.httpsetup.externalurl.md) | IExternalUrl | | -| [fetch](./kibana-plugin-core-public.httpsetup.fetch.md) | HttpHandler | Makes an HTTP request. Defaults to a GET request unless overridden. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. | -| [get](./kibana-plugin-core-public.httpsetup.get.md) | HttpHandler | Makes an HTTP request with the GET method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. | -| [head](./kibana-plugin-core-public.httpsetup.head.md) | HttpHandler | Makes an HTTP request with the HEAD method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. | -| [options](./kibana-plugin-core-public.httpsetup.options.md) | HttpHandler | Makes an HTTP request with the OPTIONS method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. | -| [patch](./kibana-plugin-core-public.httpsetup.patch.md) | HttpHandler | Makes an HTTP request with the PATCH method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. | -| [post](./kibana-plugin-core-public.httpsetup.post.md) | HttpHandler | Makes an HTTP request with the POST method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. | -| [put](./kibana-plugin-core-public.httpsetup.put.md) | HttpHandler | Makes an HTTP request with the PUT method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. | - -## Methods - -| Method | Description | -| --- | --- | -| [addLoadingCountSource(countSource$)](./kibana-plugin-core-public.httpsetup.addloadingcountsource.md) | Adds a new source of loading counts. Used to show the global loading indicator when sum of all observed counts are more than 0. | -| [getLoadingCount$()](./kibana-plugin-core-public.httpsetup.getloadingcount_.md) | Get the sum of all loading count sources as a single Observable. | -| [intercept(interceptor)](./kibana-plugin-core-public.httpsetup.intercept.md) | Adds a new [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md) to the global HTTP client. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.options.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.options.md deleted file mode 100644 index 9a83abcae0323..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.options.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [options](./kibana-plugin-core-public.httpsetup.options.md) - -## HttpSetup.options property - -Makes an HTTP request with the OPTIONS method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. - -Signature: - -```typescript -options: HttpHandler; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.patch.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.patch.md deleted file mode 100644 index 9024a12d527c2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.patch.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [patch](./kibana-plugin-core-public.httpsetup.patch.md) - -## HttpSetup.patch property - -Makes an HTTP request with the PATCH method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. - -Signature: - -```typescript -patch: HttpHandler; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.post.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.post.md deleted file mode 100644 index fd30981a0ec56..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.post.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [post](./kibana-plugin-core-public.httpsetup.post.md) - -## HttpSetup.post property - -Makes an HTTP request with the POST method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. - -Signature: - -```typescript -post: HttpHandler; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpsetup.put.md b/docs/development/core/public/kibana-plugin-core-public.httpsetup.put.md deleted file mode 100644 index 599db3e61f504..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpsetup.put.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpSetup](./kibana-plugin-core-public.httpsetup.md) > [put](./kibana-plugin-core-public.httpsetup.put.md) - -## HttpSetup.put property - -Makes an HTTP request with the PUT method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. - -Signature: - -```typescript -put: HttpHandler; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.httpstart.md b/docs/development/core/public/kibana-plugin-core-public.httpstart.md deleted file mode 100644 index 4cbbf6f07a2cf..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.httpstart.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [HttpStart](./kibana-plugin-core-public.httpstart.md) - -## HttpStart type - -See [HttpSetup](./kibana-plugin-core-public.httpsetup.md) - -Signature: - -```typescript -export declare type HttpStart = HttpSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.i18nstart.context.md b/docs/development/core/public/kibana-plugin-core-public.i18nstart.context.md deleted file mode 100644 index a0fba28be9681..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.i18nstart.context.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [I18nStart](./kibana-plugin-core-public.i18nstart.md) > [Context](./kibana-plugin-core-public.i18nstart.context.md) - -## I18nStart.Context property - -React Context provider required as the topmost component for any i18n-compatible React tree. - -Signature: - -```typescript -Context: ({ children }: { - children: React.ReactNode; - }) => JSX.Element; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.i18nstart.md b/docs/development/core/public/kibana-plugin-core-public.i18nstart.md deleted file mode 100644 index 586f5797abe6c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.i18nstart.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [I18nStart](./kibana-plugin-core-public.i18nstart.md) - -## I18nStart interface - -I18nStart.Context is required by any localizable React component from @kbn/i18n and @elastic/eui packages and is supposed to be used as the topmost component for any i18n-compatible React tree. - -Signature: - -```typescript -export interface I18nStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [Context](./kibana-plugin-core-public.i18nstart.context.md) | ({ children }: { children: React.ReactNode; }) => JSX.Element | React Context provider required as the topmost component for any i18n-compatible React tree. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.isanonymous.md b/docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.isanonymous.md deleted file mode 100644 index 115285c84ea78..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.isanonymous.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IAnonymousPaths](./kibana-plugin-core-public.ianonymouspaths.md) > [isAnonymous](./kibana-plugin-core-public.ianonymouspaths.isanonymous.md) - -## IAnonymousPaths.isAnonymous() method - -Determines whether the provided path doesn't require authentication. `path` should include the current basePath. - -Signature: - -```typescript -isAnonymous(path: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| path | string | | - -Returns: - -boolean - diff --git a/docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.md b/docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.md deleted file mode 100644 index 91d66206dd9ee..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IAnonymousPaths](./kibana-plugin-core-public.ianonymouspaths.md) - -## IAnonymousPaths interface - -APIs for denoting paths as not requiring authentication - -Signature: - -```typescript -export interface IAnonymousPaths -``` - -## Methods - -| Method | Description | -| --- | --- | -| [isAnonymous(path)](./kibana-plugin-core-public.ianonymouspaths.isanonymous.md) | Determines whether the provided path doesn't require authentication. path should include the current basePath. | -| [register(path)](./kibana-plugin-core-public.ianonymouspaths.register.md) | Register path as not requiring authentication. path should not include the current basePath. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.register.md b/docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.register.md deleted file mode 100644 index bfcc0f6decd5d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ianonymouspaths.register.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IAnonymousPaths](./kibana-plugin-core-public.ianonymouspaths.md) > [register](./kibana-plugin-core-public.ianonymouspaths.register.md) - -## IAnonymousPaths.register() method - -Register `path` as not requiring authentication. `path` should not include the current basePath. - -Signature: - -```typescript -register(path: string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| path | string | | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.ibasepath.get.md b/docs/development/core/public/kibana-plugin-core-public.ibasepath.get.md deleted file mode 100644 index ed27de777b715..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ibasepath.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IBasePath](./kibana-plugin-core-public.ibasepath.md) > [get](./kibana-plugin-core-public.ibasepath.get.md) - -## IBasePath.get property - -Gets the `basePath` string. - -Signature: - -```typescript -get: () => string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.ibasepath.md b/docs/development/core/public/kibana-plugin-core-public.ibasepath.md deleted file mode 100644 index 72a863f7d515c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ibasepath.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IBasePath](./kibana-plugin-core-public.ibasepath.md) - -## IBasePath interface - -APIs for manipulating the basePath on URL segments. - -Signature: - -```typescript -export interface IBasePath -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [get](./kibana-plugin-core-public.ibasepath.get.md) | () => string | Gets the basePath string. | -| [prepend](./kibana-plugin-core-public.ibasepath.prepend.md) | (url: string) => string | Prepends path with the basePath. | -| [publicBaseUrl?](./kibana-plugin-core-public.ibasepath.publicbaseurl.md) | string | (Optional) The server's publicly exposed base URL, if configured. Includes protocol, host, port (optional) and the [IBasePath.serverBasePath](./kibana-plugin-core-public.ibasepath.serverbasepath.md). | -| [remove](./kibana-plugin-core-public.ibasepath.remove.md) | (url: string) => string | Removes the prepended basePath from the path. | -| [serverBasePath](./kibana-plugin-core-public.ibasepath.serverbasepath.md) | string | Returns the server's root basePath as configured, without any namespace prefix.See for getting the basePath value for a specific request | - diff --git a/docs/development/core/public/kibana-plugin-core-public.ibasepath.prepend.md b/docs/development/core/public/kibana-plugin-core-public.ibasepath.prepend.md deleted file mode 100644 index b3e55351d350f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ibasepath.prepend.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IBasePath](./kibana-plugin-core-public.ibasepath.md) > [prepend](./kibana-plugin-core-public.ibasepath.prepend.md) - -## IBasePath.prepend property - -Prepends `path` with the basePath. - -Signature: - -```typescript -prepend: (url: string) => string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.ibasepath.publicbaseurl.md b/docs/development/core/public/kibana-plugin-core-public.ibasepath.publicbaseurl.md deleted file mode 100644 index f45cc6eba2959..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ibasepath.publicbaseurl.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IBasePath](./kibana-plugin-core-public.ibasepath.md) > [publicBaseUrl](./kibana-plugin-core-public.ibasepath.publicbaseurl.md) - -## IBasePath.publicBaseUrl property - -The server's publicly exposed base URL, if configured. Includes protocol, host, port (optional) and the [IBasePath.serverBasePath](./kibana-plugin-core-public.ibasepath.serverbasepath.md). - -Signature: - -```typescript -readonly publicBaseUrl?: string; -``` - -## Remarks - -Should be used for generating external URL links back to this Kibana instance. - diff --git a/docs/development/core/public/kibana-plugin-core-public.ibasepath.remove.md b/docs/development/core/public/kibana-plugin-core-public.ibasepath.remove.md deleted file mode 100644 index 2fcbe487e95b3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ibasepath.remove.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IBasePath](./kibana-plugin-core-public.ibasepath.md) > [remove](./kibana-plugin-core-public.ibasepath.remove.md) - -## IBasePath.remove property - -Removes the prepended basePath from the `path`. - -Signature: - -```typescript -remove: (url: string) => string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.ibasepath.serverbasepath.md b/docs/development/core/public/kibana-plugin-core-public.ibasepath.serverbasepath.md deleted file mode 100644 index f800b792e7b7f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ibasepath.serverbasepath.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IBasePath](./kibana-plugin-core-public.ibasepath.md) > [serverBasePath](./kibana-plugin-core-public.ibasepath.serverbasepath.md) - -## IBasePath.serverBasePath property - -Returns the server's root basePath as configured, without any namespace prefix. - -See for getting the basePath value for a specific request - -Signature: - -```typescript -readonly serverBasePath: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iexternalurl.isinternalurl.md b/docs/development/core/public/kibana-plugin-core-public.iexternalurl.isinternalurl.md deleted file mode 100644 index 396e5586f1fed..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iexternalurl.isinternalurl.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IExternalUrl](./kibana-plugin-core-public.iexternalurl.md) > [isInternalUrl](./kibana-plugin-core-public.iexternalurl.isinternalurl.md) - -## IExternalUrl.isInternalUrl() method - -Determines if the provided URL is an internal url. - -Signature: - -```typescript -isInternalUrl(relativeOrAbsoluteUrl: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| relativeOrAbsoluteUrl | string | | - -Returns: - -boolean - diff --git a/docs/development/core/public/kibana-plugin-core-public.iexternalurl.md b/docs/development/core/public/kibana-plugin-core-public.iexternalurl.md deleted file mode 100644 index d0d4e6a3a4464..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iexternalurl.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IExternalUrl](./kibana-plugin-core-public.iexternalurl.md) - -## IExternalUrl interface - -APIs for working with external URLs. - -Signature: - -```typescript -export interface IExternalUrl -``` - -## Methods - -| Method | Description | -| --- | --- | -| [isInternalUrl(relativeOrAbsoluteUrl)](./kibana-plugin-core-public.iexternalurl.isinternalurl.md) | Determines if the provided URL is an internal url. | -| [validateUrl(relativeOrAbsoluteUrl)](./kibana-plugin-core-public.iexternalurl.validateurl.md) | Determines if the provided URL is a valid location to send users. Validation is based on the configured allow list in kibana.yml.If the URL is valid, then a URL will be returned. Otherwise, this will return null. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.iexternalurl.validateurl.md b/docs/development/core/public/kibana-plugin-core-public.iexternalurl.validateurl.md deleted file mode 100644 index 24140effc45d9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iexternalurl.validateurl.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IExternalUrl](./kibana-plugin-core-public.iexternalurl.md) > [validateUrl](./kibana-plugin-core-public.iexternalurl.validateurl.md) - -## IExternalUrl.validateUrl() method - -Determines if the provided URL is a valid location to send users. Validation is based on the configured allow list in kibana.yml. - -If the URL is valid, then a URL will be returned. Otherwise, this will return null. - -Signature: - -```typescript -validateUrl(relativeOrAbsoluteUrl: string): URL | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| relativeOrAbsoluteUrl | string | | - -Returns: - -URL \| null - diff --git a/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.allow.md b/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.allow.md deleted file mode 100644 index ec7129a43b99a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.allow.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IExternalUrlPolicy](./kibana-plugin-core-public.iexternalurlpolicy.md) > [allow](./kibana-plugin-core-public.iexternalurlpolicy.allow.md) - -## IExternalUrlPolicy.allow property - -Indicates if this policy allows or denies access to the described destination. - -Signature: - -```typescript -allow: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.host.md b/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.host.md deleted file mode 100644 index 1d3c9fc9bbaf1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.host.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IExternalUrlPolicy](./kibana-plugin-core-public.iexternalurlpolicy.md) > [host](./kibana-plugin-core-public.iexternalurlpolicy.host.md) - -## IExternalUrlPolicy.host property - -Optional host describing the external destination. May be combined with `protocol`. - -Signature: - -```typescript -host?: string; -``` - -## Example - - -```ts -// allows access to all of google.com, using any protocol. -allow: true, -host: 'google.com' -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.md b/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.md deleted file mode 100644 index 6623fec18d976..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IExternalUrlPolicy](./kibana-plugin-core-public.iexternalurlpolicy.md) - -## IExternalUrlPolicy interface - -A policy describing whether access to an external destination is allowed. - -Signature: - -```typescript -export interface IExternalUrlPolicy -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [allow](./kibana-plugin-core-public.iexternalurlpolicy.allow.md) | boolean | Indicates if this policy allows or denies access to the described destination. | -| [host?](./kibana-plugin-core-public.iexternalurlpolicy.host.md) | string | (Optional) Optional host describing the external destination. May be combined with protocol. | -| [protocol?](./kibana-plugin-core-public.iexternalurlpolicy.protocol.md) | string | (Optional) Optional protocol describing the external destination. May be combined with host. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.protocol.md b/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.protocol.md deleted file mode 100644 index 6b6f8b9638bb8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iexternalurlpolicy.protocol.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IExternalUrlPolicy](./kibana-plugin-core-public.iexternalurlpolicy.md) > [protocol](./kibana-plugin-core-public.iexternalurlpolicy.protocol.md) - -## IExternalUrlPolicy.protocol property - -Optional protocol describing the external destination. May be combined with `host`. - -Signature: - -```typescript -protocol?: string; -``` - -## Example - - -```ts -// allows access to all destinations over the `https` protocol. -allow: true, -protocol: 'https' -``` - diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.body.md b/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.body.md deleted file mode 100644 index d053a5a9d360c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.body.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpFetchError](./kibana-plugin-core-public.ihttpfetcherror.md) > [body](./kibana-plugin-core-public.ihttpfetcherror.body.md) - -## IHttpFetchError.body property - -Signature: - -```typescript -readonly body?: TResponseBody; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.md b/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.md deleted file mode 100644 index 9aaae1be72028..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpFetchError](./kibana-plugin-core-public.ihttpfetcherror.md) - -## IHttpFetchError interface - - -Signature: - -```typescript -export interface IHttpFetchError extends Error -``` -Extends: Error - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [body?](./kibana-plugin-core-public.ihttpfetcherror.body.md) | TResponseBody | (Optional) | -| [name](./kibana-plugin-core-public.ihttpfetcherror.name.md) | string | | -| [req](./kibana-plugin-core-public.ihttpfetcherror.req.md) | Request | | -| [request](./kibana-plugin-core-public.ihttpfetcherror.request.md) | Request | | -| [res?](./kibana-plugin-core-public.ihttpfetcherror.res.md) | Response | (Optional) | -| [response?](./kibana-plugin-core-public.ihttpfetcherror.response.md) | Response | (Optional) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.name.md b/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.name.md deleted file mode 100644 index 4ab1ddd4b90ac..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpFetchError](./kibana-plugin-core-public.ihttpfetcherror.md) > [name](./kibana-plugin-core-public.ihttpfetcherror.name.md) - -## IHttpFetchError.name property - -Signature: - -```typescript -readonly name: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.req.md b/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.req.md deleted file mode 100644 index eb1c158156e5a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.req.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpFetchError](./kibana-plugin-core-public.ihttpfetcherror.md) > [req](./kibana-plugin-core-public.ihttpfetcherror.req.md) - -## IHttpFetchError.req property - -> Warning: This API is now obsolete. -> -> Provided for legacy compatibility. Prefer the `request` property instead. 8.8.0 -> -> Note to maintainers: when looking at usages, mind that typical use could be inside a `catch` block, so TS and code-reference navigation might not highlight them. -> - -Signature: - -```typescript -readonly req: Request; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.request.md b/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.request.md deleted file mode 100644 index 193d4cf92587e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.request.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpFetchError](./kibana-plugin-core-public.ihttpfetcherror.md) > [request](./kibana-plugin-core-public.ihttpfetcherror.request.md) - -## IHttpFetchError.request property - -Signature: - -```typescript -readonly request: Request; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.res.md b/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.res.md deleted file mode 100644 index 4440986db4ff8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.res.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpFetchError](./kibana-plugin-core-public.ihttpfetcherror.md) > [res](./kibana-plugin-core-public.ihttpfetcherror.res.md) - -## IHttpFetchError.res property - -> Warning: This API is now obsolete. -> -> Provided for legacy compatibility. Prefer the `response` property instead. 8.8.0 -> -> Note to maintainers: when looking at usages, mind that typical use could be inside a `catch` block, so TS and code-reference navigation might not highlight them. -> - -Signature: - -```typescript -readonly res?: Response; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.response.md b/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.response.md deleted file mode 100644 index 1f7fcc746e19b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpfetcherror.response.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpFetchError](./kibana-plugin-core-public.ihttpfetcherror.md) > [response](./kibana-plugin-core-public.ihttpfetcherror.response.md) - -## IHttpFetchError.response property - -Signature: - -```typescript -readonly response?: Response; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.halt.md b/docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.halt.md deleted file mode 100644 index b982e4dbac8a6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.halt.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpInterceptController](./kibana-plugin-core-public.ihttpinterceptcontroller.md) > [halt](./kibana-plugin-core-public.ihttpinterceptcontroller.halt.md) - -## IHttpInterceptController.halt() method - -Halt the request Promise chain and do not process further interceptors or response handlers. - -Signature: - -```typescript -halt(): void; -``` -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.halted.md b/docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.halted.md deleted file mode 100644 index 82e5378412a5a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.halted.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpInterceptController](./kibana-plugin-core-public.ihttpinterceptcontroller.md) > [halted](./kibana-plugin-core-public.ihttpinterceptcontroller.halted.md) - -## IHttpInterceptController.halted property - -Whether or not this chain has been halted. - -Signature: - -```typescript -halted: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.md b/docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.md deleted file mode 100644 index 15a66ef569e7d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpinterceptcontroller.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpInterceptController](./kibana-plugin-core-public.ihttpinterceptcontroller.md) - -## IHttpInterceptController interface - -Used to halt a request Promise chain in a [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md). - -Signature: - -```typescript -export interface IHttpInterceptController -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [halted](./kibana-plugin-core-public.ihttpinterceptcontroller.halted.md) | boolean | Whether or not this chain has been halted. | - -## Methods - -| Method | Description | -| --- | --- | -| [halt()](./kibana-plugin-core-public.ihttpinterceptcontroller.halt.md) | Halt the request Promise chain and do not process further interceptors or response handlers. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.body.md b/docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.body.md deleted file mode 100644 index 70dfe72d62ac5..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.body.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpResponseInterceptorOverrides](./kibana-plugin-core-public.ihttpresponseinterceptoroverrides.md) > [body](./kibana-plugin-core-public.ihttpresponseinterceptoroverrides.body.md) - -## IHttpResponseInterceptorOverrides.body property - -Parsed body received, may be undefined if there was an error. - -Signature: - -```typescript -readonly body?: TResponseBody; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.md b/docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.md deleted file mode 100644 index 57a4555cd6da5..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpResponseInterceptorOverrides](./kibana-plugin-core-public.ihttpresponseinterceptoroverrides.md) - -## IHttpResponseInterceptorOverrides interface - -Properties that can be returned by HttpInterceptor.request to override the response. - -Signature: - -```typescript -export interface IHttpResponseInterceptorOverrides -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [body?](./kibana-plugin-core-public.ihttpresponseinterceptoroverrides.body.md) | TResponseBody | (Optional) Parsed body received, may be undefined if there was an error. | -| [response?](./kibana-plugin-core-public.ihttpresponseinterceptoroverrides.response.md) | Readonly<Response> | (Optional) Raw response received, may be undefined if there was an error. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.response.md b/docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.response.md deleted file mode 100644 index c858200c2113f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.ihttpresponseinterceptoroverrides.response.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IHttpResponseInterceptorOverrides](./kibana-plugin-core-public.ihttpresponseinterceptoroverrides.md) > [response](./kibana-plugin-core-public.ihttpresponseinterceptoroverrides.response.md) - -## IHttpResponseInterceptorOverrides.response property - -Raw response received, may be undefined if there was an error. - -Signature: - -```typescript -readonly response?: Readonly; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.itoasts.md b/docs/development/core/public/kibana-plugin-core-public.itoasts.md deleted file mode 100644 index e009c77fe23bc..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.itoasts.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IToasts](./kibana-plugin-core-public.itoasts.md) - -## IToasts type - -Methods for adding and removing global toast messages. See [ToastsApi](./kibana-plugin-core-public.toastsapi.md). - -Signature: - -```typescript -export declare type IToasts = Pick; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.get.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.get.md deleted file mode 100644 index 903b6ff4bad1f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) > [get](./kibana-plugin-core-public.iuisettingsclient.get.md) - -## IUiSettingsClient.get property - -Gets the value for a specific uiSetting. If this setting has no user-defined value then the `defaultOverride` parameter is returned (and parsed if setting is of type "json" or "number). If the parameter is not defined and the key is not registered by any plugin then an error is thrown, otherwise reads the default value defined by a plugin. - -Signature: - -```typescript -get: (key: string, defaultOverride?: T) => T; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.get_.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.get_.md deleted file mode 100644 index 2ba20c34e81a5..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.get_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) > [get$](./kibana-plugin-core-public.iuisettingsclient.get_.md) - -## IUiSettingsClient.get$ property - -Gets an observable of the current value for a config key, and all updates to that config key in the future. Providing a `defaultOverride` argument behaves the same as it does in \#get() - -Signature: - -```typescript -get$: (key: string, defaultOverride?: T) => Observable; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getall.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getall.md deleted file mode 100644 index 004979977376e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getall.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) > [getAll](./kibana-plugin-core-public.iuisettingsclient.getall.md) - -## IUiSettingsClient.getAll property - -Gets the metadata about all uiSettings, including the type, default value, and user value for each key. - -Signature: - -```typescript -getAll: () => Readonly>; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getupdate_.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getupdate_.md deleted file mode 100644 index e9a8bf7cceece..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getupdate_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) > [getUpdate$](./kibana-plugin-core-public.iuisettingsclient.getupdate_.md) - -## IUiSettingsClient.getUpdate$ property - -Returns an Observable that notifies subscribers of each update to the uiSettings, including the key, newValue, and oldValue of the setting that changed. - -Signature: - -```typescript -getUpdate$: () => Observable<{ - key: string; - newValue: T; - oldValue: T; - }>; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getupdateerrors_.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getupdateerrors_.md deleted file mode 100644 index 6270f4b553434..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.getupdateerrors_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) > [getUpdateErrors$](./kibana-plugin-core-public.iuisettingsclient.getupdateerrors_.md) - -## IUiSettingsClient.getUpdateErrors$ property - -Returns an Observable that notifies subscribers of each error while trying to update the settings, containing the actual Error class. - -Signature: - -```typescript -getUpdateErrors$: () => Observable; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.iscustom.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.iscustom.md deleted file mode 100644 index 8d3b2d9d37139..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.iscustom.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) > [isCustom](./kibana-plugin-core-public.iuisettingsclient.iscustom.md) - -## IUiSettingsClient.isCustom property - -Returns true if the setting wasn't registered by any plugin, but was either added directly via `set()`, or is an unknown setting found in the uiSettings saved object - -Signature: - -```typescript -isCustom: (key: string) => boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isdeclared.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isdeclared.md deleted file mode 100644 index 39c8a32202691..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isdeclared.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) > [isDeclared](./kibana-plugin-core-public.iuisettingsclient.isdeclared.md) - -## IUiSettingsClient.isDeclared property - -Returns true if the key is a "known" uiSetting, meaning it is either registered by any plugin or was previously added as a custom setting via the `set()` method. - -Signature: - -```typescript -isDeclared: (key: string) => boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isdefault.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isdefault.md deleted file mode 100644 index 4a1b948bf0aca..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isdefault.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) > [isDefault](./kibana-plugin-core-public.iuisettingsclient.isdefault.md) - -## IUiSettingsClient.isDefault property - -Returns true if the setting has no user-defined value or is unknown - -Signature: - -```typescript -isDefault: (key: string) => boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isoverridden.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isoverridden.md deleted file mode 100644 index 0684c3617e434..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.isoverridden.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) > [isOverridden](./kibana-plugin-core-public.iuisettingsclient.isoverridden.md) - -## IUiSettingsClient.isOverridden property - -Shows whether the uiSettings value set by the user. - -Signature: - -```typescript -isOverridden: (key: string) => boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.md deleted file mode 100644 index 5d2429a799fe6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) - -## IUiSettingsClient interface - -Client-side client that provides access to the advanced settings stored in elasticsearch. The settings provide control over the behavior of the Kibana application. For example, a user can specify how to display numeric or date fields. Users can adjust the settings via Management UI. [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) - -Signature: - -```typescript -export interface IUiSettingsClient -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [get](./kibana-plugin-core-public.iuisettingsclient.get.md) | <T = any>(key: string, defaultOverride?: T) => T | Gets the value for a specific uiSetting. If this setting has no user-defined value then the defaultOverride parameter is returned (and parsed if setting is of type "json" or "number). If the parameter is not defined and the key is not registered by any plugin then an error is thrown, otherwise reads the default value defined by a plugin. | -| [get$](./kibana-plugin-core-public.iuisettingsclient.get_.md) | <T = any>(key: string, defaultOverride?: T) => Observable<T> | Gets an observable of the current value for a config key, and all updates to that config key in the future. Providing a defaultOverride argument behaves the same as it does in \#get() | -| [getAll](./kibana-plugin-core-public.iuisettingsclient.getall.md) | () => Readonly<Record<string, PublicUiSettingsParams & UserProvidedValues>> | Gets the metadata about all uiSettings, including the type, default value, and user value for each key. | -| [getUpdate$](./kibana-plugin-core-public.iuisettingsclient.getupdate_.md) | <T = any>() => Observable<{ key: string; newValue: T; oldValue: T; }> | Returns an Observable that notifies subscribers of each update to the uiSettings, including the key, newValue, and oldValue of the setting that changed. | -| [getUpdateErrors$](./kibana-plugin-core-public.iuisettingsclient.getupdateerrors_.md) | () => Observable<Error> | Returns an Observable that notifies subscribers of each error while trying to update the settings, containing the actual Error class. | -| [isCustom](./kibana-plugin-core-public.iuisettingsclient.iscustom.md) | (key: string) => boolean | Returns true if the setting wasn't registered by any plugin, but was either added directly via set(), or is an unknown setting found in the uiSettings saved object | -| [isDeclared](./kibana-plugin-core-public.iuisettingsclient.isdeclared.md) | (key: string) => boolean | Returns true if the key is a "known" uiSetting, meaning it is either registered by any plugin or was previously added as a custom setting via the set() method. | -| [isDefault](./kibana-plugin-core-public.iuisettingsclient.isdefault.md) | (key: string) => boolean | Returns true if the setting has no user-defined value or is unknown | -| [isOverridden](./kibana-plugin-core-public.iuisettingsclient.isoverridden.md) | (key: string) => boolean | Shows whether the uiSettings value set by the user. | -| [remove](./kibana-plugin-core-public.iuisettingsclient.remove.md) | (key: string) => Promise<boolean> | Removes the user-defined value for a setting, causing it to revert to the default. This method behaves the same as calling set(key, null), including the synchronization, custom setting, and error behavior of that method. | -| [set](./kibana-plugin-core-public.iuisettingsclient.set.md) | (key: string, value: any) => Promise<boolean> | Sets the value for a uiSetting. If the setting is not registered by any plugin it will be stored as a custom setting. The new value will be synchronously available via the get() method and sent to the server in the background. If the request to the server fails then a updateErrors$ will be notified and the setting will be reverted to its value before set() was called. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.remove.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.remove.md deleted file mode 100644 index b6d4ff04cf4a1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.remove.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) > [remove](./kibana-plugin-core-public.iuisettingsclient.remove.md) - -## IUiSettingsClient.remove property - -Removes the user-defined value for a setting, causing it to revert to the default. This method behaves the same as calling `set(key, null)`, including the synchronization, custom setting, and error behavior of that method. - -Signature: - -```typescript -remove: (key: string) => Promise; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.set.md b/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.set.md deleted file mode 100644 index ea817c39980ea..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.iuisettingsclient.set.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) > [set](./kibana-plugin-core-public.iuisettingsclient.set.md) - -## IUiSettingsClient.set property - -Sets the value for a uiSetting. If the setting is not registered by any plugin it will be stored as a custom setting. The new value will be synchronously available via the `get()` method and sent to the server in the background. If the request to the server fails then a updateErrors$ will be notified and the setting will be reverted to its value before `set()` was called. - -Signature: - -```typescript -set: (key: string, value: any) => Promise; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.kibanaexecutioncontext.md b/docs/development/core/public/kibana-plugin-core-public.kibanaexecutioncontext.md deleted file mode 100644 index d8f8a77d84b2f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.kibanaexecutioncontext.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [KibanaExecutionContext](./kibana-plugin-core-public.kibanaexecutioncontext.md) - -## KibanaExecutionContext type - -Represents a meta-information about a Kibana entity initiating a search request. - -Signature: - -```typescript -export declare type KibanaExecutionContext = { - readonly type?: string; - readonly name?: string; - readonly page?: string; - readonly id?: string; - readonly description?: string; - readonly url?: string; - child?: KibanaExecutionContext; -}; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.md b/docs/development/core/public/kibana-plugin-core-public.md deleted file mode 100644 index 1d2b07d13f6a8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.md +++ /dev/null @@ -1,185 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) - -## kibana-plugin-core-public package - -The Kibana Core APIs for client-side plugins. - -A plugin's `public/index` file must contain a named import, `plugin`, that implements [PluginInitializer](./kibana-plugin-core-public.plugininitializer.md) which returns an object that implements . - -The plugin integrates with the core system via lifecycle events: `setup`, `start`, and `stop`. In each lifecycle method, the plugin will receive the corresponding core services available (either [CoreSetup](./kibana-plugin-core-public.coresetup.md) or [CoreStart](./kibana-plugin-core-public.corestart.md)) and any interfaces returned by dependency plugins' lifecycle method. Anything returned by the plugin's lifecycle method will be exposed to downstream dependencies when their corresponding lifecycle methods are invoked. - -## Classes - -| Class | Description | -| --- | --- | -| [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) | A wrapper around a History instance that is scoped to a particular base path of the history stack. Behaves similarly to the basename option except that this wrapper hides any history stack entries from outside the scope of this base path.This wrapper also allows Core and Plugins to share a single underlying global History instance without exposing the history of other applications.The [createSubHistory](./kibana-plugin-core-public.scopedhistory.createsubhistory.md) method is particularly useful for applications that contain any number of "sub-apps" which should not have access to the main application's history or basePath. | -| [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) | This class is a very simple wrapper for SavedObjects loaded from the server with the [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md).It provides basic functionality for creating/saving/deleting saved objects, but doesn't include any type-specific implementations. | -| [ToastsApi](./kibana-plugin-core-public.toastsapi.md) | Methods for adding and removing global toast messages. | - -## Enumerations - -| Enumeration | Description | -| --- | --- | -| [AppLeaveActionType](./kibana-plugin-core-public.appleaveactiontype.md) | Possible type of actions on application leave. | -| [AppNavLinkStatus](./kibana-plugin-core-public.appnavlinkstatus.md) | Status of the application's navLink. | -| [AppStatus](./kibana-plugin-core-public.appstatus.md) | Accessibility status of an application. | - -## Interfaces - -| Interface | Description | -| --- | --- | -| [App](./kibana-plugin-core-public.app.md) | | -| [AppCategory](./kibana-plugin-core-public.appcategory.md) | A category definition for nav links to know where to sort them in the left hand nav | -| [AppLeaveConfirmAction](./kibana-plugin-core-public.appleaveconfirmaction.md) | Action to return from a [AppLeaveHandler](./kibana-plugin-core-public.appleavehandler.md) to show a confirmation message when trying to leave an application.See | -| [AppLeaveDefaultAction](./kibana-plugin-core-public.appleavedefaultaction.md) | Action to return from a [AppLeaveHandler](./kibana-plugin-core-public.appleavehandler.md) to execute the default behaviour when leaving the application.See | -| [ApplicationSetup](./kibana-plugin-core-public.applicationsetup.md) | | -| [ApplicationStart](./kibana-plugin-core-public.applicationstart.md) | | -| [AppMountParameters](./kibana-plugin-core-public.appmountparameters.md) | | -| [AppNavOptions](./kibana-plugin-core-public.appnavoptions.md) | App navigation menu options | -| [Capabilities](./kibana-plugin-core-public.capabilities.md) | The read-only set of capabilities available for the current UI session. Capabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID, and the boolean is a flag indicating if the capability is enabled or disabled. | -| [ChromeBadge](./kibana-plugin-core-public.chromebadge.md) | | -| [ChromeDocTitle](./kibana-plugin-core-public.chromedoctitle.md) | APIs for accessing and updating the document title. | -| [ChromeHelpExtension](./kibana-plugin-core-public.chromehelpextension.md) | | -| [ChromeHelpExtensionMenuCustomLink](./kibana-plugin-core-public.chromehelpextensionmenucustomlink.md) | | -| [ChromeHelpExtensionMenuDiscussLink](./kibana-plugin-core-public.chromehelpextensionmenudiscusslink.md) | | -| [ChromeHelpExtensionMenuDocumentationLink](./kibana-plugin-core-public.chromehelpextensionmenudocumentationlink.md) | | -| [ChromeHelpExtensionMenuGitHubLink](./kibana-plugin-core-public.chromehelpextensionmenugithublink.md) | | -| [ChromeHelpMenuActions](./kibana-plugin-core-public.chromehelpmenuactions.md) | | -| [ChromeNavControl](./kibana-plugin-core-public.chromenavcontrol.md) | | -| [ChromeNavControls](./kibana-plugin-core-public.chromenavcontrols.md) | [APIs](./kibana-plugin-core-public.chromenavcontrols.md) for registering new controls to be displayed in the navigation bar. | -| [ChromeNavLink](./kibana-plugin-core-public.chromenavlink.md) | | -| [ChromeNavLinks](./kibana-plugin-core-public.chromenavlinks.md) | [APIs](./kibana-plugin-core-public.chromenavlinks.md) for manipulating nav links. | -| [ChromeRecentlyAccessed](./kibana-plugin-core-public.chromerecentlyaccessed.md) | [APIs](./kibana-plugin-core-public.chromerecentlyaccessed.md) for recently accessed history. | -| [ChromeRecentlyAccessedHistoryItem](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.md) | | -| [ChromeStart](./kibana-plugin-core-public.chromestart.md) | ChromeStart allows plugins to customize the global chrome header UI and enrich the UX with additional information about the current location of the browser. | -| [ChromeUserBanner](./kibana-plugin-core-public.chromeuserbanner.md) | | -| [CoreSetup](./kibana-plugin-core-public.coresetup.md) | Core services exposed to the Plugin setup lifecycle | -| [CoreStart](./kibana-plugin-core-public.corestart.md) | Core services exposed to the Plugin start lifecycle | -| [DeprecationsServiceStart](./kibana-plugin-core-public.deprecationsservicestart.md) | DeprecationsService provides methods to fetch domain deprecation details from the Kibana server. | -| [ErrorToastOptions](./kibana-plugin-core-public.errortoastoptions.md) | Options available for [IToasts](./kibana-plugin-core-public.itoasts.md) error APIs. | -| [ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md) | Kibana execution context. Used to provide execution context to Elasticsearch, reporting, performance monitoring, etc. | -| [FatalErrorInfo](./kibana-plugin-core-public.fatalerrorinfo.md) | Represents the message and stack of a fatal Error | -| [FatalErrorsSetup](./kibana-plugin-core-public.fatalerrorssetup.md) | FatalErrors stop the Kibana Public Core and displays a fatal error screen with details about the Kibana build and the error. | -| [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) | All options that may be used with a [HttpHandler](./kibana-plugin-core-public.httphandler.md). | -| [HttpFetchOptionsWithPath](./kibana-plugin-core-public.httpfetchoptionswithpath.md) | Similar to [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) but with the URL path included. | -| [HttpFetchQuery](./kibana-plugin-core-public.httpfetchquery.md) | | -| [HttpHandler](./kibana-plugin-core-public.httphandler.md) | A function for making an HTTP requests to Kibana's backend. See [HttpFetchOptions](./kibana-plugin-core-public.httpfetchoptions.md) for options and [HttpResponse](./kibana-plugin-core-public.httpresponse.md) for the response. | -| [HttpHeadersInit](./kibana-plugin-core-public.httpheadersinit.md) | Headers to append to the request. Any headers that begin with kbn- are considered private to Core and will cause [HttpHandler](./kibana-plugin-core-public.httphandler.md) to throw an error. | -| [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md) | An object that may define global interceptor functions for different parts of the request and response lifecycle. See [IHttpInterceptController](./kibana-plugin-core-public.ihttpinterceptcontroller.md). | -| [HttpInterceptorRequestError](./kibana-plugin-core-public.httpinterceptorrequesterror.md) | | -| [HttpInterceptorResponseError](./kibana-plugin-core-public.httpinterceptorresponseerror.md) | | -| [HttpRequestInit](./kibana-plugin-core-public.httprequestinit.md) | Fetch API options available to [HttpHandler](./kibana-plugin-core-public.httphandler.md)s. | -| [HttpResponse](./kibana-plugin-core-public.httpresponse.md) | | -| [HttpSetup](./kibana-plugin-core-public.httpsetup.md) | | -| [I18nStart](./kibana-plugin-core-public.i18nstart.md) | I18nStart.Context is required by any localizable React component from @kbn/i18n and @elastic/eui packages and is supposed to be used as the topmost component for any i18n-compatible React tree. | -| [IAnonymousPaths](./kibana-plugin-core-public.ianonymouspaths.md) | APIs for denoting paths as not requiring authentication | -| [IBasePath](./kibana-plugin-core-public.ibasepath.md) | APIs for manipulating the basePath on URL segments. | -| [IExternalUrl](./kibana-plugin-core-public.iexternalurl.md) | APIs for working with external URLs. | -| [IExternalUrlPolicy](./kibana-plugin-core-public.iexternalurlpolicy.md) | A policy describing whether access to an external destination is allowed. | -| [IHttpFetchError](./kibana-plugin-core-public.ihttpfetcherror.md) | | -| [IHttpInterceptController](./kibana-plugin-core-public.ihttpinterceptcontroller.md) | Used to halt a request Promise chain in a [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md). | -| [IHttpResponseInterceptorOverrides](./kibana-plugin-core-public.ihttpresponseinterceptoroverrides.md) | Properties that can be returned by HttpInterceptor.request to override the response. | -| [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) | Client-side client that provides access to the advanced settings stored in elasticsearch. The settings provide control over the behavior of the Kibana application. For example, a user can specify how to display numeric or date fields. Users can adjust the settings via Management UI. [IUiSettingsClient](./kibana-plugin-core-public.iuisettingsclient.md) | -| [NavigateToAppOptions](./kibana-plugin-core-public.navigatetoappoptions.md) | Options for the [navigateToApp API](./kibana-plugin-core-public.applicationstart.navigatetoapp.md) | -| [NavigateToUrlOptions](./kibana-plugin-core-public.navigatetourloptions.md) | Options for the [navigateToUrl API](./kibana-plugin-core-public.applicationstart.navigatetourl.md) | -| [NotificationsSetup](./kibana-plugin-core-public.notificationssetup.md) | | -| [NotificationsStart](./kibana-plugin-core-public.notificationsstart.md) | | -| [OverlayBannersStart](./kibana-plugin-core-public.overlaybannersstart.md) | | -| [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) | | -| [OverlayFlyoutStart](./kibana-plugin-core-public.overlayflyoutstart.md) | APIs to open and manage fly-out dialogs. | -| [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) | | -| [OverlayModalOpenOptions](./kibana-plugin-core-public.overlaymodalopenoptions.md) | | -| [OverlayModalStart](./kibana-plugin-core-public.overlaymodalstart.md) | APIs to open and manage modal dialogs. | -| [OverlayRef](./kibana-plugin-core-public.overlayref.md) | Returned by [OverlayStart](./kibana-plugin-core-public.overlaystart.md) methods for closing a mounted overlay. | -| [OverlayStart](./kibana-plugin-core-public.overlaystart.md) | | -| [Plugin\_2](./kibana-plugin-core-public.plugin_2.md) | The interface that should be returned by a PluginInitializer. | -| [PluginInitializerContext](./kibana-plugin-core-public.plugininitializercontext.md) | The available core services passed to a PluginInitializer | -| [ResolvedSimpleSavedObject](./kibana-plugin-core-public.resolvedsimplesavedobject.md) | This interface is a very simple wrapper for SavedObjects resolved from the server with the [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md). | -| [ResponseErrorBody](./kibana-plugin-core-public.responseerrorbody.md) | | -| [SavedObject](./kibana-plugin-core-public.savedobject.md) | | -| [SavedObjectAttributes](./kibana-plugin-core-public.savedobjectattributes.md) | The data for a Saved Object is stored as an object in the attributes property. | -| [SavedObjectError](./kibana-plugin-core-public.savedobjecterror.md) | | -| [SavedObjectReference](./kibana-plugin-core-public.savedobjectreference.md) | A reference to another saved object. | -| [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) | A returned input object or one of its references, with additional context. | -| [SavedObjectsBaseOptions](./kibana-plugin-core-public.savedobjectsbaseoptions.md) | | -| [SavedObjectsBatchResponse](./kibana-plugin-core-public.savedobjectsbatchresponse.md) | | -| [SavedObjectsBulkCreateObject](./kibana-plugin-core-public.savedobjectsbulkcreateobject.md) | | -| [SavedObjectsBulkCreateOptions](./kibana-plugin-core-public.savedobjectsbulkcreateoptions.md) | | -| [SavedObjectsBulkResolveObject](./kibana-plugin-core-public.savedobjectsbulkresolveobject.md) | | -| [SavedObjectsBulkResolveResponse](./kibana-plugin-core-public.savedobjectsbulkresolveresponse.md) | | -| [SavedObjectsBulkUpdateObject](./kibana-plugin-core-public.savedobjectsbulkupdateobject.md) | | -| [SavedObjectsBulkUpdateOptions](./kibana-plugin-core-public.savedobjectsbulkupdateoptions.md) | | -| [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) | The client-side SavedObjectsClient is a thin convenience library around the SavedObjects HTTP API for interacting with Saved Objects. | -| [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md) | The response when object references are collected. | -| [SavedObjectsCreateOptions](./kibana-plugin-core-public.savedobjectscreateoptions.md) | | -| [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) | | -| [SavedObjectsFindOptionsReference](./kibana-plugin-core-public.savedobjectsfindoptionsreference.md) | | -| [SavedObjectsFindResponsePublic](./kibana-plugin-core-public.savedobjectsfindresponsepublic.md) | Return type of the Saved Objects find() method.\*Note\*: this type is different between the Public and Server Saved Objects clients. | -| [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md) | A warning meant to notify that a specific user action is required to finalize the import of some type of object. The actionUrl must be a path relative to the basePath, and not include it. | -| [SavedObjectsImportAmbiguousConflictError](./kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.md) | Represents a failure to import due to a conflict, which can be resolved in different ways with an overwrite. | -| [SavedObjectsImportConflictError](./kibana-plugin-core-public.savedobjectsimportconflicterror.md) | Represents a failure to import due to a conflict. | -| [SavedObjectsImportFailure](./kibana-plugin-core-public.savedobjectsimportfailure.md) | Represents a failure to import. | -| [SavedObjectsImportMissingReferencesError](./kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.md) | Represents a failure to import due to missing references. | -| [SavedObjectsImportResponse](./kibana-plugin-core-public.savedobjectsimportresponse.md) | The response describing the result of an import. | -| [SavedObjectsImportRetry](./kibana-plugin-core-public.savedobjectsimportretry.md) | Describes a retry operation for importing a saved object. | -| [SavedObjectsImportSimpleWarning](./kibana-plugin-core-public.savedobjectsimportsimplewarning.md) | A simple informative warning that will be displayed to the user. | -| [SavedObjectsImportSuccess](./kibana-plugin-core-public.savedobjectsimportsuccess.md) | Represents a successful import. | -| [SavedObjectsImportUnknownError](./kibana-plugin-core-public.savedobjectsimportunknownerror.md) | Represents a failure to import due to an unknown reason. | -| [SavedObjectsImportUnsupportedTypeError](./kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.md) | Represents a failure to import due to having an unsupported saved object type. | -| [SavedObjectsMigrationVersion](./kibana-plugin-core-public.savedobjectsmigrationversion.md) | Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. | -| [SavedObjectsResolveResponse](./kibana-plugin-core-public.savedobjectsresolveresponse.md) | | -| [SavedObjectsStart](./kibana-plugin-core-public.savedobjectsstart.md) | | -| [SavedObjectsUpdateOptions](./kibana-plugin-core-public.savedobjectsupdateoptions.md) | | -| [ToastOptions](./kibana-plugin-core-public.toastoptions.md) | Options available for [IToasts](./kibana-plugin-core-public.itoasts.md) APIs. | -| [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) | UiSettings parameters defined by the plugins. | -| [UiSettingsState](./kibana-plugin-core-public.uisettingsstate.md) | | -| [UserProvidedValues](./kibana-plugin-core-public.userprovidedvalues.md) | Describes the values explicitly set by user. | - -## Variables - -| Variable | Description | -| --- | --- | -| [APP\_WRAPPER\_CLASS](./kibana-plugin-core-public.app_wrapper_class.md) | The class name for top level \*and\* nested application wrappers to ensure proper layout | -| [URL\_MAX\_LENGTH](./kibana-plugin-core-public.url_max_length.md) | The max URL length allowed by the current browser. Should be used to display warnings to users when query parameters cause URL to exceed this limit. | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [AppDeepLink](./kibana-plugin-core-public.appdeeplink.md) | Input type for registering secondary in-app locations for an application.Deep links must include at least one of path or deepLinks. A deep link that does not have a path represents a topological level in the application's hierarchy, but does not have a destination URL that is user-accessible. | -| [AppLeaveAction](./kibana-plugin-core-public.appleaveaction.md) | Possible actions to return from a [AppLeaveHandler](./kibana-plugin-core-public.appleavehandler.md)See [AppLeaveConfirmAction](./kibana-plugin-core-public.appleaveconfirmaction.md) and [AppLeaveDefaultAction](./kibana-plugin-core-public.appleavedefaultaction.md) | -| [AppLeaveHandler](./kibana-plugin-core-public.appleavehandler.md) | A handler that will be executed before leaving the application, either when going to another application or when closing the browser tab or manually changing the url. Should return confirm to prompt a message to the user before leaving the page, or default to keep the default behavior (doing nothing).See [AppMountParameters](./kibana-plugin-core-public.appmountparameters.md) for detailed usage examples. | -| [AppMount](./kibana-plugin-core-public.appmount.md) | A mount function called when the user navigates to this app's route. | -| [AppUnmount](./kibana-plugin-core-public.appunmount.md) | A function called when an application should be unmounted from the page. This function should be synchronous. | -| [AppUpdatableFields](./kibana-plugin-core-public.appupdatablefields.md) | Defines the list of fields that can be updated via an [AppUpdater](./kibana-plugin-core-public.appupdater.md). | -| [AppUpdater](./kibana-plugin-core-public.appupdater.md) | Updater for applications. see [ApplicationSetup](./kibana-plugin-core-public.applicationsetup.md) | -| [ChromeBreadcrumb](./kibana-plugin-core-public.chromebreadcrumb.md) | | -| [ChromeHelpExtensionLinkBase](./kibana-plugin-core-public.chromehelpextensionlinkbase.md) | | -| [ChromeHelpExtensionMenuLink](./kibana-plugin-core-public.chromehelpextensionmenulink.md) | | -| [ExecutionContextStart](./kibana-plugin-core-public.executioncontextstart.md) | See [ExecutionContextSetup](./kibana-plugin-core-public.executioncontextsetup.md). | -| [FatalErrorsStart](./kibana-plugin-core-public.fatalerrorsstart.md) | FatalErrors stop the Kibana Public Core and displays a fatal error screen with details about the Kibana build and the error. | -| [HttpStart](./kibana-plugin-core-public.httpstart.md) | See [HttpSetup](./kibana-plugin-core-public.httpsetup.md) | -| [IToasts](./kibana-plugin-core-public.itoasts.md) | Methods for adding and removing global toast messages. See [ToastsApi](./kibana-plugin-core-public.toastsapi.md). | -| [KibanaExecutionContext](./kibana-plugin-core-public.kibanaexecutioncontext.md) | Represents a meta-information about a Kibana entity initiating a search request. | -| [MountPoint](./kibana-plugin-core-public.mountpoint.md) | A function that should mount DOM content inside the provided container element and return a handler to unmount it. | -| [NavType](./kibana-plugin-core-public.navtype.md) | | -| [PluginInitializer](./kibana-plugin-core-public.plugininitializer.md) | The plugin export at the root of a plugin's public directory should conform to this interface. | -| [PublicAppDeepLinkInfo](./kibana-plugin-core-public.publicappdeeplinkinfo.md) | Public information about a registered app's [deepLinks](./kibana-plugin-core-public.appdeeplink.md) | -| [PublicAppInfo](./kibana-plugin-core-public.publicappinfo.md) | Public information about a registered [application](./kibana-plugin-core-public.app.md) | -| [PublicUiSettingsParams](./kibana-plugin-core-public.publicuisettingsparams.md) | A sub-set of [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) exposed to the client-side. | -| [ResolveDeprecationResponse](./kibana-plugin-core-public.resolvedeprecationresponse.md) | | -| [SavedObjectAttribute](./kibana-plugin-core-public.savedobjectattribute.md) | Type definition for a Saved Object attribute value | -| [SavedObjectAttributeSingle](./kibana-plugin-core-public.savedobjectattributesingle.md) | Don't use this type, it's simply a helper type for [SavedObjectAttribute](./kibana-plugin-core-public.savedobjectattribute.md) | -| [SavedObjectsImportWarning](./kibana-plugin-core-public.savedobjectsimportwarning.md) | Composite type of all the possible types of import warnings.See [SavedObjectsImportSimpleWarning](./kibana-plugin-core-public.savedobjectsimportsimplewarning.md) and [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md) for more details. | -| [SavedObjectsNamespaceType](./kibana-plugin-core-public.savedobjectsnamespacetype.md) | The namespace type dictates how a saved object can be interacted in relation to namespaces. Each type is mutually exclusive: \* single (default): This type of saved object is namespace-isolated, e.g., it exists in only one namespace. \* multiple: This type of saved object is shareable, e.g., it can exist in one or more namespaces. \* multiple-isolated: This type of saved object is namespace-isolated, e.g., it exists in only one namespace, but object IDs must be unique across all namespaces. This is intended to be an intermediate step when objects with a "single" namespace type are being converted to a "multiple" namespace type. In other words, objects with a "multiple-isolated" namespace type will be \*share-capable\*, but will not actually be shareable until the namespace type is changed to "multiple". \* agnostic: This type of saved object is global. | -| [StartServicesAccessor](./kibana-plugin-core-public.startservicesaccessor.md) | Allows plugins to get access to APIs available in start inside async handlers, such as [App.mount](./kibana-plugin-core-public.app.mount.md). Promise will not resolve until Core and plugin dependencies have completed start. | -| [Toast](./kibana-plugin-core-public.toast.md) | | -| [ToastInput](./kibana-plugin-core-public.toastinput.md) | Inputs for [IToasts](./kibana-plugin-core-public.itoasts.md) APIs. | -| [ToastInputFields](./kibana-plugin-core-public.toastinputfields.md) | Allowed fields for [ToastInput](./kibana-plugin-core-public.toastinput.md). | -| [ToastsSetup](./kibana-plugin-core-public.toastssetup.md) | [IToasts](./kibana-plugin-core-public.itoasts.md) | -| [ToastsStart](./kibana-plugin-core-public.toastsstart.md) | [IToasts](./kibana-plugin-core-public.itoasts.md) | -| [UiSettingsType](./kibana-plugin-core-public.uisettingstype.md) | UI element type to represent the settings. | -| [UnmountCallback](./kibana-plugin-core-public.unmountcallback.md) | A function that will unmount the element previously mounted by the associated [MountPoint](./kibana-plugin-core-public.mountpoint.md) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.mountpoint.md b/docs/development/core/public/kibana-plugin-core-public.mountpoint.md deleted file mode 100644 index 41c6269b3e6da..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.mountpoint.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [MountPoint](./kibana-plugin-core-public.mountpoint.md) - -## MountPoint type - -A function that should mount DOM content inside the provided container element and return a handler to unmount it. - -Signature: - -```typescript -export declare type MountPoint = (element: T) => UnmountCallback; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.deeplinkid.md b/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.deeplinkid.md deleted file mode 100644 index 4039e1338fc1c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.deeplinkid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavigateToAppOptions](./kibana-plugin-core-public.navigatetoappoptions.md) > [deepLinkId](./kibana-plugin-core-public.navigatetoappoptions.deeplinkid.md) - -## NavigateToAppOptions.deepLinkId property - -optional [deep link](./kibana-plugin-core-public.app.deeplinks.md) id inside the application to navigate to. If an additional [path](./kibana-plugin-core-public.navigatetoappoptions.path.md) is defined it will be appended to the deep link path. - -Signature: - -```typescript -deepLinkId?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.md b/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.md deleted file mode 100644 index 337e9db1f80d2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavigateToAppOptions](./kibana-plugin-core-public.navigatetoappoptions.md) - -## NavigateToAppOptions interface - -Options for the [navigateToApp API](./kibana-plugin-core-public.applicationstart.navigatetoapp.md) - -Signature: - -```typescript -export interface NavigateToAppOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [deepLinkId?](./kibana-plugin-core-public.navigatetoappoptions.deeplinkid.md) | string | (Optional) optional [deep link](./kibana-plugin-core-public.app.deeplinks.md) id inside the application to navigate to. If an additional [path](./kibana-plugin-core-public.navigatetoappoptions.path.md) is defined it will be appended to the deep link path. | -| [openInNewTab?](./kibana-plugin-core-public.navigatetoappoptions.openinnewtab.md) | boolean | (Optional) if true, will open the app in new tab, will share session information via window.open if base | -| [path?](./kibana-plugin-core-public.navigatetoappoptions.path.md) | string | (Optional) optional path inside application to deep link to. If undefined, will use [the app's default path](./kibana-plugin-core-public.app.defaultpath.md) as default. | -| [replace?](./kibana-plugin-core-public.navigatetoappoptions.replace.md) | boolean | (Optional) if true, will not create a new history entry when navigating (using replace instead of push) | -| [skipAppLeave?](./kibana-plugin-core-public.navigatetoappoptions.skipappleave.md) | boolean | (Optional) if true, will bypass the default onAppLeave behavior | -| [state?](./kibana-plugin-core-public.navigatetoappoptions.state.md) | unknown | (Optional) optional state to forward to the application | - diff --git a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.openinnewtab.md b/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.openinnewtab.md deleted file mode 100644 index 4609fa68b3824..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.openinnewtab.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavigateToAppOptions](./kibana-plugin-core-public.navigatetoappoptions.md) > [openInNewTab](./kibana-plugin-core-public.navigatetoappoptions.openinnewtab.md) - -## NavigateToAppOptions.openInNewTab property - -if true, will open the app in new tab, will share session information via window.open if base - -Signature: - -```typescript -openInNewTab?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.path.md b/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.path.md deleted file mode 100644 index b39fc8c324ad9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.path.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavigateToAppOptions](./kibana-plugin-core-public.navigatetoappoptions.md) > [path](./kibana-plugin-core-public.navigatetoappoptions.path.md) - -## NavigateToAppOptions.path property - -optional path inside application to deep link to. If undefined, will use [the app's default path](./kibana-plugin-core-public.app.defaultpath.md) as default. - -Signature: - -```typescript -path?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.replace.md b/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.replace.md deleted file mode 100644 index 8a7440025aedc..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.replace.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavigateToAppOptions](./kibana-plugin-core-public.navigatetoappoptions.md) > [replace](./kibana-plugin-core-public.navigatetoappoptions.replace.md) - -## NavigateToAppOptions.replace property - -if true, will not create a new history entry when navigating (using `replace` instead of `push`) - -Signature: - -```typescript -replace?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.skipappleave.md b/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.skipappleave.md deleted file mode 100644 index 553d557a92daa..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.skipappleave.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavigateToAppOptions](./kibana-plugin-core-public.navigatetoappoptions.md) > [skipAppLeave](./kibana-plugin-core-public.navigatetoappoptions.skipappleave.md) - -## NavigateToAppOptions.skipAppLeave property - -if true, will bypass the default onAppLeave behavior - -Signature: - -```typescript -skipAppLeave?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.state.md b/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.state.md deleted file mode 100644 index ccb76f7bbf18e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.navigatetoappoptions.state.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavigateToAppOptions](./kibana-plugin-core-public.navigatetoappoptions.md) > [state](./kibana-plugin-core-public.navigatetoappoptions.state.md) - -## NavigateToAppOptions.state property - -optional state to forward to the application - -Signature: - -```typescript -state?: unknown; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.forceredirect.md b/docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.forceredirect.md deleted file mode 100644 index a71196093a9a0..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.forceredirect.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavigateToUrlOptions](./kibana-plugin-core-public.navigatetourloptions.md) > [forceRedirect](./kibana-plugin-core-public.navigatetourloptions.forceredirect.md) - -## NavigateToUrlOptions.forceRedirect property - -if true will force a full page reload/refresh/assign, overriding the outcome of other url checks against current the location (effectively using `window.location.assign` instead of `push`) - -Signature: - -```typescript -forceRedirect?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.md b/docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.md deleted file mode 100644 index 2ee7b4f843c67..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavigateToUrlOptions](./kibana-plugin-core-public.navigatetourloptions.md) - -## NavigateToUrlOptions interface - -Options for the [navigateToUrl API](./kibana-plugin-core-public.applicationstart.navigatetourl.md) - -Signature: - -```typescript -export interface NavigateToUrlOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [forceRedirect?](./kibana-plugin-core-public.navigatetourloptions.forceredirect.md) | boolean | (Optional) if true will force a full page reload/refresh/assign, overriding the outcome of other url checks against current the location (effectively using window.location.assign instead of push) | -| [skipAppLeave?](./kibana-plugin-core-public.navigatetourloptions.skipappleave.md) | boolean | (Optional) if true, will bypass the default onAppLeave behavior | - diff --git a/docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.skipappleave.md b/docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.skipappleave.md deleted file mode 100644 index f3685c02ff40d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.navigatetourloptions.skipappleave.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavigateToUrlOptions](./kibana-plugin-core-public.navigatetourloptions.md) > [skipAppLeave](./kibana-plugin-core-public.navigatetourloptions.skipappleave.md) - -## NavigateToUrlOptions.skipAppLeave property - -if true, will bypass the default onAppLeave behavior - -Signature: - -```typescript -skipAppLeave?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.navtype.md b/docs/development/core/public/kibana-plugin-core-public.navtype.md deleted file mode 100644 index 8f1d9a4351754..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.navtype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NavType](./kibana-plugin-core-public.navtype.md) - -## NavType type - -Signature: - -```typescript -export declare type NavType = 'modern' | 'legacy'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.notificationssetup.md b/docs/development/core/public/kibana-plugin-core-public.notificationssetup.md deleted file mode 100644 index efaeafa1afb1a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.notificationssetup.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NotificationsSetup](./kibana-plugin-core-public.notificationssetup.md) - -## NotificationsSetup interface - - -Signature: - -```typescript -export interface NotificationsSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [toasts](./kibana-plugin-core-public.notificationssetup.toasts.md) | ToastsSetup | [ToastsSetup](./kibana-plugin-core-public.toastssetup.md) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.notificationssetup.toasts.md b/docs/development/core/public/kibana-plugin-core-public.notificationssetup.toasts.md deleted file mode 100644 index f544ce98989b2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.notificationssetup.toasts.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NotificationsSetup](./kibana-plugin-core-public.notificationssetup.md) > [toasts](./kibana-plugin-core-public.notificationssetup.toasts.md) - -## NotificationsSetup.toasts property - -[ToastsSetup](./kibana-plugin-core-public.toastssetup.md) - -Signature: - -```typescript -toasts: ToastsSetup; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.notificationsstart.md b/docs/development/core/public/kibana-plugin-core-public.notificationsstart.md deleted file mode 100644 index 0e77badd51235..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.notificationsstart.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NotificationsStart](./kibana-plugin-core-public.notificationsstart.md) - -## NotificationsStart interface - - -Signature: - -```typescript -export interface NotificationsStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [toasts](./kibana-plugin-core-public.notificationsstart.toasts.md) | ToastsStart | [ToastsStart](./kibana-plugin-core-public.toastsstart.md) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.notificationsstart.toasts.md b/docs/development/core/public/kibana-plugin-core-public.notificationsstart.toasts.md deleted file mode 100644 index a047c66f04e71..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.notificationsstart.toasts.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [NotificationsStart](./kibana-plugin-core-public.notificationsstart.md) > [toasts](./kibana-plugin-core-public.notificationsstart.toasts.md) - -## NotificationsStart.toasts property - -[ToastsStart](./kibana-plugin-core-public.toastsstart.md) - -Signature: - -```typescript -toasts: ToastsStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.add.md b/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.add.md deleted file mode 100644 index fd3ce0b3a4292..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.add.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayBannersStart](./kibana-plugin-core-public.overlaybannersstart.md) > [add](./kibana-plugin-core-public.overlaybannersstart.add.md) - -## OverlayBannersStart.add() method - -Add a new banner - -Signature: - -```typescript -add(mount: MountPoint, priority?: number): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| mount | MountPoint | [MountPoint](./kibana-plugin-core-public.mountpoint.md) | -| priority | number | optional priority order to display this banner. Higher priority values are shown first. | - -Returns: - -string - -a unique identifier for the given banner to be used with [OverlayBannersStart.remove()](./kibana-plugin-core-public.overlaybannersstart.remove.md) and [OverlayBannersStart.replace()](./kibana-plugin-core-public.overlaybannersstart.replace.md) - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.getcomponent.md b/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.getcomponent.md deleted file mode 100644 index b5f0ab1d01299..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.getcomponent.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayBannersStart](./kibana-plugin-core-public.overlaybannersstart.md) > [getComponent](./kibana-plugin-core-public.overlaybannersstart.getcomponent.md) - -## OverlayBannersStart.getComponent() method - -Signature: - -```typescript -getComponent(): JSX.Element; -``` -Returns: - -JSX.Element - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.md b/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.md deleted file mode 100644 index f81da84d58bdc..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayBannersStart](./kibana-plugin-core-public.overlaybannersstart.md) - -## OverlayBannersStart interface - - -Signature: - -```typescript -export interface OverlayBannersStart -``` - -## Methods - -| Method | Description | -| --- | --- | -| [add(mount, priority)](./kibana-plugin-core-public.overlaybannersstart.add.md) | Add a new banner | -| [getComponent()](./kibana-plugin-core-public.overlaybannersstart.getcomponent.md) | | -| [remove(id)](./kibana-plugin-core-public.overlaybannersstart.remove.md) | Remove a banner | -| [replace(id, mount, priority)](./kibana-plugin-core-public.overlaybannersstart.replace.md) | Replace a banner in place | - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.remove.md b/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.remove.md deleted file mode 100644 index ce1e3ee08bd51..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.remove.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayBannersStart](./kibana-plugin-core-public.overlaybannersstart.md) > [remove](./kibana-plugin-core-public.overlaybannersstart.remove.md) - -## OverlayBannersStart.remove() method - -Remove a banner - -Signature: - -```typescript -remove(id: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | the unique identifier for the banner returned by [OverlayBannersStart.add()](./kibana-plugin-core-public.overlaybannersstart.add.md) | - -Returns: - -boolean - -if the banner was found or not - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.replace.md b/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.replace.md deleted file mode 100644 index ea16c739cc847..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaybannersstart.replace.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayBannersStart](./kibana-plugin-core-public.overlaybannersstart.md) > [replace](./kibana-plugin-core-public.overlaybannersstart.replace.md) - -## OverlayBannersStart.replace() method - -Replace a banner in place - -Signature: - -```typescript -replace(id: string | undefined, mount: MountPoint, priority?: number): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string \| undefined | the unique identifier for the banner returned by [OverlayBannersStart.add()](./kibana-plugin-core-public.overlaybannersstart.add.md) | -| mount | MountPoint | [MountPoint](./kibana-plugin-core-public.mountpoint.md) | -| priority | number | optional priority order to display this banner. Higher priority values are shown first. | - -Returns: - -string - -a new identifier for the given banner to be used with [OverlayBannersStart.remove()](./kibana-plugin-core-public.overlaybannersstart.remove.md) and [OverlayBannersStart.replace()](./kibana-plugin-core-public.overlaybannersstart.replace.md) - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions._aria-label_.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions._aria-label_.md deleted file mode 100644 index f135fa9618958..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions._aria-label_.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > ["aria-label"](./kibana-plugin-core-public.overlayflyoutopenoptions._aria-label_.md) - -## OverlayFlyoutOpenOptions."aria-label" property - -Signature: - -```typescript -'aria-label'?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions._data-test-subj_.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions._data-test-subj_.md deleted file mode 100644 index d583aae0e0b19..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions._data-test-subj_.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > ["data-test-subj"](./kibana-plugin-core-public.overlayflyoutopenoptions._data-test-subj_.md) - -## OverlayFlyoutOpenOptions."data-test-subj" property - -Signature: - -```typescript -'data-test-subj'?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.classname.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.classname.md deleted file mode 100644 index 26f6db77cccea..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.classname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > [className](./kibana-plugin-core-public.overlayflyoutopenoptions.classname.md) - -## OverlayFlyoutOpenOptions.className property - -Signature: - -```typescript -className?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.closebuttonarialabel.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.closebuttonarialabel.md deleted file mode 100644 index 44014b7f0d816..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.closebuttonarialabel.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > [closeButtonAriaLabel](./kibana-plugin-core-public.overlayflyoutopenoptions.closebuttonarialabel.md) - -## OverlayFlyoutOpenOptions.closeButtonAriaLabel property - -Signature: - -```typescript -closeButtonAriaLabel?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.hideclosebutton.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.hideclosebutton.md deleted file mode 100644 index 149a53f35d34d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.hideclosebutton.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > [hideCloseButton](./kibana-plugin-core-public.overlayflyoutopenoptions.hideclosebutton.md) - -## OverlayFlyoutOpenOptions.hideCloseButton property - -Signature: - -```typescript -hideCloseButton?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.maskprops.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.maskprops.md deleted file mode 100644 index 3cb3e0b4902a9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.maskprops.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > [maskProps](./kibana-plugin-core-public.overlayflyoutopenoptions.maskprops.md) - -## OverlayFlyoutOpenOptions.maskProps property - -Signature: - -```typescript -maskProps?: EuiOverlayMaskProps; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md deleted file mode 100644 index 4f582e746191f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > [maxWidth](./kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md) - -## OverlayFlyoutOpenOptions.maxWidth property - -Signature: - -```typescript -maxWidth?: boolean | number | string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.md deleted file mode 100644 index 86117422e5faf..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) - -## OverlayFlyoutOpenOptions interface - - -Signature: - -```typescript -export interface OverlayFlyoutOpenOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| ["aria-label"?](./kibana-plugin-core-public.overlayflyoutopenoptions._aria-label_.md) | string | (Optional) | -| ["data-test-subj"?](./kibana-plugin-core-public.overlayflyoutopenoptions._data-test-subj_.md) | string | (Optional) | -| [className?](./kibana-plugin-core-public.overlayflyoutopenoptions.classname.md) | string | (Optional) | -| [closeButtonAriaLabel?](./kibana-plugin-core-public.overlayflyoutopenoptions.closebuttonarialabel.md) | string | (Optional) | -| [hideCloseButton?](./kibana-plugin-core-public.overlayflyoutopenoptions.hideclosebutton.md) | boolean | (Optional) | -| [maskProps?](./kibana-plugin-core-public.overlayflyoutopenoptions.maskprops.md) | EuiOverlayMaskProps | (Optional) | -| [maxWidth?](./kibana-plugin-core-public.overlayflyoutopenoptions.maxwidth.md) | boolean \| number \| string | (Optional) | -| [onClose?](./kibana-plugin-core-public.overlayflyoutopenoptions.onclose.md) | (flyout: OverlayRef) => void | (Optional) EuiFlyout onClose handler. If provided the consumer is responsible for calling flyout.close() to close the flyout; | -| [outsideClickCloses?](./kibana-plugin-core-public.overlayflyoutopenoptions.outsideclickcloses.md) | boolean | (Optional) | -| [ownFocus?](./kibana-plugin-core-public.overlayflyoutopenoptions.ownfocus.md) | boolean | (Optional) | -| [size?](./kibana-plugin-core-public.overlayflyoutopenoptions.size.md) | EuiFlyoutSize | (Optional) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.onclose.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.onclose.md deleted file mode 100644 index 5cfbba4c84a36..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.onclose.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > [onClose](./kibana-plugin-core-public.overlayflyoutopenoptions.onclose.md) - -## OverlayFlyoutOpenOptions.onClose property - -EuiFlyout onClose handler. If provided the consumer is responsible for calling flyout.close() to close the flyout; - -Signature: - -```typescript -onClose?: (flyout: OverlayRef) => void; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.outsideclickcloses.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.outsideclickcloses.md deleted file mode 100644 index acb9bac6f55da..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.outsideclickcloses.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > [outsideClickCloses](./kibana-plugin-core-public.overlayflyoutopenoptions.outsideclickcloses.md) - -## OverlayFlyoutOpenOptions.outsideClickCloses property - -Signature: - -```typescript -outsideClickCloses?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.ownfocus.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.ownfocus.md deleted file mode 100644 index 337ce2c48e1d9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.ownfocus.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > [ownFocus](./kibana-plugin-core-public.overlayflyoutopenoptions.ownfocus.md) - -## OverlayFlyoutOpenOptions.ownFocus property - -Signature: - -```typescript -ownFocus?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.size.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.size.md deleted file mode 100644 index 3754242dc7c26..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutopenoptions.size.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) > [size](./kibana-plugin-core-public.overlayflyoutopenoptions.size.md) - -## OverlayFlyoutOpenOptions.size property - -Signature: - -```typescript -size?: EuiFlyoutSize; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutstart.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutstart.md deleted file mode 100644 index 790fd57320413..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutstart.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutStart](./kibana-plugin-core-public.overlayflyoutstart.md) - -## OverlayFlyoutStart interface - -APIs to open and manage fly-out dialogs. - -Signature: - -```typescript -export interface OverlayFlyoutStart -``` - -## Methods - -| Method | Description | -| --- | --- | -| [open(mount, options)](./kibana-plugin-core-public.overlayflyoutstart.open.md) | Opens a flyout panel with the given mount point inside. You can use close() on the returned FlyoutRef to close the flyout. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutstart.open.md b/docs/development/core/public/kibana-plugin-core-public.overlayflyoutstart.open.md deleted file mode 100644 index 94290eb91f942..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayflyoutstart.open.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayFlyoutStart](./kibana-plugin-core-public.overlayflyoutstart.md) > [open](./kibana-plugin-core-public.overlayflyoutstart.open.md) - -## OverlayFlyoutStart.open() method - -Opens a flyout panel with the given mount point inside. You can use `close()` on the returned FlyoutRef to close the flyout. - -Signature: - -```typescript -open(mount: MountPoint, options?: OverlayFlyoutOpenOptions): OverlayRef; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| mount | MountPoint | [MountPoint](./kibana-plugin-core-public.mountpoint.md) - Mounts the children inside a flyout panel | -| options | OverlayFlyoutOpenOptions | [OverlayFlyoutOpenOptions](./kibana-plugin-core-public.overlayflyoutopenoptions.md) - options for the flyout [OverlayRef](./kibana-plugin-core-public.overlayref.md) A reference to the opened flyout panel. | - -Returns: - -OverlayRef - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions._data-test-subj_.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions._data-test-subj_.md deleted file mode 100644 index 3569b2153c3da..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions._data-test-subj_.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) > ["data-test-subj"](./kibana-plugin-core-public.overlaymodalconfirmoptions._data-test-subj_.md) - -## OverlayModalConfirmOptions."data-test-subj" property - -Signature: - -```typescript -'data-test-subj'?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.buttoncolor.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.buttoncolor.md deleted file mode 100644 index 5c827e19e42e1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.buttoncolor.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) > [buttonColor](./kibana-plugin-core-public.overlaymodalconfirmoptions.buttoncolor.md) - -## OverlayModalConfirmOptions.buttonColor property - -Signature: - -```typescript -buttonColor?: EuiConfirmModalProps['buttonColor']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.cancelbuttontext.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.cancelbuttontext.md deleted file mode 100644 index 0c0b9fd48dbd6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.cancelbuttontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) > [cancelButtonText](./kibana-plugin-core-public.overlaymodalconfirmoptions.cancelbuttontext.md) - -## OverlayModalConfirmOptions.cancelButtonText property - -Signature: - -```typescript -cancelButtonText?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.classname.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.classname.md deleted file mode 100644 index 0a622aeaac418..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.classname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) > [className](./kibana-plugin-core-public.overlaymodalconfirmoptions.classname.md) - -## OverlayModalConfirmOptions.className property - -Signature: - -```typescript -className?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.closebuttonarialabel.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.closebuttonarialabel.md deleted file mode 100644 index 8a321a0b07b4c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.closebuttonarialabel.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) > [closeButtonAriaLabel](./kibana-plugin-core-public.overlaymodalconfirmoptions.closebuttonarialabel.md) - -## OverlayModalConfirmOptions.closeButtonAriaLabel property - -Signature: - -```typescript -closeButtonAriaLabel?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.confirmbuttontext.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.confirmbuttontext.md deleted file mode 100644 index f84d834369f5b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.confirmbuttontext.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) > [confirmButtonText](./kibana-plugin-core-public.overlaymodalconfirmoptions.confirmbuttontext.md) - -## OverlayModalConfirmOptions.confirmButtonText property - -Signature: - -```typescript -confirmButtonText?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.defaultfocusedbutton.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.defaultfocusedbutton.md deleted file mode 100644 index c5edf48b54ea8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.defaultfocusedbutton.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) > [defaultFocusedButton](./kibana-plugin-core-public.overlaymodalconfirmoptions.defaultfocusedbutton.md) - -## OverlayModalConfirmOptions.defaultFocusedButton property - -Signature: - -```typescript -defaultFocusedButton?: EuiConfirmModalProps['defaultFocusedButton']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.maxwidth.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.maxwidth.md deleted file mode 100644 index 488b4eb3794fb..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.maxwidth.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) > [maxWidth](./kibana-plugin-core-public.overlaymodalconfirmoptions.maxwidth.md) - -## OverlayModalConfirmOptions.maxWidth property - -Sets the max-width of the modal. Set to `true` to use the default (`euiBreakpoints 'm'`), set to `false` to not restrict the width, set to a number for a custom width in px, set to a string for a custom width in custom measurement. - -Signature: - -```typescript -maxWidth?: boolean | number | string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.md deleted file mode 100644 index 2f672e551ba51..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) - -## OverlayModalConfirmOptions interface - - -Signature: - -```typescript -export interface OverlayModalConfirmOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| ["data-test-subj"?](./kibana-plugin-core-public.overlaymodalconfirmoptions._data-test-subj_.md) | string | (Optional) | -| [buttonColor?](./kibana-plugin-core-public.overlaymodalconfirmoptions.buttoncolor.md) | EuiConfirmModalProps\['buttonColor'\] | (Optional) | -| [cancelButtonText?](./kibana-plugin-core-public.overlaymodalconfirmoptions.cancelbuttontext.md) | string | (Optional) | -| [className?](./kibana-plugin-core-public.overlaymodalconfirmoptions.classname.md) | string | (Optional) | -| [closeButtonAriaLabel?](./kibana-plugin-core-public.overlaymodalconfirmoptions.closebuttonarialabel.md) | string | (Optional) | -| [confirmButtonText?](./kibana-plugin-core-public.overlaymodalconfirmoptions.confirmbuttontext.md) | string | (Optional) | -| [defaultFocusedButton?](./kibana-plugin-core-public.overlaymodalconfirmoptions.defaultfocusedbutton.md) | EuiConfirmModalProps\['defaultFocusedButton'\] | (Optional) | -| [maxWidth?](./kibana-plugin-core-public.overlaymodalconfirmoptions.maxwidth.md) | boolean \| number \| string | (Optional) Sets the max-width of the modal. Set to true to use the default (euiBreakpoints 'm'), set to false to not restrict the width, set to a number for a custom width in px, set to a string for a custom width in custom measurement. | -| [title?](./kibana-plugin-core-public.overlaymodalconfirmoptions.title.md) | string | (Optional) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.title.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.title.md deleted file mode 100644 index cfbe41e0a7e9f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalconfirmoptions.title.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) > [title](./kibana-plugin-core-public.overlaymodalconfirmoptions.title.md) - -## OverlayModalConfirmOptions.title property - -Signature: - -```typescript -title?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions._data-test-subj_.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions._data-test-subj_.md deleted file mode 100644 index f0eba659dc62b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions._data-test-subj_.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalOpenOptions](./kibana-plugin-core-public.overlaymodalopenoptions.md) > ["data-test-subj"](./kibana-plugin-core-public.overlaymodalopenoptions._data-test-subj_.md) - -## OverlayModalOpenOptions."data-test-subj" property - -Signature: - -```typescript -'data-test-subj'?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.classname.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.classname.md deleted file mode 100644 index 769387b8c35ff..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.classname.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalOpenOptions](./kibana-plugin-core-public.overlaymodalopenoptions.md) > [className](./kibana-plugin-core-public.overlaymodalopenoptions.classname.md) - -## OverlayModalOpenOptions.className property - -Signature: - -```typescript -className?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.closebuttonarialabel.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.closebuttonarialabel.md deleted file mode 100644 index 4e685055b9e17..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.closebuttonarialabel.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalOpenOptions](./kibana-plugin-core-public.overlaymodalopenoptions.md) > [closeButtonAriaLabel](./kibana-plugin-core-public.overlaymodalopenoptions.closebuttonarialabel.md) - -## OverlayModalOpenOptions.closeButtonAriaLabel property - -Signature: - -```typescript -closeButtonAriaLabel?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.maxwidth.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.maxwidth.md deleted file mode 100644 index 0ae888f9cb361..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.maxwidth.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalOpenOptions](./kibana-plugin-core-public.overlaymodalopenoptions.md) > [maxWidth](./kibana-plugin-core-public.overlaymodalopenoptions.maxwidth.md) - -## OverlayModalOpenOptions.maxWidth property - -Signature: - -```typescript -maxWidth?: boolean | number | string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.md deleted file mode 100644 index 5fc978ea26262..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalopenoptions.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalOpenOptions](./kibana-plugin-core-public.overlaymodalopenoptions.md) - -## OverlayModalOpenOptions interface - - -Signature: - -```typescript -export interface OverlayModalOpenOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| ["data-test-subj"?](./kibana-plugin-core-public.overlaymodalopenoptions._data-test-subj_.md) | string | (Optional) | -| [className?](./kibana-plugin-core-public.overlaymodalopenoptions.classname.md) | string | (Optional) | -| [closeButtonAriaLabel?](./kibana-plugin-core-public.overlaymodalopenoptions.closebuttonarialabel.md) | string | (Optional) | -| [maxWidth?](./kibana-plugin-core-public.overlaymodalopenoptions.maxwidth.md) | boolean \| number \| string | (Optional) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.md deleted file mode 100644 index 1d8fe1a92dd90..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalStart](./kibana-plugin-core-public.overlaymodalstart.md) - -## OverlayModalStart interface - -APIs to open and manage modal dialogs. - -Signature: - -```typescript -export interface OverlayModalStart -``` - -## Methods - -| Method | Description | -| --- | --- | -| [open(mount, options)](./kibana-plugin-core-public.overlaymodalstart.open.md) | Opens a modal panel with the given mount point inside. You can use close() on the returned OverlayRef to close the modal. | -| [openConfirm(message, options)](./kibana-plugin-core-public.overlaymodalstart.openconfirm.md) | Opens a confirmation modal with the given text or mountpoint as a message. Returns a Promise resolving to true if user confirmed or false otherwise. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.open.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.open.md deleted file mode 100644 index 35bfa406b4d17..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.open.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalStart](./kibana-plugin-core-public.overlaymodalstart.md) > [open](./kibana-plugin-core-public.overlaymodalstart.open.md) - -## OverlayModalStart.open() method - -Opens a modal panel with the given mount point inside. You can use `close()` on the returned OverlayRef to close the modal. - -Signature: - -```typescript -open(mount: MountPoint, options?: OverlayModalOpenOptions): OverlayRef; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| mount | MountPoint | [MountPoint](./kibana-plugin-core-public.mountpoint.md) - Mounts the children inside the modal | -| options | OverlayModalOpenOptions | [OverlayModalOpenOptions](./kibana-plugin-core-public.overlaymodalopenoptions.md) - options for the modal [OverlayRef](./kibana-plugin-core-public.overlayref.md) A reference to the opened modal. | - -Returns: - -OverlayRef - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.openconfirm.md b/docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.openconfirm.md deleted file mode 100644 index 056f512de87bf..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaymodalstart.openconfirm.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayModalStart](./kibana-plugin-core-public.overlaymodalstart.md) > [openConfirm](./kibana-plugin-core-public.overlaymodalstart.openconfirm.md) - -## OverlayModalStart.openConfirm() method - -Opens a confirmation modal with the given text or mountpoint as a message. Returns a Promise resolving to `true` if user confirmed or `false` otherwise. - -Signature: - -```typescript -openConfirm(message: MountPoint | string, options?: OverlayModalConfirmOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| message | MountPoint \| string | [MountPoint](./kibana-plugin-core-public.mountpoint.md) - string or mountpoint to be used a the confirm message body | -| options | OverlayModalConfirmOptions | [OverlayModalConfirmOptions](./kibana-plugin-core-public.overlaymodalconfirmoptions.md) - options for the confirm modal | - -Returns: - -Promise<boolean> - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayref.close.md b/docs/development/core/public/kibana-plugin-core-public.overlayref.close.md deleted file mode 100644 index 454723f6ffd09..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayref.close.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayRef](./kibana-plugin-core-public.overlayref.md) > [close](./kibana-plugin-core-public.overlayref.close.md) - -## OverlayRef.close() method - -Closes the referenced overlay if it's still open which in turn will resolve the `onClose` Promise. If the overlay had already been closed this method does nothing. - -Signature: - -```typescript -close(): Promise; -``` -Returns: - -Promise<void> - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayref.md b/docs/development/core/public/kibana-plugin-core-public.overlayref.md deleted file mode 100644 index da11e284f285d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayref.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayRef](./kibana-plugin-core-public.overlayref.md) - -## OverlayRef interface - -Returned by [OverlayStart](./kibana-plugin-core-public.overlaystart.md) methods for closing a mounted overlay. - -Signature: - -```typescript -export interface OverlayRef -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [onClose](./kibana-plugin-core-public.overlayref.onclose.md) | Promise<void> | A Promise that will resolve once this overlay is closed.Overlays can close from user interaction, calling close() on the overlay reference or another overlay replacing yours via openModal or openFlyout. | - -## Methods - -| Method | Description | -| --- | --- | -| [close()](./kibana-plugin-core-public.overlayref.close.md) | Closes the referenced overlay if it's still open which in turn will resolve the onClose Promise. If the overlay had already been closed this method does nothing. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlayref.onclose.md b/docs/development/core/public/kibana-plugin-core-public.overlayref.onclose.md deleted file mode 100644 index 3752c6ecf7de0..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlayref.onclose.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayRef](./kibana-plugin-core-public.overlayref.md) > [onClose](./kibana-plugin-core-public.overlayref.onclose.md) - -## OverlayRef.onClose property - -A Promise that will resolve once this overlay is closed. - -Overlays can close from user interaction, calling `close()` on the overlay reference or another overlay replacing yours via `openModal` or `openFlyout`. - -Signature: - -```typescript -onClose: Promise; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaystart.banners.md b/docs/development/core/public/kibana-plugin-core-public.overlaystart.banners.md deleted file mode 100644 index 2cb1565a4cfc4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaystart.banners.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayStart](./kibana-plugin-core-public.overlaystart.md) > [banners](./kibana-plugin-core-public.overlaystart.banners.md) - -## OverlayStart.banners property - -[OverlayBannersStart](./kibana-plugin-core-public.overlaybannersstart.md) - -Signature: - -```typescript -banners: OverlayBannersStart; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaystart.md b/docs/development/core/public/kibana-plugin-core-public.overlaystart.md deleted file mode 100644 index 3bbdd4ab9b918..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaystart.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayStart](./kibana-plugin-core-public.overlaystart.md) - -## OverlayStart interface - - -Signature: - -```typescript -export interface OverlayStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [banners](./kibana-plugin-core-public.overlaystart.banners.md) | OverlayBannersStart | [OverlayBannersStart](./kibana-plugin-core-public.overlaybannersstart.md) | -| [openConfirm](./kibana-plugin-core-public.overlaystart.openconfirm.md) | OverlayModalStart\['openConfirm'\] | | -| [openFlyout](./kibana-plugin-core-public.overlaystart.openflyout.md) | OverlayFlyoutStart\['open'\] | | -| [openModal](./kibana-plugin-core-public.overlaystart.openmodal.md) | OverlayModalStart\['open'\] | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaystart.openconfirm.md b/docs/development/core/public/kibana-plugin-core-public.overlaystart.openconfirm.md deleted file mode 100644 index cfa27f4ea6f60..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaystart.openconfirm.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayStart](./kibana-plugin-core-public.overlaystart.md) > [openConfirm](./kibana-plugin-core-public.overlaystart.openconfirm.md) - -## OverlayStart.openConfirm property - - -Signature: - -```typescript -openConfirm: OverlayModalStart['openConfirm']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaystart.openflyout.md b/docs/development/core/public/kibana-plugin-core-public.overlaystart.openflyout.md deleted file mode 100644 index 8059918b0ec10..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaystart.openflyout.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayStart](./kibana-plugin-core-public.overlaystart.md) > [openFlyout](./kibana-plugin-core-public.overlaystart.openflyout.md) - -## OverlayStart.openFlyout property - - -Signature: - -```typescript -openFlyout: OverlayFlyoutStart['open']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.overlaystart.openmodal.md b/docs/development/core/public/kibana-plugin-core-public.overlaystart.openmodal.md deleted file mode 100644 index 5b55084c78727..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.overlaystart.openmodal.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [OverlayStart](./kibana-plugin-core-public.overlaystart.md) > [openModal](./kibana-plugin-core-public.overlaystart.openmodal.md) - -## OverlayStart.openModal property - - -Signature: - -```typescript -openModal: OverlayModalStart['open']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.plugin_2.md b/docs/development/core/public/kibana-plugin-core-public.plugin_2.md deleted file mode 100644 index da8cef9b83cc7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.plugin_2.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [Plugin\_2](./kibana-plugin-core-public.plugin_2.md) - -## Plugin\_2 interface - -The interface that should be returned by a `PluginInitializer`. - -Signature: - -```typescript -export interface Plugin -``` - -## Methods - -| Method | Description | -| --- | --- | -| [setup(core, plugins)](./kibana-plugin-core-public.plugin_2.setup.md) | | -| [start(core, plugins)](./kibana-plugin-core-public.plugin_2.start.md) | | -| [stop()?](./kibana-plugin-core-public.plugin_2.stop.md) | (Optional) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.plugin_2.setup.md b/docs/development/core/public/kibana-plugin-core-public.plugin_2.setup.md deleted file mode 100644 index 5ebb5a1a74811..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.plugin_2.setup.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [Plugin\_2](./kibana-plugin-core-public.plugin_2.md) > [setup](./kibana-plugin-core-public.plugin_2.setup.md) - -## Plugin\_2.setup() method - -Signature: - -```typescript -setup(core: CoreSetup, plugins: TPluginsSetup): TSetup; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreSetup<TPluginsStart, TStart> | | -| plugins | TPluginsSetup | | - -Returns: - -TSetup - diff --git a/docs/development/core/public/kibana-plugin-core-public.plugin_2.start.md b/docs/development/core/public/kibana-plugin-core-public.plugin_2.start.md deleted file mode 100644 index f4979ee033aac..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.plugin_2.start.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [Plugin\_2](./kibana-plugin-core-public.plugin_2.md) > [start](./kibana-plugin-core-public.plugin_2.start.md) - -## Plugin\_2.start() method - -Signature: - -```typescript -start(core: CoreStart, plugins: TPluginsStart): TStart; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreStart | | -| plugins | TPluginsStart | | - -Returns: - -TStart - diff --git a/docs/development/core/public/kibana-plugin-core-public.plugin_2.stop.md b/docs/development/core/public/kibana-plugin-core-public.plugin_2.stop.md deleted file mode 100644 index 69532f2d0e09d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.plugin_2.stop.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [Plugin\_2](./kibana-plugin-core-public.plugin_2.md) > [stop](./kibana-plugin-core-public.plugin_2.stop.md) - -## Plugin\_2.stop() method - -Signature: - -```typescript -stop?(): void; -``` -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.plugininitializer.md b/docs/development/core/public/kibana-plugin-core-public.plugininitializer.md deleted file mode 100644 index 1fcc2999dfd2e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.plugininitializer.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [PluginInitializer](./kibana-plugin-core-public.plugininitializer.md) - -## PluginInitializer type - -The `plugin` export at the root of a plugin's `public` directory should conform to this interface. - -Signature: - -```typescript -export declare type PluginInitializer = (core: PluginInitializerContext) => Plugin; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.config.md b/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.config.md deleted file mode 100644 index 0f4d7df94a30e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.config.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [PluginInitializerContext](./kibana-plugin-core-public.plugininitializercontext.md) > [config](./kibana-plugin-core-public.plugininitializercontext.config.md) - -## PluginInitializerContext.config property - -Signature: - -```typescript -readonly config: { - get: () => T; - }; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.env.md b/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.env.md deleted file mode 100644 index 532561eafc4d7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.env.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [PluginInitializerContext](./kibana-plugin-core-public.plugininitializercontext.md) > [env](./kibana-plugin-core-public.plugininitializercontext.env.md) - -## PluginInitializerContext.env property - -Signature: - -```typescript -readonly env: { - mode: Readonly; - packageInfo: Readonly; - }; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.md b/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.md deleted file mode 100644 index 3304b4bf3def4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [PluginInitializerContext](./kibana-plugin-core-public.plugininitializercontext.md) - -## PluginInitializerContext interface - -The available core services passed to a `PluginInitializer` - -Signature: - -```typescript -export interface PluginInitializerContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [config](./kibana-plugin-core-public.plugininitializercontext.config.md) | { get: <T extends object = ConfigSchema>() => T; } | | -| [env](./kibana-plugin-core-public.plugininitializercontext.env.md) | { mode: Readonly<EnvironmentMode>; packageInfo: Readonly<PackageInfo>; } | | -| [opaqueId](./kibana-plugin-core-public.plugininitializercontext.opaqueid.md) | PluginOpaqueId | A symbol used to identify this plugin in the system. Needed when registering handlers or context providers. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.opaqueid.md b/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.opaqueid.md deleted file mode 100644 index 8ee0c3a415ee3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.plugininitializercontext.opaqueid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [PluginInitializerContext](./kibana-plugin-core-public.plugininitializercontext.md) > [opaqueId](./kibana-plugin-core-public.plugininitializercontext.opaqueid.md) - -## PluginInitializerContext.opaqueId property - -A symbol used to identify this plugin in the system. Needed when registering handlers or context providers. - -Signature: - -```typescript -readonly opaqueId: PluginOpaqueId; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.publicappdeeplinkinfo.md b/docs/development/core/public/kibana-plugin-core-public.publicappdeeplinkinfo.md deleted file mode 100644 index 40fd98687c619..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.publicappdeeplinkinfo.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [PublicAppDeepLinkInfo](./kibana-plugin-core-public.publicappdeeplinkinfo.md) - -## PublicAppDeepLinkInfo type - -Public information about a registered app's [deepLinks](./kibana-plugin-core-public.appdeeplink.md) - -Signature: - -```typescript -export declare type PublicAppDeepLinkInfo = Omit & { - deepLinks: PublicAppDeepLinkInfo[]; - keywords: string[]; - navLinkStatus: AppNavLinkStatus; - searchable: boolean; -}; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.publicappinfo.md b/docs/development/core/public/kibana-plugin-core-public.publicappinfo.md deleted file mode 100644 index 01d23ae47a0d9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.publicappinfo.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [PublicAppInfo](./kibana-plugin-core-public.publicappinfo.md) - -## PublicAppInfo type - -Public information about a registered [application](./kibana-plugin-core-public.app.md) - -Signature: - -```typescript -export declare type PublicAppInfo = Omit & { - status: AppStatus; - navLinkStatus: AppNavLinkStatus; - appRoute: string; - keywords: string[]; - deepLinks: PublicAppDeepLinkInfo[]; - searchable: boolean; -}; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.publicuisettingsparams.md b/docs/development/core/public/kibana-plugin-core-public.publicuisettingsparams.md deleted file mode 100644 index 678a69289ff23..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.publicuisettingsparams.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [PublicUiSettingsParams](./kibana-plugin-core-public.publicuisettingsparams.md) - -## PublicUiSettingsParams type - -A sub-set of [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) exposed to the client-side. - -Signature: - -```typescript -export declare type PublicUiSettingsParams = Omit; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.resolvedeprecationresponse.md b/docs/development/core/public/kibana-plugin-core-public.resolvedeprecationresponse.md deleted file mode 100644 index 928bf8c07004e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.resolvedeprecationresponse.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ResolveDeprecationResponse](./kibana-plugin-core-public.resolvedeprecationresponse.md) - -## ResolveDeprecationResponse type - -Signature: - -```typescript -export declare type ResolveDeprecationResponse = { - status: 'ok'; -} | { - status: 'fail'; - reason: string; -}; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.alias_purpose.md b/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.alias_purpose.md deleted file mode 100644 index fb6f98eda62d1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.alias_purpose.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ResolvedSimpleSavedObject](./kibana-plugin-core-public.resolvedsimplesavedobject.md) > [alias\_purpose](./kibana-plugin-core-public.resolvedsimplesavedobject.alias_purpose.md) - -## ResolvedSimpleSavedObject.alias\_purpose property - -The reason this alias was created. - -Currently this is used to determine whether or not a toast should be shown when a user is redirected from a legacy URL; if the alias was created because of saved object conversion, then we will display a toast telling the user that the object has a new URL. - -\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is `'aliasMatch'` or `'conflict'`). - -Signature: - -```typescript -alias_purpose?: SavedObjectsResolveResponse['alias_purpose']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.alias_target_id.md b/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.alias_target_id.md deleted file mode 100644 index 0e82842ef749d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.alias_target_id.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ResolvedSimpleSavedObject](./kibana-plugin-core-public.resolvedsimplesavedobject.md) > [alias\_target\_id](./kibana-plugin-core-public.resolvedsimplesavedobject.alias_target_id.md) - -## ResolvedSimpleSavedObject.alias\_target\_id property - -The ID of the object that the legacy URL alias points to. - -\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is `'aliasMatch'` or `'conflict'`). - -Signature: - -```typescript -alias_target_id?: SavedObjectsResolveResponse['alias_target_id']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.md b/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.md deleted file mode 100644 index 92ae014380f14..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ResolvedSimpleSavedObject](./kibana-plugin-core-public.resolvedsimplesavedobject.md) - -## ResolvedSimpleSavedObject interface - -This interface is a very simple wrapper for SavedObjects resolved from the server with the [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md). - -Signature: - -```typescript -export interface ResolvedSimpleSavedObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [alias\_purpose?](./kibana-plugin-core-public.resolvedsimplesavedobject.alias_purpose.md) | SavedObjectsResolveResponse\['alias\_purpose'\] | (Optional) The reason this alias was created.Currently this is used to determine whether or not a toast should be shown when a user is redirected from a legacy URL; if the alias was created because of saved object conversion, then we will display a toast telling the user that the object has a new URL.\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is 'aliasMatch' or 'conflict'). | -| [alias\_target\_id?](./kibana-plugin-core-public.resolvedsimplesavedobject.alias_target_id.md) | SavedObjectsResolveResponse\['alias\_target\_id'\] | (Optional) The ID of the object that the legacy URL alias points to.\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is 'aliasMatch' or 'conflict'). | -| [outcome](./kibana-plugin-core-public.resolvedsimplesavedobject.outcome.md) | SavedObjectsResolveResponse\['outcome'\] | The outcome for a successful resolve call is one of the following values:\* 'exactMatch' -- One document exactly matched the given ID. \* 'aliasMatch' -- One document with a legacy URL alias matched the given ID; in this case the saved_object.id field is different than the given ID. \* 'conflict' -- Two documents matched the given ID, one was an exact match and another with a legacy URL alias; in this case the saved_object object is the exact match, and the saved_object.id field is the same as the given ID. | -| [saved\_object](./kibana-plugin-core-public.resolvedsimplesavedobject.saved_object.md) | SimpleSavedObject<T> | The saved object that was found. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.outcome.md b/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.outcome.md deleted file mode 100644 index ceeef7706cc0f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.outcome.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ResolvedSimpleSavedObject](./kibana-plugin-core-public.resolvedsimplesavedobject.md) > [outcome](./kibana-plugin-core-public.resolvedsimplesavedobject.outcome.md) - -## ResolvedSimpleSavedObject.outcome property - -The outcome for a successful `resolve` call is one of the following values: - -\* `'exactMatch'` -- One document exactly matched the given ID. \* `'aliasMatch'` -- One document with a legacy URL alias matched the given ID; in this case the `saved_object.id` field is different than the given ID. \* `'conflict'` -- Two documents matched the given ID, one was an exact match and another with a legacy URL alias; in this case the `saved_object` object is the exact match, and the `saved_object.id` field is the same as the given ID. - -Signature: - -```typescript -outcome: SavedObjectsResolveResponse['outcome']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.saved_object.md b/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.saved_object.md deleted file mode 100644 index 7d90791a26fd8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.resolvedsimplesavedobject.saved_object.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ResolvedSimpleSavedObject](./kibana-plugin-core-public.resolvedsimplesavedobject.md) > [saved\_object](./kibana-plugin-core-public.resolvedsimplesavedobject.saved_object.md) - -## ResolvedSimpleSavedObject.saved\_object property - -The saved object that was found. - -Signature: - -```typescript -saved_object: SimpleSavedObject; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.attributes.md b/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.attributes.md deleted file mode 100644 index bf64b25c04f92..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.attributes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ResponseErrorBody](./kibana-plugin-core-public.responseerrorbody.md) > [attributes](./kibana-plugin-core-public.responseerrorbody.attributes.md) - -## ResponseErrorBody.attributes property - -Signature: - -```typescript -attributes?: Record; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.md b/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.md deleted file mode 100644 index 5bc9103691014..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ResponseErrorBody](./kibana-plugin-core-public.responseerrorbody.md) - -## ResponseErrorBody interface - - -Signature: - -```typescript -export interface ResponseErrorBody -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [attributes?](./kibana-plugin-core-public.responseerrorbody.attributes.md) | Record<string, unknown> | (Optional) | -| [message](./kibana-plugin-core-public.responseerrorbody.message.md) | string | | -| [statusCode](./kibana-plugin-core-public.responseerrorbody.statuscode.md) | number | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.message.md b/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.message.md deleted file mode 100644 index a3355ddafde1e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.message.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ResponseErrorBody](./kibana-plugin-core-public.responseerrorbody.md) > [message](./kibana-plugin-core-public.responseerrorbody.message.md) - -## ResponseErrorBody.message property - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.statuscode.md b/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.statuscode.md deleted file mode 100644 index a342bb0187d72..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.responseerrorbody.statuscode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ResponseErrorBody](./kibana-plugin-core-public.responseerrorbody.md) > [statusCode](./kibana-plugin-core-public.responseerrorbody.statuscode.md) - -## ResponseErrorBody.statusCode property - -Signature: - -```typescript -statusCode: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.attributes.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.attributes.md deleted file mode 100644 index e8b1e0927baff..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.attributes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) > [attributes](./kibana-plugin-core-public.savedobject.attributes.md) - -## SavedObject.attributes property - -The data for a Saved Object is stored as an object in the `attributes` property. - -Signature: - -```typescript -attributes: T; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.coremigrationversion.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.coremigrationversion.md deleted file mode 100644 index 9060a5d6777fe..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.coremigrationversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) > [coreMigrationVersion](./kibana-plugin-core-public.savedobject.coremigrationversion.md) - -## SavedObject.coreMigrationVersion property - -A semver value that is used when upgrading objects between Kibana versions. - -Signature: - -```typescript -coreMigrationVersion?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.error.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.error.md deleted file mode 100644 index ab9a611fc3a5c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) > [error](./kibana-plugin-core-public.savedobject.error.md) - -## SavedObject.error property - -Signature: - -```typescript -error?: SavedObjectError; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.id.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.id.md deleted file mode 100644 index 34387f24bfcef..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) > [id](./kibana-plugin-core-public.savedobject.id.md) - -## SavedObject.id property - -The ID of this Saved Object, guaranteed to be unique for all objects of the same `type` - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.md deleted file mode 100644 index 283a960013305..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) - -## SavedObject interface - -Signature: - -```typescript -export interface SavedObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [attributes](./kibana-plugin-core-public.savedobject.attributes.md) | T | The data for a Saved Object is stored as an object in the attributes property. | -| [coreMigrationVersion?](./kibana-plugin-core-public.savedobject.coremigrationversion.md) | string | (Optional) A semver value that is used when upgrading objects between Kibana versions. | -| [error?](./kibana-plugin-core-public.savedobject.error.md) | SavedObjectError | (Optional) | -| [id](./kibana-plugin-core-public.savedobject.id.md) | string | The ID of this Saved Object, guaranteed to be unique for all objects of the same type | -| [migrationVersion?](./kibana-plugin-core-public.savedobject.migrationversion.md) | SavedObjectsMigrationVersion | (Optional) Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. | -| [namespaces?](./kibana-plugin-core-public.savedobject.namespaces.md) | string\[\] | (Optional) Space(s) that this saved object exists in. This attribute is not used for "global" saved object types which are registered with namespaceType: 'agnostic'. | -| [originId?](./kibana-plugin-core-public.savedobject.originid.md) | string | (Optional) The ID of the saved object this originated from. This is set if this object's id was regenerated; that can happen during migration from a legacy single-namespace type, or during import. It is only set during migration or create operations. This is used during import to ensure that ID regeneration is deterministic, so saved objects will be overwritten if they are imported multiple times into a given space. | -| [references](./kibana-plugin-core-public.savedobject.references.md) | SavedObjectReference\[\] | A reference to another saved object. | -| [type](./kibana-plugin-core-public.savedobject.type.md) | string | The type of Saved Object. Each plugin can define it's own custom Saved Object types. | -| [updated\_at?](./kibana-plugin-core-public.savedobject.updated_at.md) | string | (Optional) Timestamp of the last time this document had been updated. | -| [version?](./kibana-plugin-core-public.savedobject.version.md) | string | (Optional) An opaque version number which changes on each successful write operation. Can be used for implementing optimistic concurrency control. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.migrationversion.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.migrationversion.md deleted file mode 100644 index c13b6dc429208..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.migrationversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) > [migrationVersion](./kibana-plugin-core-public.savedobject.migrationversion.md) - -## SavedObject.migrationVersion property - -Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. - -Signature: - -```typescript -migrationVersion?: SavedObjectsMigrationVersion; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.namespaces.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.namespaces.md deleted file mode 100644 index 3418b964ab2d7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.namespaces.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) > [namespaces](./kibana-plugin-core-public.savedobject.namespaces.md) - -## SavedObject.namespaces property - -Space(s) that this saved object exists in. This attribute is not used for "global" saved object types which are registered with `namespaceType: 'agnostic'`. - -Signature: - -```typescript -namespaces?: string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.originid.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.originid.md deleted file mode 100644 index f5bab09b9bcc0..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.originid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) > [originId](./kibana-plugin-core-public.savedobject.originid.md) - -## SavedObject.originId property - -The ID of the saved object this originated from. This is set if this object's `id` was regenerated; that can happen during migration from a legacy single-namespace type, or during import. It is only set during migration or create operations. This is used during import to ensure that ID regeneration is deterministic, so saved objects will be overwritten if they are imported multiple times into a given space. - -Signature: - -```typescript -originId?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.references.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.references.md deleted file mode 100644 index 09f6b8fb12b42..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.references.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) > [references](./kibana-plugin-core-public.savedobject.references.md) - -## SavedObject.references property - -A reference to another saved object. - -Signature: - -```typescript -references: SavedObjectReference[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.type.md deleted file mode 100644 index ccaa1f1d5231c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) > [type](./kibana-plugin-core-public.savedobject.type.md) - -## SavedObject.type property - -The type of Saved Object. Each plugin can define it's own custom Saved Object types. - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.updated_at.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.updated_at.md deleted file mode 100644 index 111d4b676f00a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.updated_at.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) > [updated\_at](./kibana-plugin-core-public.savedobject.updated_at.md) - -## SavedObject.updated\_at property - -Timestamp of the last time this document had been updated. - -Signature: - -```typescript -updated_at?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobject.version.md b/docs/development/core/public/kibana-plugin-core-public.savedobject.version.md deleted file mode 100644 index 23b8b3f40da2a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobject.version.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObject](./kibana-plugin-core-public.savedobject.md) > [version](./kibana-plugin-core-public.savedobject.version.md) - -## SavedObject.version property - -An opaque version number which changes on each successful write operation. Can be used for implementing optimistic concurrency control. - -Signature: - -```typescript -version?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectattribute.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectattribute.md deleted file mode 100644 index 2d7be060e28fe..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectattribute.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectAttribute](./kibana-plugin-core-public.savedobjectattribute.md) - -## SavedObjectAttribute type - -Type definition for a Saved Object attribute value - -Signature: - -```typescript -export declare type SavedObjectAttribute = SavedObjectAttributeSingle | SavedObjectAttributeSingle[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectattributes.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectattributes.md deleted file mode 100644 index 0493f52b11425..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectattributes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectAttributes](./kibana-plugin-core-public.savedobjectattributes.md) - -## SavedObjectAttributes interface - -The data for a Saved Object is stored as an object in the `attributes` property. - -Signature: - -```typescript -export interface SavedObjectAttributes -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectattributesingle.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectattributesingle.md deleted file mode 100644 index 388cfac2d9c33..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectattributesingle.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectAttributeSingle](./kibana-plugin-core-public.savedobjectattributesingle.md) - -## SavedObjectAttributeSingle type - -Don't use this type, it's simply a helper type for [SavedObjectAttribute](./kibana-plugin-core-public.savedobjectattribute.md) - -Signature: - -```typescript -export declare type SavedObjectAttributeSingle = string | number | boolean | null | undefined | SavedObjectAttributes; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.error.md b/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.error.md deleted file mode 100644 index 87180a520090f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectError](./kibana-plugin-core-public.savedobjecterror.md) > [error](./kibana-plugin-core-public.savedobjecterror.error.md) - -## SavedObjectError.error property - -Signature: - -```typescript -error: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.md b/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.md deleted file mode 100644 index f6e8874b212b0..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectError](./kibana-plugin-core-public.savedobjecterror.md) - -## SavedObjectError interface - -Signature: - -```typescript -export interface SavedObjectError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [error](./kibana-plugin-core-public.savedobjecterror.error.md) | string | | -| [message](./kibana-plugin-core-public.savedobjecterror.message.md) | string | | -| [metadata?](./kibana-plugin-core-public.savedobjecterror.metadata.md) | Record<string, unknown> | (Optional) | -| [statusCode](./kibana-plugin-core-public.savedobjecterror.statuscode.md) | number | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.message.md b/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.message.md deleted file mode 100644 index 2a51d4d1a514d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.message.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectError](./kibana-plugin-core-public.savedobjecterror.md) > [message](./kibana-plugin-core-public.savedobjecterror.message.md) - -## SavedObjectError.message property - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.metadata.md b/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.metadata.md deleted file mode 100644 index a2725f0206655..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.metadata.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectError](./kibana-plugin-core-public.savedobjecterror.md) > [metadata](./kibana-plugin-core-public.savedobjecterror.metadata.md) - -## SavedObjectError.metadata property - -Signature: - -```typescript -metadata?: Record; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.statuscode.md b/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.statuscode.md deleted file mode 100644 index 75a57e98fece2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjecterror.statuscode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectError](./kibana-plugin-core-public.savedobjecterror.md) > [statusCode](./kibana-plugin-core-public.savedobjecterror.statuscode.md) - -## SavedObjectError.statusCode property - -Signature: - -```typescript -statusCode: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.id.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.id.md deleted file mode 100644 index 91f0213f7e3f0..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReference](./kibana-plugin-core-public.savedobjectreference.md) > [id](./kibana-plugin-core-public.savedobjectreference.id.md) - -## SavedObjectReference.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.md deleted file mode 100644 index e63ba254602db..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReference](./kibana-plugin-core-public.savedobjectreference.md) - -## SavedObjectReference interface - -A reference to another saved object. - -Signature: - -```typescript -export interface SavedObjectReference -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-public.savedobjectreference.id.md) | string | | -| [name](./kibana-plugin-core-public.savedobjectreference.name.md) | string | | -| [type](./kibana-plugin-core-public.savedobjectreference.type.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.name.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.name.md deleted file mode 100644 index a5389047b5a4b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReference](./kibana-plugin-core-public.savedobjectreference.md) > [name](./kibana-plugin-core-public.savedobjectreference.name.md) - -## SavedObjectReference.name property - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.type.md deleted file mode 100644 index 9547d52c404b2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreference.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReference](./kibana-plugin-core-public.savedobjectreference.md) > [type](./kibana-plugin-core-public.savedobjectreference.type.md) - -## SavedObjectReference.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.id.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.id.md deleted file mode 100644 index 10e01d7e7a931..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [id](./kibana-plugin-core-public.savedobjectreferencewithcontext.id.md) - -## SavedObjectReferenceWithContext.id property - -The ID of the referenced object - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md deleted file mode 100644 index 722b11f0c7ba9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [inboundReferences](./kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md) - -## SavedObjectReferenceWithContext.inboundReferences property - -References to this object; note that this does not contain \_all inbound references everywhere for this object\_, it only contains inbound references for the scope of this operation - -Signature: - -```typescript -inboundReferences: Array<{ - type: string; - id: string; - name: string; - }>; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md deleted file mode 100644 index 8a4b378850764..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [isMissing](./kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md) - -## SavedObjectReferenceWithContext.isMissing property - -Whether or not this object or reference is missing - -Signature: - -```typescript -isMissing?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md deleted file mode 100644 index 2b43bafbede5c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) - -## SavedObjectReferenceWithContext interface - -A returned input object or one of its references, with additional context. - -Signature: - -```typescript -export interface SavedObjectReferenceWithContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-public.savedobjectreferencewithcontext.id.md) | string | The ID of the referenced object | -| [inboundReferences](./kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md) | Array<{ type: string; id: string; name: string; }> | References to this object; note that this does not contain \_all inbound references everywhere for this object\_, it only contains inbound references for the scope of this operation | -| [isMissing?](./kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md) | boolean | (Optional) Whether or not this object or reference is missing | -| [originId?](./kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md) | string | (Optional) The origin ID of the referenced object (if it has one) | -| [spaces](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md) | string\[\] | The space(s) that the referenced object exists in | -| [spacesWithMatchingAliases?](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md) | string\[\] | (Optional) The space(s) that legacy URL aliases matching this type/id exist in | -| [spacesWithMatchingOrigins?](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md) | string\[\] | (Optional) The space(s) that objects matching this origin exist in (including this one) | -| [type](./kibana-plugin-core-public.savedobjectreferencewithcontext.type.md) | string | The type of the referenced object | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md deleted file mode 100644 index 418041ea5df60..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [originId](./kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md) - -## SavedObjectReferenceWithContext.originId property - -The origin ID of the referenced object (if it has one) - -Signature: - -```typescript -originId?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md deleted file mode 100644 index 9140e94721f1e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [spaces](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md) - -## SavedObjectReferenceWithContext.spaces property - -The space(s) that the referenced object exists in - -Signature: - -```typescript -spaces: string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md deleted file mode 100644 index 02b0c9c0949df..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [spacesWithMatchingAliases](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md) - -## SavedObjectReferenceWithContext.spacesWithMatchingAliases property - -The space(s) that legacy URL aliases matching this type/id exist in - -Signature: - -```typescript -spacesWithMatchingAliases?: string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md deleted file mode 100644 index 88a7ebb5f2234..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [spacesWithMatchingOrigins](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md) - -## SavedObjectReferenceWithContext.spacesWithMatchingOrigins property - -The space(s) that objects matching this origin exist in (including this one) - -Signature: - -```typescript -spacesWithMatchingOrigins?: string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.type.md deleted file mode 100644 index d2e341627153c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [type](./kibana-plugin-core-public.savedobjectreferencewithcontext.type.md) - -## SavedObjectReferenceWithContext.type property - -The type of the referenced object - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbaseoptions.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbaseoptions.md deleted file mode 100644 index f86d3b5afc04e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbaseoptions.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBaseOptions](./kibana-plugin-core-public.savedobjectsbaseoptions.md) - -## SavedObjectsBaseOptions interface - - -Signature: - -```typescript -export interface SavedObjectsBaseOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [namespace?](./kibana-plugin-core-public.savedobjectsbaseoptions.namespace.md) | string | (Optional) Specify the namespace for this operation | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbaseoptions.namespace.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbaseoptions.namespace.md deleted file mode 100644 index 5b394750d618c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbaseoptions.namespace.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBaseOptions](./kibana-plugin-core-public.savedobjectsbaseoptions.md) > [namespace](./kibana-plugin-core-public.savedobjectsbaseoptions.namespace.md) - -## SavedObjectsBaseOptions.namespace property - -Specify the namespace for this operation - -Signature: - -```typescript -namespace?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbatchresponse.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbatchresponse.md deleted file mode 100644 index 3926231db17b5..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbatchresponse.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBatchResponse](./kibana-plugin-core-public.savedobjectsbatchresponse.md) - -## SavedObjectsBatchResponse interface - - -Signature: - -```typescript -export interface SavedObjectsBatchResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [savedObjects](./kibana-plugin-core-public.savedobjectsbatchresponse.savedobjects.md) | Array<SimpleSavedObject<T>> | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbatchresponse.savedobjects.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbatchresponse.savedobjects.md deleted file mode 100644 index 53db81aaad89a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbatchresponse.savedobjects.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBatchResponse](./kibana-plugin-core-public.savedobjectsbatchresponse.md) > [savedObjects](./kibana-plugin-core-public.savedobjectsbatchresponse.savedobjects.md) - -## SavedObjectsBatchResponse.savedObjects property - -Signature: - -```typescript -savedObjects: Array>; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.attributes.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.attributes.md deleted file mode 100644 index fea1505c9b6f3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.attributes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-public.savedobjectsbulkcreateobject.md) > [attributes](./kibana-plugin-core-public.savedobjectsbulkcreateobject.attributes.md) - -## SavedObjectsBulkCreateObject.attributes property - -Signature: - -```typescript -attributes: T; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.md deleted file mode 100644 index f9ff61859b1a8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-public.savedobjectsbulkcreateobject.md) - -## SavedObjectsBulkCreateObject interface - -Signature: - -```typescript -export interface SavedObjectsBulkCreateObject extends SavedObjectsCreateOptions -``` -Extends: SavedObjectsCreateOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [attributes](./kibana-plugin-core-public.savedobjectsbulkcreateobject.attributes.md) | T | | -| [type](./kibana-plugin-core-public.savedobjectsbulkcreateobject.type.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.type.md deleted file mode 100644 index afadde06db494..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateobject.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-public.savedobjectsbulkcreateobject.md) > [type](./kibana-plugin-core-public.savedobjectsbulkcreateobject.type.md) - -## SavedObjectsBulkCreateObject.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateoptions.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateoptions.md deleted file mode 100644 index ada12c064e0a1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateoptions.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkCreateOptions](./kibana-plugin-core-public.savedobjectsbulkcreateoptions.md) - -## SavedObjectsBulkCreateOptions interface - - -Signature: - -```typescript -export interface SavedObjectsBulkCreateOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [overwrite?](./kibana-plugin-core-public.savedobjectsbulkcreateoptions.overwrite.md) | boolean | (Optional) If a document with the given id already exists, overwrite it's contents (default=false). | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateoptions.overwrite.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateoptions.overwrite.md deleted file mode 100644 index 20d5f84b1cf33..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkcreateoptions.overwrite.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkCreateOptions](./kibana-plugin-core-public.savedobjectsbulkcreateoptions.md) > [overwrite](./kibana-plugin-core-public.savedobjectsbulkcreateoptions.overwrite.md) - -## SavedObjectsBulkCreateOptions.overwrite property - -If a document with the given `id` already exists, overwrite it's contents (default=false). - -Signature: - -```typescript -overwrite?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.id.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.id.md deleted file mode 100644 index 6a8fd52a4dc49..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkResolveObject](./kibana-plugin-core-public.savedobjectsbulkresolveobject.md) > [id](./kibana-plugin-core-public.savedobjectsbulkresolveobject.id.md) - -## SavedObjectsBulkResolveObject.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.md deleted file mode 100644 index fbff3d3bd8f25..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkResolveObject](./kibana-plugin-core-public.savedobjectsbulkresolveobject.md) - -## SavedObjectsBulkResolveObject interface - - -Signature: - -```typescript -export interface SavedObjectsBulkResolveObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-public.savedobjectsbulkresolveobject.id.md) | string | | -| [type](./kibana-plugin-core-public.savedobjectsbulkresolveobject.type.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.type.md deleted file mode 100644 index 09c7991012da8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveobject.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkResolveObject](./kibana-plugin-core-public.savedobjectsbulkresolveobject.md) > [type](./kibana-plugin-core-public.savedobjectsbulkresolveobject.type.md) - -## SavedObjectsBulkResolveObject.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveresponse.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveresponse.md deleted file mode 100644 index 311b1bf262875..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveresponse.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkResolveResponse](./kibana-plugin-core-public.savedobjectsbulkresolveresponse.md) - -## SavedObjectsBulkResolveResponse interface - - -Signature: - -```typescript -export interface SavedObjectsBulkResolveResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [resolved\_objects](./kibana-plugin-core-public.savedobjectsbulkresolveresponse.resolved_objects.md) | Array<ResolvedSimpleSavedObject<T>> | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveresponse.resolved_objects.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveresponse.resolved_objects.md deleted file mode 100644 index e2bf3828841de..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkresolveresponse.resolved_objects.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkResolveResponse](./kibana-plugin-core-public.savedobjectsbulkresolveresponse.md) > [resolved\_objects](./kibana-plugin-core-public.savedobjectsbulkresolveresponse.resolved_objects.md) - -## SavedObjectsBulkResolveResponse.resolved\_objects property - -Signature: - -```typescript -resolved_objects: Array>; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.attributes.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.attributes.md deleted file mode 100644 index 1c124970287e0..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.attributes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkUpdateObject](./kibana-plugin-core-public.savedobjectsbulkupdateobject.md) > [attributes](./kibana-plugin-core-public.savedobjectsbulkupdateobject.attributes.md) - -## SavedObjectsBulkUpdateObject.attributes property - -Signature: - -```typescript -attributes: T; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.id.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.id.md deleted file mode 100644 index 4fad01d2f2641..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkUpdateObject](./kibana-plugin-core-public.savedobjectsbulkupdateobject.md) > [id](./kibana-plugin-core-public.savedobjectsbulkupdateobject.id.md) - -## SavedObjectsBulkUpdateObject.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.md deleted file mode 100644 index f28d99cb110c6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkUpdateObject](./kibana-plugin-core-public.savedobjectsbulkupdateobject.md) - -## SavedObjectsBulkUpdateObject interface - - -Signature: - -```typescript -export interface SavedObjectsBulkUpdateObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [attributes](./kibana-plugin-core-public.savedobjectsbulkupdateobject.attributes.md) | T | | -| [id](./kibana-plugin-core-public.savedobjectsbulkupdateobject.id.md) | string | | -| [references?](./kibana-plugin-core-public.savedobjectsbulkupdateobject.references.md) | SavedObjectReference\[\] | (Optional) | -| [type](./kibana-plugin-core-public.savedobjectsbulkupdateobject.type.md) | string | | -| [version?](./kibana-plugin-core-public.savedobjectsbulkupdateobject.version.md) | string | (Optional) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.references.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.references.md deleted file mode 100644 index 64b9b56a5c0d9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.references.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkUpdateObject](./kibana-plugin-core-public.savedobjectsbulkupdateobject.md) > [references](./kibana-plugin-core-public.savedobjectsbulkupdateobject.references.md) - -## SavedObjectsBulkUpdateObject.references property - -Signature: - -```typescript -references?: SavedObjectReference[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.type.md deleted file mode 100644 index 2dd5a879491a8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkUpdateObject](./kibana-plugin-core-public.savedobjectsbulkupdateobject.md) > [type](./kibana-plugin-core-public.savedobjectsbulkupdateobject.type.md) - -## SavedObjectsBulkUpdateObject.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.version.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.version.md deleted file mode 100644 index 18e4259e89b35..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateobject.version.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkUpdateObject](./kibana-plugin-core-public.savedobjectsbulkupdateobject.md) > [version](./kibana-plugin-core-public.savedobjectsbulkupdateobject.version.md) - -## SavedObjectsBulkUpdateObject.version property - -Signature: - -```typescript -version?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateoptions.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateoptions.md deleted file mode 100644 index a2cdd3eb801e6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateoptions.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkUpdateOptions](./kibana-plugin-core-public.savedobjectsbulkupdateoptions.md) - -## SavedObjectsBulkUpdateOptions interface - - -Signature: - -```typescript -export interface SavedObjectsBulkUpdateOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [namespace?](./kibana-plugin-core-public.savedobjectsbulkupdateoptions.namespace.md) | string | (Optional) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateoptions.namespace.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateoptions.namespace.md deleted file mode 100644 index a6c0e92098bdc..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsbulkupdateoptions.namespace.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsBulkUpdateOptions](./kibana-plugin-core-public.savedobjectsbulkupdateoptions.md) > [namespace](./kibana-plugin-core-public.savedobjectsbulkupdateoptions.namespace.md) - -## SavedObjectsBulkUpdateOptions.namespace property - -Signature: - -```typescript -namespace?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkcreate.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkcreate.md deleted file mode 100644 index 98c5e250644ff..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkcreate.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) > [bulkCreate](./kibana-plugin-core-public.savedobjectsclientcontract.bulkcreate.md) - -## SavedObjectsClientContract.bulkCreate() method - -Creates multiple documents at once - -Signature: - -```typescript -bulkCreate(objects: SavedObjectsBulkCreateObject[], options?: SavedObjectsBulkCreateOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsBulkCreateObject\[\] | | -| options | SavedObjectsBulkCreateOptions | | - -Returns: - -Promise<SavedObjectsBatchResponse<unknown>> - -The result of the create operation containing created saved objects. - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkget.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkget.md deleted file mode 100644 index b091f14308177..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkget.md +++ /dev/null @@ -1,33 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) > [bulkGet](./kibana-plugin-core-public.savedobjectsclientcontract.bulkget.md) - -## SavedObjectsClientContract.bulkGet() method - -Returns an array of objects by id - -Signature: - -```typescript -bulkGet(objects: Array<{ - id: string; - type: string; - }>): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | Array<{ id: string; type: string; }> | an array ids, or an array of objects containing id and optionally type | - -Returns: - -Promise<SavedObjectsBatchResponse<unknown>> - -The saved objects with the given type and ids requested - -## Example - -bulkGet(\[ { id: 'one', type: 'config' }, { id: 'foo', type: 'index-pattern' } \]) - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkresolve.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkresolve.md deleted file mode 100644 index cb67bdc19d23c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkresolve.md +++ /dev/null @@ -1,35 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) > [bulkResolve](./kibana-plugin-core-public.savedobjectsclientcontract.bulkresolve.md) - -## SavedObjectsClientContract.bulkResolve() method - -Resolves an array of objects by id, using any legacy URL aliases if they exist - -Signature: - -```typescript -bulkResolve(objects: Array<{ - id: string; - type: string; - }>): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | Array<{ id: string; type: string; }> | an array of objects containing id, type | - -Returns: - -Promise<SavedObjectsBulkResolveResponse<T>> - -The bulk resolve result for the saved objects for the given types and ids. - -## Example - -bulkResolve(\[ { id: 'one', type: 'config' }, { id: 'foo', type: 'index-pattern' } \]) - - Saved objects that Kibana fails to find are replaced with an error object and an "exactMatch" outcome. The rationale behind the outcome is that "exactMatch" is the default outcome, and the outcome only changes if an alias is found. The `resolve` method in the public client uses `bulkResolve` under the hood, so it behaves the same way. - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkupdate.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkupdate.md deleted file mode 100644 index 84c461708218c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.bulkupdate.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) > [bulkUpdate](./kibana-plugin-core-public.savedobjectsclientcontract.bulkupdate.md) - -## SavedObjectsClientContract.bulkUpdate() method - -Update multiple documents at once - -Signature: - -```typescript -bulkUpdate(objects: SavedObjectsBulkUpdateObject[]): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsBulkUpdateObject\[\] | \[{ type, id, attributes, options: { version, references } }\] | - -Returns: - -Promise<SavedObjectsBatchResponse<T>> - -The result of the update operation containing both failed and updated saved objects. - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.create.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.create.md deleted file mode 100644 index 76906c0dba8d5..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.create.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) > [create](./kibana-plugin-core-public.savedobjectsclientcontract.create.md) - -## SavedObjectsClientContract.create() method - -Persists an object - -Signature: - -```typescript -create(type: string, attributes: T, options?: SavedObjectsCreateOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| attributes | T | | -| options | SavedObjectsCreateOptions | | - -Returns: - -Promise<SimpleSavedObject<T>> - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.delete.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.delete.md deleted file mode 100644 index 39aee28ee7e01..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.delete.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) > [delete](./kibana-plugin-core-public.savedobjectsclientcontract.delete.md) - -## SavedObjectsClientContract.delete() method - -Deletes an object - -Signature: - -```typescript -delete(type: string, id: string, options?: SavedObjectsDeleteOptions): Promise<{}>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| options | SavedObjectsDeleteOptions | | - -Returns: - -Promise<{}> - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.find.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.find.md deleted file mode 100644 index 8173773e461f3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.find.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) > [find](./kibana-plugin-core-public.savedobjectsclientcontract.find.md) - -## SavedObjectsClientContract.find() method - -Search for objects - -Signature: - -```typescript -find(options: SavedObjectsFindOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | SavedObjectsFindOptions | {string} options.type {string} options.search {string} options.searchFields - see Elasticsearch Simple Query String Query field argument for more information {integer} \[options.page=1\] {integer} \[options.perPage=20\] {array} options.fields {object} \[options.hasReference\] - { type, id } | - -Returns: - -Promise<SavedObjectsFindResponsePublic<T>> - -A find result with objects matching the specified search. - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.get.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.get.md deleted file mode 100644 index 4184e0a16ab5e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.get.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) > [get](./kibana-plugin-core-public.savedobjectsclientcontract.get.md) - -## SavedObjectsClientContract.get() method - -Fetches a single object - -Signature: - -```typescript -get(type: string, id: string): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | - -Returns: - -Promise<SimpleSavedObject<T>> - -The saved object for the given type and id. - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.md deleted file mode 100644 index bdc76b58f8dc2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) - -## SavedObjectsClientContract interface - -The client-side SavedObjectsClient is a thin convenience library around the SavedObjects HTTP API for interacting with Saved Objects. - -Signature: - -```typescript -export interface SavedObjectsClientContract -``` - -## Methods - -| Method | Description | -| --- | --- | -| [bulkCreate(objects, options)](./kibana-plugin-core-public.savedobjectsclientcontract.bulkcreate.md) | Creates multiple documents at once | -| [bulkGet(objects)](./kibana-plugin-core-public.savedobjectsclientcontract.bulkget.md) | Returns an array of objects by id | -| [bulkResolve(objects)](./kibana-plugin-core-public.savedobjectsclientcontract.bulkresolve.md) | Resolves an array of objects by id, using any legacy URL aliases if they exist | -| [bulkUpdate(objects)](./kibana-plugin-core-public.savedobjectsclientcontract.bulkupdate.md) | Update multiple documents at once | -| [create(type, attributes, options)](./kibana-plugin-core-public.savedobjectsclientcontract.create.md) | Persists an object | -| [delete(type, id, options)](./kibana-plugin-core-public.savedobjectsclientcontract.delete.md) | Deletes an object | -| [find(options)](./kibana-plugin-core-public.savedobjectsclientcontract.find.md) | Search for objects | -| [get(type, id)](./kibana-plugin-core-public.savedobjectsclientcontract.get.md) | Fetches a single object | -| [resolve(type, id)](./kibana-plugin-core-public.savedobjectsclientcontract.resolve.md) | Resolves a single object | -| [update(type, id, attributes, options)](./kibana-plugin-core-public.savedobjectsclientcontract.update.md) | Updates an object | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.resolve.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.resolve.md deleted file mode 100644 index 6e9c9a1c9c945..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.resolve.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) > [resolve](./kibana-plugin-core-public.savedobjectsclientcontract.resolve.md) - -## SavedObjectsClientContract.resolve() method - -Resolves a single object - -Signature: - -```typescript -resolve(type: string, id: string): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | - -Returns: - -Promise<ResolvedSimpleSavedObject<T>> - -The resolve result for the saved object for the given type and id. - - Saved objects that Kibana fails to find are replaced with an error object and an "exactMatch" outcome. The rationale behind the outcome is that "exactMatch" is the default outcome, and the outcome only changes if an alias is found. This behavior for the `resolve` API is unique to the public client, which batches individual calls with `bulkResolve` under the hood. We don't throw an error in that case for legacy compatibility reasons. - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.update.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.update.md deleted file mode 100644 index 0652404b91ad4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsclientcontract.update.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) > [update](./kibana-plugin-core-public.savedobjectsclientcontract.update.md) - -## SavedObjectsClientContract.update() method - -Updates an object - -Signature: - -```typescript -update(type: string, id: string, attributes: T, options?: SavedObjectsUpdateOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| attributes | T | | -| options | SavedObjectsUpdateOptions | {integer} options.version - ensures version matches that of persisted object {object} options.migrationVersion - The optional migrationVersion of this document | - -Returns: - -Promise<SimpleSavedObject<T>> - - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md deleted file mode 100644 index a356850fa1ad4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md) - -## SavedObjectsCollectMultiNamespaceReferencesResponse interface - -The response when object references are collected. - -Signature: - -```typescript -export interface SavedObjectsCollectMultiNamespaceReferencesResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [objects](./kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md) | SavedObjectReferenceWithContext\[\] | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md deleted file mode 100644 index 66a7a19d18288..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.md) > [objects](./kibana-plugin-core-public.savedobjectscollectmultinamespacereferencesresponse.objects.md) - -## SavedObjectsCollectMultiNamespaceReferencesResponse.objects property - -Signature: - -```typescript -objects: SavedObjectReferenceWithContext[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.coremigrationversion.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.coremigrationversion.md deleted file mode 100644 index 3c1d068f458bc..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.coremigrationversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-public.savedobjectscreateoptions.md) > [coreMigrationVersion](./kibana-plugin-core-public.savedobjectscreateoptions.coremigrationversion.md) - -## SavedObjectsCreateOptions.coreMigrationVersion property - -A semver value that is used when upgrading objects between Kibana versions. - -Signature: - -```typescript -coreMigrationVersion?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.id.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.id.md deleted file mode 100644 index 14e64cc9b7b34..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-public.savedobjectscreateoptions.md) > [id](./kibana-plugin-core-public.savedobjectscreateoptions.id.md) - -## SavedObjectsCreateOptions.id property - -(Not recommended) Specify an id instead of having the saved objects service generate one for you. - -Signature: - -```typescript -id?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.md deleted file mode 100644 index 835a9e87a1dba..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-public.savedobjectscreateoptions.md) - -## SavedObjectsCreateOptions interface - - -Signature: - -```typescript -export interface SavedObjectsCreateOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [coreMigrationVersion?](./kibana-plugin-core-public.savedobjectscreateoptions.coremigrationversion.md) | string | (Optional) A semver value that is used when upgrading objects between Kibana versions. | -| [id?](./kibana-plugin-core-public.savedobjectscreateoptions.id.md) | string | (Optional) (Not recommended) Specify an id instead of having the saved objects service generate one for you. | -| [migrationVersion?](./kibana-plugin-core-public.savedobjectscreateoptions.migrationversion.md) | SavedObjectsMigrationVersion | (Optional) Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. | -| [overwrite?](./kibana-plugin-core-public.savedobjectscreateoptions.overwrite.md) | boolean | (Optional) If a document with the given id already exists, overwrite it's contents (default=false). | -| [references?](./kibana-plugin-core-public.savedobjectscreateoptions.references.md) | SavedObjectReference\[\] | (Optional) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.migrationversion.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.migrationversion.md deleted file mode 100644 index 4ea4386303a58..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.migrationversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-public.savedobjectscreateoptions.md) > [migrationVersion](./kibana-plugin-core-public.savedobjectscreateoptions.migrationversion.md) - -## SavedObjectsCreateOptions.migrationVersion property - -Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. - -Signature: - -```typescript -migrationVersion?: SavedObjectsMigrationVersion; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.overwrite.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.overwrite.md deleted file mode 100644 index aa3e102e6c042..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.overwrite.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-public.savedobjectscreateoptions.md) > [overwrite](./kibana-plugin-core-public.savedobjectscreateoptions.overwrite.md) - -## SavedObjectsCreateOptions.overwrite property - -If a document with the given `id` already exists, overwrite it's contents (default=false). - -Signature: - -```typescript -overwrite?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.references.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.references.md deleted file mode 100644 index ef67cdb771630..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectscreateoptions.references.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-public.savedobjectscreateoptions.md) > [references](./kibana-plugin-core-public.savedobjectscreateoptions.references.md) - -## SavedObjectsCreateOptions.references property - -Signature: - -```typescript -references?: SavedObjectReference[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.defaultsearchoperator.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.defaultsearchoperator.md deleted file mode 100644 index f1c2fd08a21f1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.defaultsearchoperator.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [defaultSearchOperator](./kibana-plugin-core-public.savedobjectsfindoptions.defaultsearchoperator.md) - -## SavedObjectsFindOptions.defaultSearchOperator property - -The search operator to use with the provided filter. Defaults to `OR` - -Signature: - -```typescript -defaultSearchOperator?: 'AND' | 'OR'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.fields.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.fields.md deleted file mode 100644 index 39bc1d3161bd4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.fields.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [fields](./kibana-plugin-core-public.savedobjectsfindoptions.fields.md) - -## SavedObjectsFindOptions.fields property - -An array of fields to include in the results - -Signature: - -```typescript -fields?: string[]; -``` - -## Example - -SavedObjects.find({type: 'dashboard', fields: \['attributes.name', 'attributes.location'\]}) - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.filter.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.filter.md deleted file mode 100644 index 2c20fe2dab00f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.filter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [filter](./kibana-plugin-core-public.savedobjectsfindoptions.filter.md) - -## SavedObjectsFindOptions.filter property - -Signature: - -```typescript -filter?: string | KueryNode; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.hasreference.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.hasreference.md deleted file mode 100644 index 25ce8fa7b6018..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.hasreference.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [hasReference](./kibana-plugin-core-public.savedobjectsfindoptions.hasreference.md) - -## SavedObjectsFindOptions.hasReference property - -Search for documents having a reference to the specified objects. Use `hasReferenceOperator` to specify the operator to use when searching for multiple references. - -Signature: - -```typescript -hasReference?: SavedObjectsFindOptionsReference | SavedObjectsFindOptionsReference[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.hasreferenceoperator.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.hasreferenceoperator.md deleted file mode 100644 index 3681d1c9d34d9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.hasreferenceoperator.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [hasReferenceOperator](./kibana-plugin-core-public.savedobjectsfindoptions.hasreferenceoperator.md) - -## SavedObjectsFindOptions.hasReferenceOperator property - -The operator to use when searching by multiple references using the `hasReference` option. Defaults to `OR` - -Signature: - -```typescript -hasReferenceOperator?: 'AND' | 'OR'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.md deleted file mode 100644 index 98ac48f6cdbd8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.md +++ /dev/null @@ -1,36 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) - -## SavedObjectsFindOptions interface - - -Signature: - -```typescript -export interface SavedObjectsFindOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [defaultSearchOperator?](./kibana-plugin-core-public.savedobjectsfindoptions.defaultsearchoperator.md) | 'AND' \| 'OR' | (Optional) The search operator to use with the provided filter. Defaults to OR | -| [fields?](./kibana-plugin-core-public.savedobjectsfindoptions.fields.md) | string\[\] | (Optional) An array of fields to include in the results | -| [filter?](./kibana-plugin-core-public.savedobjectsfindoptions.filter.md) | string \| KueryNode | (Optional) | -| [hasReference?](./kibana-plugin-core-public.savedobjectsfindoptions.hasreference.md) | SavedObjectsFindOptionsReference \| SavedObjectsFindOptionsReference\[\] | (Optional) Search for documents having a reference to the specified objects. Use hasReferenceOperator to specify the operator to use when searching for multiple references. | -| [hasReferenceOperator?](./kibana-plugin-core-public.savedobjectsfindoptions.hasreferenceoperator.md) | 'AND' \| 'OR' | (Optional) The operator to use when searching by multiple references using the hasReference option. Defaults to OR | -| [namespaces?](./kibana-plugin-core-public.savedobjectsfindoptions.namespaces.md) | string\[\] | (Optional) | -| [page?](./kibana-plugin-core-public.savedobjectsfindoptions.page.md) | number | (Optional) | -| [perPage?](./kibana-plugin-core-public.savedobjectsfindoptions.perpage.md) | number | (Optional) | -| [pit?](./kibana-plugin-core-public.savedobjectsfindoptions.pit.md) | SavedObjectsPitParams | (Optional) Search against a specific Point In Time (PIT) that you've opened with . | -| [preference?](./kibana-plugin-core-public.savedobjectsfindoptions.preference.md) | string | (Optional) An optional ES preference value to be used for the query \* | -| [rootSearchFields?](./kibana-plugin-core-public.savedobjectsfindoptions.rootsearchfields.md) | string\[\] | (Optional) The fields to perform the parsed query against. Unlike the searchFields argument, these are expected to be root fields and will not be modified. If used in conjunction with searchFields, both are concatenated together. | -| [search?](./kibana-plugin-core-public.savedobjectsfindoptions.search.md) | string | (Optional) Search documents using the Elasticsearch Simple Query String syntax. See Elasticsearch Simple Query String query argument for more information | -| [searchAfter?](./kibana-plugin-core-public.savedobjectsfindoptions.searchafter.md) | estypes.Id\[\] | (Optional) Use the sort values from the previous page to retrieve the next page of results. | -| [searchFields?](./kibana-plugin-core-public.savedobjectsfindoptions.searchfields.md) | string\[\] | (Optional) The fields to perform the parsed query against. See Elasticsearch Simple Query String fields argument for more information | -| [sortField?](./kibana-plugin-core-public.savedobjectsfindoptions.sortfield.md) | string | (Optional) | -| [sortOrder?](./kibana-plugin-core-public.savedobjectsfindoptions.sortorder.md) | estypes.SortOrder | (Optional) | -| [type](./kibana-plugin-core-public.savedobjectsfindoptions.type.md) | string \| string\[\] | | -| [typeToNamespacesMap?](./kibana-plugin-core-public.savedobjectsfindoptions.typetonamespacesmap.md) | Map<string, string\[\] \| undefined> | (Optional) This map defines each type to search for, and the namespace(s) to search for the type in; this is only intended to be used by a saved object client wrapper. If this is defined, it supersedes the type and namespaces fields when building the Elasticsearch query. Any types that are not included in this map will be excluded entirely. If a type is included but its value is undefined, the operation will search for that type in the Default namespace. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.namespaces.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.namespaces.md deleted file mode 100644 index 9cc9d64db1f65..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.namespaces.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [namespaces](./kibana-plugin-core-public.savedobjectsfindoptions.namespaces.md) - -## SavedObjectsFindOptions.namespaces property - -Signature: - -```typescript -namespaces?: string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.page.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.page.md deleted file mode 100644 index e009a4ac8e393..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.page.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [page](./kibana-plugin-core-public.savedobjectsfindoptions.page.md) - -## SavedObjectsFindOptions.page property - -Signature: - -```typescript -page?: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.perpage.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.perpage.md deleted file mode 100644 index 0c6f3464d194c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.perpage.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [perPage](./kibana-plugin-core-public.savedobjectsfindoptions.perpage.md) - -## SavedObjectsFindOptions.perPage property - -Signature: - -```typescript -perPage?: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.pit.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.pit.md deleted file mode 100644 index 2284a4d8d210d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.pit.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [pit](./kibana-plugin-core-public.savedobjectsfindoptions.pit.md) - -## SavedObjectsFindOptions.pit property - -Search against a specific Point In Time (PIT) that you've opened with . - -Signature: - -```typescript -pit?: SavedObjectsPitParams; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.preference.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.preference.md deleted file mode 100644 index 8a30cb99c57bc..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.preference.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [preference](./kibana-plugin-core-public.savedobjectsfindoptions.preference.md) - -## SavedObjectsFindOptions.preference property - -An optional ES preference value to be used for the query \* - -Signature: - -```typescript -preference?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.rootsearchfields.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.rootsearchfields.md deleted file mode 100644 index faa971509eca2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.rootsearchfields.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [rootSearchFields](./kibana-plugin-core-public.savedobjectsfindoptions.rootsearchfields.md) - -## SavedObjectsFindOptions.rootSearchFields property - -The fields to perform the parsed query against. Unlike the `searchFields` argument, these are expected to be root fields and will not be modified. If used in conjunction with `searchFields`, both are concatenated together. - -Signature: - -```typescript -rootSearchFields?: string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.search.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.search.md deleted file mode 100644 index a7d149b58be02..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.search.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [search](./kibana-plugin-core-public.savedobjectsfindoptions.search.md) - -## SavedObjectsFindOptions.search property - -Search documents using the Elasticsearch Simple Query String syntax. See Elasticsearch Simple Query String `query` argument for more information - -Signature: - -```typescript -search?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.searchafter.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.searchafter.md deleted file mode 100644 index 7016e1f1b72de..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.searchafter.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [searchAfter](./kibana-plugin-core-public.savedobjectsfindoptions.searchafter.md) - -## SavedObjectsFindOptions.searchAfter property - -Use the sort values from the previous page to retrieve the next page of results. - -Signature: - -```typescript -searchAfter?: estypes.Id[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.searchfields.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.searchfields.md deleted file mode 100644 index c99864ac8c046..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.searchfields.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [searchFields](./kibana-plugin-core-public.savedobjectsfindoptions.searchfields.md) - -## SavedObjectsFindOptions.searchFields property - -The fields to perform the parsed query against. See Elasticsearch Simple Query String `fields` argument for more information - -Signature: - -```typescript -searchFields?: string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.sortfield.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.sortfield.md deleted file mode 100644 index 7b5072c0e19df..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.sortfield.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [sortField](./kibana-plugin-core-public.savedobjectsfindoptions.sortfield.md) - -## SavedObjectsFindOptions.sortField property - -Signature: - -```typescript -sortField?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.sortorder.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.sortorder.md deleted file mode 100644 index 36f99e51ea8c6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.sortorder.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [sortOrder](./kibana-plugin-core-public.savedobjectsfindoptions.sortorder.md) - -## SavedObjectsFindOptions.sortOrder property - -Signature: - -```typescript -sortOrder?: estypes.SortOrder; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.type.md deleted file mode 100644 index b4ce216fab1ad..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [type](./kibana-plugin-core-public.savedobjectsfindoptions.type.md) - -## SavedObjectsFindOptions.type property - -Signature: - -```typescript -type: string | string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.typetonamespacesmap.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.typetonamespacesmap.md deleted file mode 100644 index 4af8c9ddeaff4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptions.typetonamespacesmap.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptions](./kibana-plugin-core-public.savedobjectsfindoptions.md) > [typeToNamespacesMap](./kibana-plugin-core-public.savedobjectsfindoptions.typetonamespacesmap.md) - -## SavedObjectsFindOptions.typeToNamespacesMap property - -This map defines each type to search for, and the namespace(s) to search for the type in; this is only intended to be used by a saved object client wrapper. If this is defined, it supersedes the `type` and `namespaces` fields when building the Elasticsearch query. Any types that are not included in this map will be excluded entirely. If a type is included but its value is undefined, the operation will search for that type in the Default namespace. - -Signature: - -```typescript -typeToNamespacesMap?: Map; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.id.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.id.md deleted file mode 100644 index 5e4c8dd982a0f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptionsReference](./kibana-plugin-core-public.savedobjectsfindoptionsreference.md) > [id](./kibana-plugin-core-public.savedobjectsfindoptionsreference.id.md) - -## SavedObjectsFindOptionsReference.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.md deleted file mode 100644 index cab03bf71393c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptionsReference](./kibana-plugin-core-public.savedobjectsfindoptionsreference.md) - -## SavedObjectsFindOptionsReference interface - - -Signature: - -```typescript -export interface SavedObjectsFindOptionsReference -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-public.savedobjectsfindoptionsreference.id.md) | string | | -| [type](./kibana-plugin-core-public.savedobjectsfindoptionsreference.type.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.type.md deleted file mode 100644 index 3779bfd204a4b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindoptionsreference.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindOptionsReference](./kibana-plugin-core-public.savedobjectsfindoptionsreference.md) > [type](./kibana-plugin-core-public.savedobjectsfindoptionsreference.type.md) - -## SavedObjectsFindOptionsReference.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.aggregations.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.aggregations.md deleted file mode 100644 index 14401b02f25c7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.aggregations.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindResponsePublic](./kibana-plugin-core-public.savedobjectsfindresponsepublic.md) > [aggregations](./kibana-plugin-core-public.savedobjectsfindresponsepublic.aggregations.md) - -## SavedObjectsFindResponsePublic.aggregations property - -Signature: - -```typescript -aggregations?: A; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.md deleted file mode 100644 index dd26960a95766..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindResponsePublic](./kibana-plugin-core-public.savedobjectsfindresponsepublic.md) - -## SavedObjectsFindResponsePublic interface - -Return type of the Saved Objects `find()` method. - -\*Note\*: this type is different between the Public and Server Saved Objects clients. - -Signature: - -```typescript -export interface SavedObjectsFindResponsePublic extends SavedObjectsBatchResponse -``` -Extends: SavedObjectsBatchResponse<T> - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aggregations?](./kibana-plugin-core-public.savedobjectsfindresponsepublic.aggregations.md) | A | (Optional) | -| [page](./kibana-plugin-core-public.savedobjectsfindresponsepublic.page.md) | number | | -| [perPage](./kibana-plugin-core-public.savedobjectsfindresponsepublic.perpage.md) | number | | -| [total](./kibana-plugin-core-public.savedobjectsfindresponsepublic.total.md) | number | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.page.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.page.md deleted file mode 100644 index 77b59c8012a5d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.page.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindResponsePublic](./kibana-plugin-core-public.savedobjectsfindresponsepublic.md) > [page](./kibana-plugin-core-public.savedobjectsfindresponsepublic.page.md) - -## SavedObjectsFindResponsePublic.page property - -Signature: - -```typescript -page: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.perpage.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.perpage.md deleted file mode 100644 index b6c6f1a6bff47..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.perpage.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindResponsePublic](./kibana-plugin-core-public.savedobjectsfindresponsepublic.md) > [perPage](./kibana-plugin-core-public.savedobjectsfindresponsepublic.perpage.md) - -## SavedObjectsFindResponsePublic.perPage property - -Signature: - -```typescript -perPage: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.total.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.total.md deleted file mode 100644 index ea551d6be0d7e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsfindresponsepublic.total.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsFindResponsePublic](./kibana-plugin-core-public.savedobjectsfindresponsepublic.md) > [total](./kibana-plugin-core-public.savedobjectsfindresponsepublic.total.md) - -## SavedObjectsFindResponsePublic.total property - -Signature: - -```typescript -total: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.actionpath.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.actionpath.md deleted file mode 100644 index 8752120b27c87..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.actionpath.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md) > [actionPath](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.actionpath.md) - -## SavedObjectsImportActionRequiredWarning.actionPath property - -The path (without the basePath) that the user should be redirect to address this warning. - -Signature: - -```typescript -actionPath: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.buttonlabel.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.buttonlabel.md deleted file mode 100644 index ae7daba4860ef..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.buttonlabel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md) > [buttonLabel](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.buttonlabel.md) - -## SavedObjectsImportActionRequiredWarning.buttonLabel property - -An optional label to use for the link button. If unspecified, a default label will be used. - -Signature: - -```typescript -buttonLabel?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md deleted file mode 100644 index fe148fdc2ff1a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md) - -## SavedObjectsImportActionRequiredWarning interface - -A warning meant to notify that a specific user action is required to finalize the import of some type of object. - - The `actionUrl` must be a path relative to the basePath, and not include it. - -Signature: - -```typescript -export interface SavedObjectsImportActionRequiredWarning -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [actionPath](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.actionpath.md) | string | The path (without the basePath) that the user should be redirect to address this warning. | -| [buttonLabel?](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.buttonlabel.md) | string | (Optional) An optional label to use for the link button. If unspecified, a default label will be used. | -| [message](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.message.md) | string | The translated message to display to the user. | -| [type](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.type.md) | 'action\_required' | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.message.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.message.md deleted file mode 100644 index c0f322892577e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.message.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md) > [message](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.message.md) - -## SavedObjectsImportActionRequiredWarning.message property - -The translated message to display to the user. - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.type.md deleted file mode 100644 index ee88f6a0d5d85..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md) > [type](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.type.md) - -## SavedObjectsImportActionRequiredWarning.type property - -Signature: - -```typescript -type: 'action_required'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.destinations.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.destinations.md deleted file mode 100644 index 59ce43c4bea62..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.destinations.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportAmbiguousConflictError](./kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.md) > [destinations](./kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.destinations.md) - -## SavedObjectsImportAmbiguousConflictError.destinations property - -Signature: - -```typescript -destinations: Array<{ - id: string; - title?: string; - updatedAt?: string; - }>; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.md deleted file mode 100644 index 2d136bb870de7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportAmbiguousConflictError](./kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.md) - -## SavedObjectsImportAmbiguousConflictError interface - -Represents a failure to import due to a conflict, which can be resolved in different ways with an overwrite. - -Signature: - -```typescript -export interface SavedObjectsImportAmbiguousConflictError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [destinations](./kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.destinations.md) | Array<{ id: string; title?: string; updatedAt?: string; }> | | -| [type](./kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.type.md) | 'ambiguous\_conflict' | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.type.md deleted file mode 100644 index 600c56988ac75..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportAmbiguousConflictError](./kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.md) > [type](./kibana-plugin-core-public.savedobjectsimportambiguousconflicterror.type.md) - -## SavedObjectsImportAmbiguousConflictError.type property - -Signature: - -```typescript -type: 'ambiguous_conflict'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.destinationid.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.destinationid.md deleted file mode 100644 index ba4002d932f57..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.destinationid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportConflictError](./kibana-plugin-core-public.savedobjectsimportconflicterror.md) > [destinationId](./kibana-plugin-core-public.savedobjectsimportconflicterror.destinationid.md) - -## SavedObjectsImportConflictError.destinationId property - -Signature: - -```typescript -destinationId?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.md deleted file mode 100644 index 57737986ba4ca..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportConflictError](./kibana-plugin-core-public.savedobjectsimportconflicterror.md) - -## SavedObjectsImportConflictError interface - -Represents a failure to import due to a conflict. - -Signature: - -```typescript -export interface SavedObjectsImportConflictError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [destinationId?](./kibana-plugin-core-public.savedobjectsimportconflicterror.destinationid.md) | string | (Optional) | -| [type](./kibana-plugin-core-public.savedobjectsimportconflicterror.type.md) | 'conflict' | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.type.md deleted file mode 100644 index 651e230e6de8a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportconflicterror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportConflictError](./kibana-plugin-core-public.savedobjectsimportconflicterror.md) > [type](./kibana-plugin-core-public.savedobjectsimportconflicterror.type.md) - -## SavedObjectsImportConflictError.type property - -Signature: - -```typescript -type: 'conflict'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.error.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.error.md deleted file mode 100644 index 16628e83b8af9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportFailure](./kibana-plugin-core-public.savedobjectsimportfailure.md) > [error](./kibana-plugin-core-public.savedobjectsimportfailure.error.md) - -## SavedObjectsImportFailure.error property - -Signature: - -```typescript -error: SavedObjectsImportConflictError | SavedObjectsImportAmbiguousConflictError | SavedObjectsImportUnsupportedTypeError | SavedObjectsImportMissingReferencesError | SavedObjectsImportUnknownError; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.id.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.id.md deleted file mode 100644 index 2279241083241..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportFailure](./kibana-plugin-core-public.savedobjectsimportfailure.md) > [id](./kibana-plugin-core-public.savedobjectsimportfailure.id.md) - -## SavedObjectsImportFailure.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.md deleted file mode 100644 index e7de1014bdaf2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportFailure](./kibana-plugin-core-public.savedobjectsimportfailure.md) - -## SavedObjectsImportFailure interface - -Represents a failure to import. - -Signature: - -```typescript -export interface SavedObjectsImportFailure -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [error](./kibana-plugin-core-public.savedobjectsimportfailure.error.md) | SavedObjectsImportConflictError \| SavedObjectsImportAmbiguousConflictError \| SavedObjectsImportUnsupportedTypeError \| SavedObjectsImportMissingReferencesError \| SavedObjectsImportUnknownError | | -| [id](./kibana-plugin-core-public.savedobjectsimportfailure.id.md) | string | | -| [meta](./kibana-plugin-core-public.savedobjectsimportfailure.meta.md) | { title?: string; icon?: string; } | | -| [overwrite?](./kibana-plugin-core-public.savedobjectsimportfailure.overwrite.md) | boolean | (Optional) If overwrite is specified, an attempt was made to overwrite an existing object. | -| [type](./kibana-plugin-core-public.savedobjectsimportfailure.type.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.meta.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.meta.md deleted file mode 100644 index 4ea9455098035..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.meta.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportFailure](./kibana-plugin-core-public.savedobjectsimportfailure.md) > [meta](./kibana-plugin-core-public.savedobjectsimportfailure.meta.md) - -## SavedObjectsImportFailure.meta property - -Signature: - -```typescript -meta: { - title?: string; - icon?: string; - }; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.overwrite.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.overwrite.md deleted file mode 100644 index 579a16697b406..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.overwrite.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportFailure](./kibana-plugin-core-public.savedobjectsimportfailure.md) > [overwrite](./kibana-plugin-core-public.savedobjectsimportfailure.overwrite.md) - -## SavedObjectsImportFailure.overwrite property - -If `overwrite` is specified, an attempt was made to overwrite an existing object. - -Signature: - -```typescript -overwrite?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.type.md deleted file mode 100644 index 68411093a92ce..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportfailure.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportFailure](./kibana-plugin-core-public.savedobjectsimportfailure.md) > [type](./kibana-plugin-core-public.savedobjectsimportfailure.type.md) - -## SavedObjectsImportFailure.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.md deleted file mode 100644 index 6c03ab263084c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportMissingReferencesError](./kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.md) - -## SavedObjectsImportMissingReferencesError interface - -Represents a failure to import due to missing references. - -Signature: - -```typescript -export interface SavedObjectsImportMissingReferencesError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [references](./kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.references.md) | Array<{ type: string; id: string; }> | | -| [type](./kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.type.md) | 'missing\_references' | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.references.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.references.md deleted file mode 100644 index b479956ed7125..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.references.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportMissingReferencesError](./kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.md) > [references](./kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.references.md) - -## SavedObjectsImportMissingReferencesError.references property - -Signature: - -```typescript -references: Array<{ - type: string; - id: string; - }>; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.type.md deleted file mode 100644 index 6c0caa258c5fb..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportMissingReferencesError](./kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.md) > [type](./kibana-plugin-core-public.savedobjectsimportmissingreferenceserror.type.md) - -## SavedObjectsImportMissingReferencesError.type property - -Signature: - -```typescript -type: 'missing_references'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.errors.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.errors.md deleted file mode 100644 index 073eac20b04ac..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.errors.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportResponse](./kibana-plugin-core-public.savedobjectsimportresponse.md) > [errors](./kibana-plugin-core-public.savedobjectsimportresponse.errors.md) - -## SavedObjectsImportResponse.errors property - -Signature: - -```typescript -errors?: SavedObjectsImportFailure[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.md deleted file mode 100644 index 5b6139723a101..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportResponse](./kibana-plugin-core-public.savedobjectsimportresponse.md) - -## SavedObjectsImportResponse interface - -The response describing the result of an import. - -Signature: - -```typescript -export interface SavedObjectsImportResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [errors?](./kibana-plugin-core-public.savedobjectsimportresponse.errors.md) | SavedObjectsImportFailure\[\] | (Optional) | -| [success](./kibana-plugin-core-public.savedobjectsimportresponse.success.md) | boolean | | -| [successCount](./kibana-plugin-core-public.savedobjectsimportresponse.successcount.md) | number | | -| [successResults?](./kibana-plugin-core-public.savedobjectsimportresponse.successresults.md) | SavedObjectsImportSuccess\[\] | (Optional) | -| [warnings](./kibana-plugin-core-public.savedobjectsimportresponse.warnings.md) | SavedObjectsImportWarning\[\] | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.success.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.success.md deleted file mode 100644 index 3c6492f340418..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.success.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportResponse](./kibana-plugin-core-public.savedobjectsimportresponse.md) > [success](./kibana-plugin-core-public.savedobjectsimportresponse.success.md) - -## SavedObjectsImportResponse.success property - -Signature: - -```typescript -success: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.successcount.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.successcount.md deleted file mode 100644 index caa296c3ef291..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.successcount.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportResponse](./kibana-plugin-core-public.savedobjectsimportresponse.md) > [successCount](./kibana-plugin-core-public.savedobjectsimportresponse.successcount.md) - -## SavedObjectsImportResponse.successCount property - -Signature: - -```typescript -successCount: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.successresults.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.successresults.md deleted file mode 100644 index 51a47b6c2d953..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.successresults.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportResponse](./kibana-plugin-core-public.savedobjectsimportresponse.md) > [successResults](./kibana-plugin-core-public.savedobjectsimportresponse.successresults.md) - -## SavedObjectsImportResponse.successResults property - -Signature: - -```typescript -successResults?: SavedObjectsImportSuccess[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.warnings.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.warnings.md deleted file mode 100644 index 2e55a2e30f9cb..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportresponse.warnings.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportResponse](./kibana-plugin-core-public.savedobjectsimportresponse.md) > [warnings](./kibana-plugin-core-public.savedobjectsimportresponse.warnings.md) - -## SavedObjectsImportResponse.warnings property - -Signature: - -```typescript -warnings: SavedObjectsImportWarning[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.createnewcopy.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.createnewcopy.md deleted file mode 100644 index f60c713973d58..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.createnewcopy.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportRetry](./kibana-plugin-core-public.savedobjectsimportretry.md) > [createNewCopy](./kibana-plugin-core-public.savedobjectsimportretry.createnewcopy.md) - -## SavedObjectsImportRetry.createNewCopy property - -If `createNewCopy` is specified, the new object has a new (undefined) origin ID. This is only needed for the case where `createNewCopies` mode is disabled and ambiguous source conflicts are detected. - -Signature: - -```typescript -createNewCopy?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.destinationid.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.destinationid.md deleted file mode 100644 index 5131d1d01ff02..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.destinationid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportRetry](./kibana-plugin-core-public.savedobjectsimportretry.md) > [destinationId](./kibana-plugin-core-public.savedobjectsimportretry.destinationid.md) - -## SavedObjectsImportRetry.destinationId property - -The object ID that will be created or overwritten. If not specified, the `id` field will be used. - -Signature: - -```typescript -destinationId?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.id.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.id.md deleted file mode 100644 index 961c61a2cba6c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportRetry](./kibana-plugin-core-public.savedobjectsimportretry.md) > [id](./kibana-plugin-core-public.savedobjectsimportretry.id.md) - -## SavedObjectsImportRetry.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.ignoremissingreferences.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.ignoremissingreferences.md deleted file mode 100644 index 4ce833f2966cc..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.ignoremissingreferences.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportRetry](./kibana-plugin-core-public.savedobjectsimportretry.md) > [ignoreMissingReferences](./kibana-plugin-core-public.savedobjectsimportretry.ignoremissingreferences.md) - -## SavedObjectsImportRetry.ignoreMissingReferences property - -If `ignoreMissingReferences` is specified, reference validation will be skipped for this object. - -Signature: - -```typescript -ignoreMissingReferences?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.md deleted file mode 100644 index 80a3145ae7e55..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportRetry](./kibana-plugin-core-public.savedobjectsimportretry.md) - -## SavedObjectsImportRetry interface - -Describes a retry operation for importing a saved object. - -Signature: - -```typescript -export interface SavedObjectsImportRetry -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [createNewCopy?](./kibana-plugin-core-public.savedobjectsimportretry.createnewcopy.md) | boolean | (Optional) If createNewCopy is specified, the new object has a new (undefined) origin ID. This is only needed for the case where createNewCopies mode is disabled and ambiguous source conflicts are detected. | -| [destinationId?](./kibana-plugin-core-public.savedobjectsimportretry.destinationid.md) | string | (Optional) The object ID that will be created or overwritten. If not specified, the id field will be used. | -| [id](./kibana-plugin-core-public.savedobjectsimportretry.id.md) | string | | -| [ignoreMissingReferences?](./kibana-plugin-core-public.savedobjectsimportretry.ignoremissingreferences.md) | boolean | (Optional) If ignoreMissingReferences is specified, reference validation will be skipped for this object. | -| [overwrite](./kibana-plugin-core-public.savedobjectsimportretry.overwrite.md) | boolean | | -| [replaceReferences](./kibana-plugin-core-public.savedobjectsimportretry.replacereferences.md) | Array<{ type: string; from: string; to: string; }> | | -| [type](./kibana-plugin-core-public.savedobjectsimportretry.type.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.overwrite.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.overwrite.md deleted file mode 100644 index 51ea151a9cdb3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.overwrite.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportRetry](./kibana-plugin-core-public.savedobjectsimportretry.md) > [overwrite](./kibana-plugin-core-public.savedobjectsimportretry.overwrite.md) - -## SavedObjectsImportRetry.overwrite property - -Signature: - -```typescript -overwrite: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.replacereferences.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.replacereferences.md deleted file mode 100644 index 2b0fd703c0d81..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.replacereferences.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportRetry](./kibana-plugin-core-public.savedobjectsimportretry.md) > [replaceReferences](./kibana-plugin-core-public.savedobjectsimportretry.replacereferences.md) - -## SavedObjectsImportRetry.replaceReferences property - -Signature: - -```typescript -replaceReferences: Array<{ - type: string; - from: string; - to: string; - }>; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.type.md deleted file mode 100644 index 86ccd13d7ff55..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportretry.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportRetry](./kibana-plugin-core-public.savedobjectsimportretry.md) > [type](./kibana-plugin-core-public.savedobjectsimportretry.type.md) - -## SavedObjectsImportRetry.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.md deleted file mode 100644 index 304779a1589f9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportSimpleWarning](./kibana-plugin-core-public.savedobjectsimportsimplewarning.md) - -## SavedObjectsImportSimpleWarning interface - -A simple informative warning that will be displayed to the user. - -Signature: - -```typescript -export interface SavedObjectsImportSimpleWarning -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [message](./kibana-plugin-core-public.savedobjectsimportsimplewarning.message.md) | string | The translated message to display to the user | -| [type](./kibana-plugin-core-public.savedobjectsimportsimplewarning.type.md) | 'simple' | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.message.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.message.md deleted file mode 100644 index 42c94e14e3d28..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.message.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportSimpleWarning](./kibana-plugin-core-public.savedobjectsimportsimplewarning.md) > [message](./kibana-plugin-core-public.savedobjectsimportsimplewarning.message.md) - -## SavedObjectsImportSimpleWarning.message property - -The translated message to display to the user - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.type.md deleted file mode 100644 index 86a4cbfa434e7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsimplewarning.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportSimpleWarning](./kibana-plugin-core-public.savedobjectsimportsimplewarning.md) > [type](./kibana-plugin-core-public.savedobjectsimportsimplewarning.type.md) - -## SavedObjectsImportSimpleWarning.type property - -Signature: - -```typescript -type: 'simple'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.createnewcopy.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.createnewcopy.md deleted file mode 100644 index 8867331c1e4b7..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.createnewcopy.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-public.savedobjectsimportsuccess.md) > [createNewCopy](./kibana-plugin-core-public.savedobjectsimportsuccess.createnewcopy.md) - -## SavedObjectsImportSuccess.createNewCopy property - -> Warning: This API is now obsolete. -> -> Can be removed when https://github.com/elastic/kibana/issues/91615 is done. If `createNewCopy` is specified, the new object has a new (undefined) origin ID. This is only needed for the case where `createNewCopies` mode is disabled and ambiguous source conflicts are detected. When `createNewCopies` mode is permanently enabled, this field will be redundant and can be removed. -> - -Signature: - -```typescript -createNewCopy?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.destinationid.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.destinationid.md deleted file mode 100644 index 55611a77aeb67..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.destinationid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-public.savedobjectsimportsuccess.md) > [destinationId](./kibana-plugin-core-public.savedobjectsimportsuccess.destinationid.md) - -## SavedObjectsImportSuccess.destinationId property - -If `destinationId` is specified, the new object has a new ID that is different from the import ID. - -Signature: - -```typescript -destinationId?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.id.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.id.md deleted file mode 100644 index 6d6271e37dffe..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-public.savedobjectsimportsuccess.md) > [id](./kibana-plugin-core-public.savedobjectsimportsuccess.id.md) - -## SavedObjectsImportSuccess.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.md deleted file mode 100644 index 57ca4b7a787f6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-public.savedobjectsimportsuccess.md) - -## SavedObjectsImportSuccess interface - -Represents a successful import. - -Signature: - -```typescript -export interface SavedObjectsImportSuccess -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [createNewCopy?](./kibana-plugin-core-public.savedobjectsimportsuccess.createnewcopy.md) | boolean | (Optional) | -| [destinationId?](./kibana-plugin-core-public.savedobjectsimportsuccess.destinationid.md) | string | (Optional) If destinationId is specified, the new object has a new ID that is different from the import ID. | -| [id](./kibana-plugin-core-public.savedobjectsimportsuccess.id.md) | string | | -| [meta](./kibana-plugin-core-public.savedobjectsimportsuccess.meta.md) | { title?: string; icon?: string; } | | -| [overwrite?](./kibana-plugin-core-public.savedobjectsimportsuccess.overwrite.md) | boolean | (Optional) If overwrite is specified, this object overwrote an existing one (or will do so, in the case of a pending resolution). | -| [type](./kibana-plugin-core-public.savedobjectsimportsuccess.type.md) | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.meta.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.meta.md deleted file mode 100644 index d1c7bc92b5cbf..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.meta.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-public.savedobjectsimportsuccess.md) > [meta](./kibana-plugin-core-public.savedobjectsimportsuccess.meta.md) - -## SavedObjectsImportSuccess.meta property - -Signature: - -```typescript -meta: { - title?: string; - icon?: string; - }; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.overwrite.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.overwrite.md deleted file mode 100644 index 18ae2ca9bee3d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.overwrite.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-public.savedobjectsimportsuccess.md) > [overwrite](./kibana-plugin-core-public.savedobjectsimportsuccess.overwrite.md) - -## SavedObjectsImportSuccess.overwrite property - -If `overwrite` is specified, this object overwrote an existing one (or will do so, in the case of a pending resolution). - -Signature: - -```typescript -overwrite?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.type.md deleted file mode 100644 index 6ac14455d281f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportsuccess.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-public.savedobjectsimportsuccess.md) > [type](./kibana-plugin-core-public.savedobjectsimportsuccess.type.md) - -## SavedObjectsImportSuccess.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.md deleted file mode 100644 index fc78e04dee8ac..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportUnknownError](./kibana-plugin-core-public.savedobjectsimportunknownerror.md) - -## SavedObjectsImportUnknownError interface - -Represents a failure to import due to an unknown reason. - -Signature: - -```typescript -export interface SavedObjectsImportUnknownError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [message](./kibana-plugin-core-public.savedobjectsimportunknownerror.message.md) | string | | -| [statusCode](./kibana-plugin-core-public.savedobjectsimportunknownerror.statuscode.md) | number | | -| [type](./kibana-plugin-core-public.savedobjectsimportunknownerror.type.md) | 'unknown' | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.message.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.message.md deleted file mode 100644 index 4445b3527657f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.message.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportUnknownError](./kibana-plugin-core-public.savedobjectsimportunknownerror.md) > [message](./kibana-plugin-core-public.savedobjectsimportunknownerror.message.md) - -## SavedObjectsImportUnknownError.message property - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.statuscode.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.statuscode.md deleted file mode 100644 index 929631cf84b2e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.statuscode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportUnknownError](./kibana-plugin-core-public.savedobjectsimportunknownerror.md) > [statusCode](./kibana-plugin-core-public.savedobjectsimportunknownerror.statuscode.md) - -## SavedObjectsImportUnknownError.statusCode property - -Signature: - -```typescript -statusCode: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.type.md deleted file mode 100644 index 9febc279bb093..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunknownerror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportUnknownError](./kibana-plugin-core-public.savedobjectsimportunknownerror.md) > [type](./kibana-plugin-core-public.savedobjectsimportunknownerror.type.md) - -## SavedObjectsImportUnknownError.type property - -Signature: - -```typescript -type: 'unknown'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.md deleted file mode 100644 index de805f05a12e9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportUnsupportedTypeError](./kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.md) - -## SavedObjectsImportUnsupportedTypeError interface - -Represents a failure to import due to having an unsupported saved object type. - -Signature: - -```typescript -export interface SavedObjectsImportUnsupportedTypeError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [type](./kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.type.md) | 'unsupported\_type' | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.type.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.type.md deleted file mode 100644 index ca8c2a419095f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportUnsupportedTypeError](./kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.md) > [type](./kibana-plugin-core-public.savedobjectsimportunsupportedtypeerror.type.md) - -## SavedObjectsImportUnsupportedTypeError.type property - -Signature: - -```typescript -type: 'unsupported_type'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportwarning.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportwarning.md deleted file mode 100644 index a9a9a70774970..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsimportwarning.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsImportWarning](./kibana-plugin-core-public.savedobjectsimportwarning.md) - -## SavedObjectsImportWarning type - -Composite type of all the possible types of import warnings. - -See [SavedObjectsImportSimpleWarning](./kibana-plugin-core-public.savedobjectsimportsimplewarning.md) and [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-public.savedobjectsimportactionrequiredwarning.md) for more details. - -Signature: - -```typescript -export declare type SavedObjectsImportWarning = SavedObjectsImportSimpleWarning | SavedObjectsImportActionRequiredWarning; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsmigrationversion.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsmigrationversion.md deleted file mode 100644 index f1132b98bc84e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsmigrationversion.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsMigrationVersion](./kibana-plugin-core-public.savedobjectsmigrationversion.md) - -## SavedObjectsMigrationVersion interface - -Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. - -Signature: - -```typescript -export interface SavedObjectsMigrationVersion -``` - -## Example - -migrationVersion: { dashboard: '7.1.1', space: '6.6.6', } - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsnamespacetype.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsnamespacetype.md deleted file mode 100644 index cf5e6cb29a532..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsnamespacetype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsNamespaceType](./kibana-plugin-core-public.savedobjectsnamespacetype.md) - -## SavedObjectsNamespaceType type - -The namespace type dictates how a saved object can be interacted in relation to namespaces. Each type is mutually exclusive: \* single (default): This type of saved object is namespace-isolated, e.g., it exists in only one namespace. \* multiple: This type of saved object is shareable, e.g., it can exist in one or more namespaces. \* multiple-isolated: This type of saved object is namespace-isolated, e.g., it exists in only one namespace, but object IDs must be unique across all namespaces. This is intended to be an intermediate step when objects with a "single" namespace type are being converted to a "multiple" namespace type. In other words, objects with a "multiple-isolated" namespace type will be \*share-capable\*, but will not actually be shareable until the namespace type is changed to "multiple". \* agnostic: This type of saved object is global. - -Signature: - -```typescript -export declare type SavedObjectsNamespaceType = 'single' | 'multiple' | 'multiple-isolated' | 'agnostic'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.alias_purpose.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.alias_purpose.md deleted file mode 100644 index 5e56fe402b10b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.alias_purpose.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsResolveResponse](./kibana-plugin-core-public.savedobjectsresolveresponse.md) > [alias\_purpose](./kibana-plugin-core-public.savedobjectsresolveresponse.alias_purpose.md) - -## SavedObjectsResolveResponse.alias\_purpose property - -The reason this alias was created. - -Currently this is used to determine whether or not a toast should be shown when a user is redirected from a legacy URL; if the alias was created because of saved object conversion, then we will display a toast telling the user that the object has a new URL. - -\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is `'aliasMatch'` or `'conflict'`). - -Signature: - -```typescript -alias_purpose?: 'savedObjectConversion' | 'savedObjectImport'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.alias_target_id.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.alias_target_id.md deleted file mode 100644 index 534c5ffde730b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.alias_target_id.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsResolveResponse](./kibana-plugin-core-public.savedobjectsresolveresponse.md) > [alias\_target\_id](./kibana-plugin-core-public.savedobjectsresolveresponse.alias_target_id.md) - -## SavedObjectsResolveResponse.alias\_target\_id property - -The ID of the object that the legacy URL alias points to. - -\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is `'aliasMatch'` or `'conflict'`). - -Signature: - -```typescript -alias_target_id?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.md deleted file mode 100644 index e212b1ea8b002..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsResolveResponse](./kibana-plugin-core-public.savedobjectsresolveresponse.md) - -## SavedObjectsResolveResponse interface - - -Signature: - -```typescript -export interface SavedObjectsResolveResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [alias\_purpose?](./kibana-plugin-core-public.savedobjectsresolveresponse.alias_purpose.md) | 'savedObjectConversion' \| 'savedObjectImport' | (Optional) The reason this alias was created.Currently this is used to determine whether or not a toast should be shown when a user is redirected from a legacy URL; if the alias was created because of saved object conversion, then we will display a toast telling the user that the object has a new URL.\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is 'aliasMatch' or 'conflict'). | -| [alias\_target\_id?](./kibana-plugin-core-public.savedobjectsresolveresponse.alias_target_id.md) | string | (Optional) The ID of the object that the legacy URL alias points to.\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is 'aliasMatch' or 'conflict'). | -| [outcome](./kibana-plugin-core-public.savedobjectsresolveresponse.outcome.md) | 'exactMatch' \| 'aliasMatch' \| 'conflict' | The outcome for a successful resolve call is one of the following values:\* 'exactMatch' -- One document exactly matched the given ID. \* 'aliasMatch' -- One document with a legacy URL alias matched the given ID; in this case the saved_object.id field is different than the given ID. \* 'conflict' -- Two documents matched the given ID, one was an exact match and another with a legacy URL alias; in this case the saved_object object is the exact match, and the saved_object.id field is the same as the given ID. | -| [saved\_object](./kibana-plugin-core-public.savedobjectsresolveresponse.saved_object.md) | SavedObject<T> | The saved object that was found. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.outcome.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.outcome.md deleted file mode 100644 index ff4367d804e5d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.outcome.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsResolveResponse](./kibana-plugin-core-public.savedobjectsresolveresponse.md) > [outcome](./kibana-plugin-core-public.savedobjectsresolveresponse.outcome.md) - -## SavedObjectsResolveResponse.outcome property - -The outcome for a successful `resolve` call is one of the following values: - -\* `'exactMatch'` -- One document exactly matched the given ID. \* `'aliasMatch'` -- One document with a legacy URL alias matched the given ID; in this case the `saved_object.id` field is different than the given ID. \* `'conflict'` -- Two documents matched the given ID, one was an exact match and another with a legacy URL alias; in this case the `saved_object` object is the exact match, and the `saved_object.id` field is the same as the given ID. - -Signature: - -```typescript -outcome: 'exactMatch' | 'aliasMatch' | 'conflict'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.saved_object.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.saved_object.md deleted file mode 100644 index d8a74d766d582..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsresolveresponse.saved_object.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsResolveResponse](./kibana-plugin-core-public.savedobjectsresolveresponse.md) > [saved\_object](./kibana-plugin-core-public.savedobjectsresolveresponse.saved_object.md) - -## SavedObjectsResolveResponse.saved\_object property - -The saved object that was found. - -Signature: - -```typescript -saved_object: SavedObject; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsstart.client.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsstart.client.md deleted file mode 100644 index 4dc8c5ae41dbc..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsstart.client.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsStart](./kibana-plugin-core-public.savedobjectsstart.md) > [client](./kibana-plugin-core-public.savedobjectsstart.client.md) - -## SavedObjectsStart.client property - -[SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) - -Signature: - -```typescript -client: SavedObjectsClientContract; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsstart.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsstart.md deleted file mode 100644 index 774ef2a35a833..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsstart.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsStart](./kibana-plugin-core-public.savedobjectsstart.md) - -## SavedObjectsStart interface - - -Signature: - -```typescript -export interface SavedObjectsStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [client](./kibana-plugin-core-public.savedobjectsstart.client.md) | SavedObjectsClientContract | [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.md deleted file mode 100644 index 4a9b85e7b67e6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsUpdateOptions](./kibana-plugin-core-public.savedobjectsupdateoptions.md) - -## SavedObjectsUpdateOptions interface - - -Signature: - -```typescript -export interface SavedObjectsUpdateOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [references?](./kibana-plugin-core-public.savedobjectsupdateoptions.references.md) | SavedObjectReference\[\] | (Optional) | -| [upsert?](./kibana-plugin-core-public.savedobjectsupdateoptions.upsert.md) | Attributes | (Optional) | -| [version?](./kibana-plugin-core-public.savedobjectsupdateoptions.version.md) | string | (Optional) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.references.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.references.md deleted file mode 100644 index 87bd774a062a1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.references.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsUpdateOptions](./kibana-plugin-core-public.savedobjectsupdateoptions.md) > [references](./kibana-plugin-core-public.savedobjectsupdateoptions.references.md) - -## SavedObjectsUpdateOptions.references property - -Signature: - -```typescript -references?: SavedObjectReference[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.upsert.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.upsert.md deleted file mode 100644 index 611fd54a527fd..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.upsert.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsUpdateOptions](./kibana-plugin-core-public.savedobjectsupdateoptions.md) > [upsert](./kibana-plugin-core-public.savedobjectsupdateoptions.upsert.md) - -## SavedObjectsUpdateOptions.upsert property - -Signature: - -```typescript -upsert?: Attributes; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.version.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.version.md deleted file mode 100644 index d3d90b0c443da..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectsupdateoptions.version.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectsUpdateOptions](./kibana-plugin-core-public.savedobjectsupdateoptions.md) > [version](./kibana-plugin-core-public.savedobjectsupdateoptions.version.md) - -## SavedObjectsUpdateOptions.version property - -Signature: - -```typescript -version?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory._constructor_.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory._constructor_.md deleted file mode 100644 index 67264a26ac5db..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory._constructor_.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [(constructor)](./kibana-plugin-core-public.scopedhistory._constructor_.md) - -## ScopedHistory.(constructor) - -Constructs a new instance of the `ScopedHistory` class - -Signature: - -```typescript -constructor(parentHistory: History, basePath: string); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| parentHistory | History<HistoryLocationState> | | -| basePath | string | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.action.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.action.md deleted file mode 100644 index 40971b6617dce..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.action.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [action](./kibana-plugin-core-public.scopedhistory.action.md) - -## ScopedHistory.action property - -The last action dispatched on the history stack. - -Signature: - -```typescript -get action(): Action; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.block.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.block.md deleted file mode 100644 index acbb06c6aa6ec..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.block.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [block](./kibana-plugin-core-public.scopedhistory.block.md) - -## ScopedHistory.block property - -Add a block prompt requesting user confirmation when navigating away from the current page. - -Signature: - -```typescript -block: (prompt?: string | boolean | TransitionPromptHook | undefined) => UnregisterCallback; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.createhref.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.createhref.md deleted file mode 100644 index 5ab31c0ba6ff2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.createhref.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [createHref](./kibana-plugin-core-public.scopedhistory.createhref.md) - -## ScopedHistory.createHref property - -Creates an href (string) to the location. If `prependBasePath` is true (default), it will prepend the location's path with the scoped history basePath. - -Signature: - -```typescript -createHref: (location: LocationDescriptorObject, { prependBasePath }?: { - prependBasePath?: boolean | undefined; - }) => Href; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.createsubhistory.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.createsubhistory.md deleted file mode 100644 index 7c5dfccb5b008..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.createsubhistory.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [createSubHistory](./kibana-plugin-core-public.scopedhistory.createsubhistory.md) - -## ScopedHistory.createSubHistory property - -Creates a `ScopedHistory` for a subpath of this `ScopedHistory`. Useful for applications that may have sub-apps that do not need access to the containing application's history. - -Signature: - -```typescript -createSubHistory: (basePath: string) => ScopedHistory; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.go.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.go.md deleted file mode 100644 index 33d3e94c9171d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.go.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [go](./kibana-plugin-core-public.scopedhistory.go.md) - -## ScopedHistory.go property - -Send the user forward or backwards in the history stack. - -Signature: - -```typescript -go: (n: number) => void; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.goback.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.goback.md deleted file mode 100644 index ba32ac45d4b5a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.goback.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [goBack](./kibana-plugin-core-public.scopedhistory.goback.md) - -## ScopedHistory.goBack property - -Send the user one location back in the history stack. Equivalent to calling [ScopedHistory.go(-1)](./kibana-plugin-core-public.scopedhistory.go.md). If no more entries are available backwards, this is a no-op. - -Signature: - -```typescript -goBack: () => void; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.goforward.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.goforward.md deleted file mode 100644 index 9918cb0407cd8..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.goforward.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [goForward](./kibana-plugin-core-public.scopedhistory.goforward.md) - -## ScopedHistory.goForward property - -Send the user one location forward in the history stack. Equivalent to calling [ScopedHistory.go(1)](./kibana-plugin-core-public.scopedhistory.go.md). If no more entries are available forwards, this is a no-op. - -Signature: - -```typescript -goForward: () => void; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.length.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.length.md deleted file mode 100644 index 0205261b57539..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.length.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [length](./kibana-plugin-core-public.scopedhistory.length.md) - -## ScopedHistory.length property - -The number of entries in the history stack, including all entries forwards and backwards from the current location. - -Signature: - -```typescript -get length(): number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.listen.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.listen.md deleted file mode 100644 index febf88639b67c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.listen.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [listen](./kibana-plugin-core-public.scopedhistory.listen.md) - -## ScopedHistory.listen property - -Adds a listener for location updates. - -Signature: - -```typescript -listen: (listener: (location: Location, action: Action) => void) => UnregisterCallback; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.location.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.location.md deleted file mode 100644 index 45227a2b15ad0..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.location.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [location](./kibana-plugin-core-public.scopedhistory.location.md) - -## ScopedHistory.location property - -The current location of the history stack. - -Signature: - -```typescript -get location(): Location; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.md deleted file mode 100644 index a3c369b143b4a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.md +++ /dev/null @@ -1,42 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) - -## ScopedHistory class - -A wrapper around a `History` instance that is scoped to a particular base path of the history stack. Behaves similarly to the `basename` option except that this wrapper hides any history stack entries from outside the scope of this base path. - -This wrapper also allows Core and Plugins to share a single underlying global `History` instance without exposing the history of other applications. - -The [createSubHistory](./kibana-plugin-core-public.scopedhistory.createsubhistory.md) method is particularly useful for applications that contain any number of "sub-apps" which should not have access to the main application's history or basePath. - -Signature: - -```typescript -export declare class ScopedHistory implements History -``` -Implements: History<HistoryLocationState> - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(parentHistory, basePath)](./kibana-plugin-core-public.scopedhistory._constructor_.md) | | Constructs a new instance of the ScopedHistory class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [action](./kibana-plugin-core-public.scopedhistory.action.md) | | Action | The last action dispatched on the history stack. | -| [block](./kibana-plugin-core-public.scopedhistory.block.md) | | (prompt?: string \| boolean \| TransitionPromptHook<HistoryLocationState> \| undefined) => UnregisterCallback | Add a block prompt requesting user confirmation when navigating away from the current page. | -| [createHref](./kibana-plugin-core-public.scopedhistory.createhref.md) | | (location: LocationDescriptorObject<HistoryLocationState>, { prependBasePath }?: { prependBasePath?: boolean \| undefined; }) => Href | Creates an href (string) to the location. If prependBasePath is true (default), it will prepend the location's path with the scoped history basePath. | -| [createSubHistory](./kibana-plugin-core-public.scopedhistory.createsubhistory.md) | | (basePath: string) => ScopedHistory<HistoryLocationState> | Creates a ScopedHistory for a subpath of this ScopedHistory. Useful for applications that may have sub-apps that do not need access to the containing application's history. | -| [go](./kibana-plugin-core-public.scopedhistory.go.md) | | (n: number) => void | Send the user forward or backwards in the history stack. | -| [goBack](./kibana-plugin-core-public.scopedhistory.goback.md) | | () => void | Send the user one location back in the history stack. Equivalent to calling [ScopedHistory.go(-1)](./kibana-plugin-core-public.scopedhistory.go.md). If no more entries are available backwards, this is a no-op. | -| [goForward](./kibana-plugin-core-public.scopedhistory.goforward.md) | | () => void | Send the user one location forward in the history stack. Equivalent to calling [ScopedHistory.go(1)](./kibana-plugin-core-public.scopedhistory.go.md). If no more entries are available forwards, this is a no-op. | -| [length](./kibana-plugin-core-public.scopedhistory.length.md) | | number | The number of entries in the history stack, including all entries forwards and backwards from the current location. | -| [listen](./kibana-plugin-core-public.scopedhistory.listen.md) | | (listener: (location: Location<HistoryLocationState>, action: Action) => void) => UnregisterCallback | Adds a listener for location updates. | -| [location](./kibana-plugin-core-public.scopedhistory.location.md) | | Location<HistoryLocationState> | The current location of the history stack. | -| [push](./kibana-plugin-core-public.scopedhistory.push.md) | | (pathOrLocation: Path \| LocationDescriptorObject<HistoryLocationState>, state?: HistoryLocationState \| undefined) => void | Pushes a new location onto the history stack. If there are forward entries in the stack, they will be removed. | -| [replace](./kibana-plugin-core-public.scopedhistory.replace.md) | | (pathOrLocation: Path \| LocationDescriptorObject<HistoryLocationState>, state?: HistoryLocationState \| undefined) => void | Replaces the current location in the history stack. Does not remove forward or backward entries. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.push.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.push.md deleted file mode 100644 index 226203502c5e0..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.push.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [push](./kibana-plugin-core-public.scopedhistory.push.md) - -## ScopedHistory.push property - -Pushes a new location onto the history stack. If there are forward entries in the stack, they will be removed. - -Signature: - -```typescript -push: (pathOrLocation: Path | LocationDescriptorObject, state?: HistoryLocationState | undefined) => void; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.replace.md b/docs/development/core/public/kibana-plugin-core-public.scopedhistory.replace.md deleted file mode 100644 index 545c81ead0984..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.scopedhistory.replace.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ScopedHistory](./kibana-plugin-core-public.scopedhistory.md) > [replace](./kibana-plugin-core-public.scopedhistory.replace.md) - -## ScopedHistory.replace property - -Replaces the current location in the history stack. Does not remove forward or backward entries. - -Signature: - -```typescript -replace: (pathOrLocation: Path | LocationDescriptorObject, state?: HistoryLocationState | undefined) => void; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject._constructor_.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject._constructor_.md deleted file mode 100644 index 412154f7ac2e3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject._constructor_.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [(constructor)](./kibana-plugin-core-public.simplesavedobject._constructor_.md) - -## SimpleSavedObject.(constructor) - -Constructs a new instance of the `SimpleSavedObject` class - -Signature: - -```typescript -constructor(client: SavedObjectsClientContract, { id, type, version, attributes, error, references, migrationVersion, coreMigrationVersion, namespaces, updated_at: updatedAt, }: SavedObjectType); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| client | SavedObjectsClientContract | | -| { id, type, version, attributes, error, references, migrationVersion, coreMigrationVersion, namespaces, updated\_at: updatedAt, } | SavedObjectType<T> | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject._version.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject._version.md deleted file mode 100644 index 2e5d708143c5e..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject._version.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [\_version](./kibana-plugin-core-public.simplesavedobject._version.md) - -## SimpleSavedObject.\_version property - -Signature: - -```typescript -_version?: SavedObjectType['version']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.attributes.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.attributes.md deleted file mode 100644 index cdca741c10adc..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.attributes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [attributes](./kibana-plugin-core-public.simplesavedobject.attributes.md) - -## SimpleSavedObject.attributes property - -Signature: - -```typescript -attributes: T; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.coremigrationversion.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.coremigrationversion.md deleted file mode 100644 index 8e2217fab6eee..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.coremigrationversion.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [coreMigrationVersion](./kibana-plugin-core-public.simplesavedobject.coremigrationversion.md) - -## SimpleSavedObject.coreMigrationVersion property - -Signature: - -```typescript -coreMigrationVersion: SavedObjectType['coreMigrationVersion']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.delete.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.delete.md deleted file mode 100644 index cb848bff56430..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.delete.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [delete](./kibana-plugin-core-public.simplesavedobject.delete.md) - -## SimpleSavedObject.delete() method - -Signature: - -```typescript -delete(): Promise<{}>; -``` -Returns: - -Promise<{}> - diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.error.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.error.md deleted file mode 100644 index 326b255272582..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [error](./kibana-plugin-core-public.simplesavedobject.error.md) - -## SimpleSavedObject.error property - -Signature: - -```typescript -error: SavedObjectType['error']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.get.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.get.md deleted file mode 100644 index 9a9c27d78c06c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.get.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [get](./kibana-plugin-core-public.simplesavedobject.get.md) - -## SimpleSavedObject.get() method - -Signature: - -```typescript -get(key: string): any; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| key | string | | - -Returns: - -any - diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.has.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.has.md deleted file mode 100644 index acd0ff02c7d23..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.has.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [has](./kibana-plugin-core-public.simplesavedobject.has.md) - -## SimpleSavedObject.has() method - -Signature: - -```typescript -has(key: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| key | string | | - -Returns: - -boolean - diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.id.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.id.md deleted file mode 100644 index 92c560f661e96..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [id](./kibana-plugin-core-public.simplesavedobject.id.md) - -## SimpleSavedObject.id property - -Signature: - -```typescript -id: SavedObjectType['id']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.md deleted file mode 100644 index f151dc8bb5e09..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.md +++ /dev/null @@ -1,47 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) - -## SimpleSavedObject class - -This class is a very simple wrapper for SavedObjects loaded from the server with the [SavedObjectsClientContract](./kibana-plugin-core-public.savedobjectsclientcontract.md). - -It provides basic functionality for creating/saving/deleting saved objects, but doesn't include any type-specific implementations. - -Signature: - -```typescript -export declare class SimpleSavedObject -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(client, { id, type, version, attributes, error, references, migrationVersion, coreMigrationVersion, namespaces, updated\_at: updatedAt, })](./kibana-plugin-core-public.simplesavedobject._constructor_.md) | | Constructs a new instance of the SimpleSavedObject class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [\_version?](./kibana-plugin-core-public.simplesavedobject._version.md) | | SavedObjectType<T>\['version'\] | (Optional) | -| [attributes](./kibana-plugin-core-public.simplesavedobject.attributes.md) | | T | | -| [coreMigrationVersion](./kibana-plugin-core-public.simplesavedobject.coremigrationversion.md) | | SavedObjectType<T>\['coreMigrationVersion'\] | | -| [error](./kibana-plugin-core-public.simplesavedobject.error.md) | | SavedObjectType<T>\['error'\] | | -| [id](./kibana-plugin-core-public.simplesavedobject.id.md) | | SavedObjectType<T>\['id'\] | | -| [migrationVersion](./kibana-plugin-core-public.simplesavedobject.migrationversion.md) | | SavedObjectType<T>\['migrationVersion'\] | | -| [namespaces](./kibana-plugin-core-public.simplesavedobject.namespaces.md) | | SavedObjectType<T>\['namespaces'\] | Space(s) that this saved object exists in. This attribute is not used for "global" saved object types which are registered with namespaceType: 'agnostic'. | -| [references](./kibana-plugin-core-public.simplesavedobject.references.md) | | SavedObjectType<T>\['references'\] | | -| [type](./kibana-plugin-core-public.simplesavedobject.type.md) | | SavedObjectType<T>\['type'\] | | -| [updatedAt](./kibana-plugin-core-public.simplesavedobject.updatedat.md) | | SavedObjectType<T>\['updated\_at'\] | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [delete()](./kibana-plugin-core-public.simplesavedobject.delete.md) | | | -| [get(key)](./kibana-plugin-core-public.simplesavedobject.get.md) | | | -| [has(key)](./kibana-plugin-core-public.simplesavedobject.has.md) | | | -| [save()](./kibana-plugin-core-public.simplesavedobject.save.md) | | | -| [set(key, value)](./kibana-plugin-core-public.simplesavedobject.set.md) | | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.migrationversion.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.migrationversion.md deleted file mode 100644 index a5d17f72513a2..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.migrationversion.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [migrationVersion](./kibana-plugin-core-public.simplesavedobject.migrationversion.md) - -## SimpleSavedObject.migrationVersion property - -Signature: - -```typescript -migrationVersion: SavedObjectType['migrationVersion']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.namespaces.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.namespaces.md deleted file mode 100644 index 7fb0a4e3a717a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.namespaces.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [namespaces](./kibana-plugin-core-public.simplesavedobject.namespaces.md) - -## SimpleSavedObject.namespaces property - -Space(s) that this saved object exists in. This attribute is not used for "global" saved object types which are registered with `namespaceType: 'agnostic'`. - -Signature: - -```typescript -namespaces: SavedObjectType['namespaces']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.references.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.references.md deleted file mode 100644 index 805309a151105..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.references.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [references](./kibana-plugin-core-public.simplesavedobject.references.md) - -## SimpleSavedObject.references property - -Signature: - -```typescript -references: SavedObjectType['references']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.save.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.save.md deleted file mode 100644 index fdd262c70d4e6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.save.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [save](./kibana-plugin-core-public.simplesavedobject.save.md) - -## SimpleSavedObject.save() method - -Signature: - -```typescript -save(): Promise>; -``` -Returns: - -Promise<SimpleSavedObject<T>> - diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.set.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.set.md deleted file mode 100644 index e3a6621f520bd..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.set.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [set](./kibana-plugin-core-public.simplesavedobject.set.md) - -## SimpleSavedObject.set() method - -Signature: - -```typescript -set(key: string, value: any): T; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| key | string | | -| value | any | | - -Returns: - -T - diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.type.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.type.md deleted file mode 100644 index ce5874bc3e0cf..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [type](./kibana-plugin-core-public.simplesavedobject.type.md) - -## SimpleSavedObject.type property - -Signature: - -```typescript -type: SavedObjectType['type']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.updatedat.md b/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.updatedat.md deleted file mode 100644 index 80b1f95969934..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.simplesavedobject.updatedat.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SimpleSavedObject](./kibana-plugin-core-public.simplesavedobject.md) > [updatedAt](./kibana-plugin-core-public.simplesavedobject.updatedat.md) - -## SimpleSavedObject.updatedAt property - -Signature: - -```typescript -updatedAt: SavedObjectType['updated_at']; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.startservicesaccessor.md b/docs/development/core/public/kibana-plugin-core-public.startservicesaccessor.md deleted file mode 100644 index ad53307d53d69..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.startservicesaccessor.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [StartServicesAccessor](./kibana-plugin-core-public.startservicesaccessor.md) - -## StartServicesAccessor type - -Allows plugins to get access to APIs available in start inside async handlers, such as [App.mount](./kibana-plugin-core-public.app.mount.md). Promise will not resolve until Core and plugin dependencies have completed `start`. - -Signature: - -```typescript -export declare type StartServicesAccessor = () => Promise<[CoreStart, TPluginsStart, TStart]>; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.toast.md b/docs/development/core/public/kibana-plugin-core-public.toast.md deleted file mode 100644 index 4acdfa4763d9c..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toast.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [Toast](./kibana-plugin-core-public.toast.md) - -## Toast type - -Signature: - -```typescript -export declare type Toast = ToastInputFields & { - id: string; -}; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.toastinput.md b/docs/development/core/public/kibana-plugin-core-public.toastinput.md deleted file mode 100644 index c6e58227293b6..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastinput.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastInput](./kibana-plugin-core-public.toastinput.md) - -## ToastInput type - -Inputs for [IToasts](./kibana-plugin-core-public.itoasts.md) APIs. - -Signature: - -```typescript -export declare type ToastInput = string | ToastInputFields; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.toastinputfields.md b/docs/development/core/public/kibana-plugin-core-public.toastinputfields.md deleted file mode 100644 index 4eed737726835..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastinputfields.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastInputFields](./kibana-plugin-core-public.toastinputfields.md) - -## ToastInputFields type - -Allowed fields for [ToastInput](./kibana-plugin-core-public.toastinput.md). - -Signature: - -```typescript -export declare type ToastInputFields = Pick> & { - title?: string | MountPoint; - text?: string | MountPoint; -}; -``` - -## Remarks - -`id` cannot be specified. - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastoptions.md b/docs/development/core/public/kibana-plugin-core-public.toastoptions.md deleted file mode 100644 index c140a2e52b036..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastoptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastOptions](./kibana-plugin-core-public.toastoptions.md) - -## ToastOptions interface - -Options available for [IToasts](./kibana-plugin-core-public.itoasts.md) APIs. - -Signature: - -```typescript -export interface ToastOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [toastLifeTimeMs?](./kibana-plugin-core-public.toastoptions.toastlifetimems.md) | number | (Optional) How long should the toast remain on screen. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastoptions.toastlifetimems.md b/docs/development/core/public/kibana-plugin-core-public.toastoptions.toastlifetimems.md deleted file mode 100644 index bb0e2f9afc83b..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastoptions.toastlifetimems.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastOptions](./kibana-plugin-core-public.toastoptions.md) > [toastLifeTimeMs](./kibana-plugin-core-public.toastoptions.toastlifetimems.md) - -## ToastOptions.toastLifeTimeMs property - -How long should the toast remain on screen. - -Signature: - -```typescript -toastLifeTimeMs?: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.toastsapi._constructor_.md b/docs/development/core/public/kibana-plugin-core-public.toastsapi._constructor_.md deleted file mode 100644 index c50cc4d6469ea..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastsapi._constructor_.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsApi](./kibana-plugin-core-public.toastsapi.md) > [(constructor)](./kibana-plugin-core-public.toastsapi._constructor_.md) - -## ToastsApi.(constructor) - -Constructs a new instance of the `ToastsApi` class - -Signature: - -```typescript -constructor(deps: { - uiSettings: IUiSettingsClient; - }); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| deps | { uiSettings: IUiSettingsClient; } | | - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastsapi.add.md b/docs/development/core/public/kibana-plugin-core-public.toastsapi.add.md deleted file mode 100644 index 7bee5af0c3be4..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastsapi.add.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsApi](./kibana-plugin-core-public.toastsapi.md) > [add](./kibana-plugin-core-public.toastsapi.add.md) - -## ToastsApi.add() method - -Adds a new toast to current array of toast. - -Signature: - -```typescript -add(toastOrTitle: ToastInput): Toast; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| toastOrTitle | ToastInput | a [ToastInput](./kibana-plugin-core-public.toastinput.md) | - -Returns: - -Toast - -a [Toast](./kibana-plugin-core-public.toast.md) - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastsapi.adddanger.md b/docs/development/core/public/kibana-plugin-core-public.toastsapi.adddanger.md deleted file mode 100644 index f73a84996ff92..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastsapi.adddanger.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsApi](./kibana-plugin-core-public.toastsapi.md) > [addDanger](./kibana-plugin-core-public.toastsapi.adddanger.md) - -## ToastsApi.addDanger() method - -Adds a new toast pre-configured with the danger color and alert icon. - -Signature: - -```typescript -addDanger(toastOrTitle: ToastInput, options?: ToastOptions): Toast; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| toastOrTitle | ToastInput | a [ToastInput](./kibana-plugin-core-public.toastinput.md) | -| options | ToastOptions | a [ToastOptions](./kibana-plugin-core-public.toastoptions.md) | - -Returns: - -Toast - -a [Toast](./kibana-plugin-core-public.toast.md) - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastsapi.adderror.md b/docs/development/core/public/kibana-plugin-core-public.toastsapi.adderror.md deleted file mode 100644 index c1520ea392f70..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastsapi.adderror.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsApi](./kibana-plugin-core-public.toastsapi.md) > [addError](./kibana-plugin-core-public.toastsapi.adderror.md) - -## ToastsApi.addError() method - -Adds a new toast that displays an exception message with a button to open the full stacktrace in a modal. - -Signature: - -```typescript -addError(error: Error, options: ErrorToastOptions): Toast; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | an Error instance. | -| options | ErrorToastOptions | [ErrorToastOptions](./kibana-plugin-core-public.errortoastoptions.md) | - -Returns: - -Toast - -a [Toast](./kibana-plugin-core-public.toast.md) - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastsapi.addinfo.md b/docs/development/core/public/kibana-plugin-core-public.toastsapi.addinfo.md deleted file mode 100644 index 7029482663155..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastsapi.addinfo.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsApi](./kibana-plugin-core-public.toastsapi.md) > [addInfo](./kibana-plugin-core-public.toastsapi.addinfo.md) - -## ToastsApi.addInfo() method - -Adds a new toast pre-configured with the info color and info icon. - -Signature: - -```typescript -addInfo(toastOrTitle: ToastInput, options?: ToastOptions): Toast; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| toastOrTitle | ToastInput | a [ToastInput](./kibana-plugin-core-public.toastinput.md) | -| options | ToastOptions | a [ToastOptions](./kibana-plugin-core-public.toastoptions.md) | - -Returns: - -Toast - -a [Toast](./kibana-plugin-core-public.toast.md) - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastsapi.addsuccess.md b/docs/development/core/public/kibana-plugin-core-public.toastsapi.addsuccess.md deleted file mode 100644 index b9cf4da3b43af..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastsapi.addsuccess.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsApi](./kibana-plugin-core-public.toastsapi.md) > [addSuccess](./kibana-plugin-core-public.toastsapi.addsuccess.md) - -## ToastsApi.addSuccess() method - -Adds a new toast pre-configured with the success color and check icon. - -Signature: - -```typescript -addSuccess(toastOrTitle: ToastInput, options?: ToastOptions): Toast; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| toastOrTitle | ToastInput | a [ToastInput](./kibana-plugin-core-public.toastinput.md) | -| options | ToastOptions | a [ToastOptions](./kibana-plugin-core-public.toastoptions.md) | - -Returns: - -Toast - -a [Toast](./kibana-plugin-core-public.toast.md) - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastsapi.addwarning.md b/docs/development/core/public/kibana-plugin-core-public.toastsapi.addwarning.md deleted file mode 100644 index 790af0d26220a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastsapi.addwarning.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsApi](./kibana-plugin-core-public.toastsapi.md) > [addWarning](./kibana-plugin-core-public.toastsapi.addwarning.md) - -## ToastsApi.addWarning() method - -Adds a new toast pre-configured with the warning color and help icon. - -Signature: - -```typescript -addWarning(toastOrTitle: ToastInput, options?: ToastOptions): Toast; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| toastOrTitle | ToastInput | a [ToastInput](./kibana-plugin-core-public.toastinput.md) | -| options | ToastOptions | a [ToastOptions](./kibana-plugin-core-public.toastoptions.md) | - -Returns: - -Toast - -a [Toast](./kibana-plugin-core-public.toast.md) - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastsapi.get_.md b/docs/development/core/public/kibana-plugin-core-public.toastsapi.get_.md deleted file mode 100644 index 275d30fd54e0f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastsapi.get_.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsApi](./kibana-plugin-core-public.toastsapi.md) > [get$](./kibana-plugin-core-public.toastsapi.get_.md) - -## ToastsApi.get$() method - -Observable of the toast messages to show to the user. - -Signature: - -```typescript -get$(): Rx.Observable; -``` -Returns: - -Rx.Observable<Toast\[\]> - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastsapi.md b/docs/development/core/public/kibana-plugin-core-public.toastsapi.md deleted file mode 100644 index 4d7f9dcacfa6f..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastsapi.md +++ /dev/null @@ -1,34 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsApi](./kibana-plugin-core-public.toastsapi.md) - -## ToastsApi class - -Methods for adding and removing global toast messages. - -Signature: - -```typescript -export declare class ToastsApi implements IToasts -``` -Implements: IToasts - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(deps)](./kibana-plugin-core-public.toastsapi._constructor_.md) | | Constructs a new instance of the ToastsApi class | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [add(toastOrTitle)](./kibana-plugin-core-public.toastsapi.add.md) | | Adds a new toast to current array of toast. | -| [addDanger(toastOrTitle, options)](./kibana-plugin-core-public.toastsapi.adddanger.md) | | Adds a new toast pre-configured with the danger color and alert icon. | -| [addError(error, options)](./kibana-plugin-core-public.toastsapi.adderror.md) | | Adds a new toast that displays an exception message with a button to open the full stacktrace in a modal. | -| [addInfo(toastOrTitle, options)](./kibana-plugin-core-public.toastsapi.addinfo.md) | | Adds a new toast pre-configured with the info color and info icon. | -| [addSuccess(toastOrTitle, options)](./kibana-plugin-core-public.toastsapi.addsuccess.md) | | Adds a new toast pre-configured with the success color and check icon. | -| [addWarning(toastOrTitle, options)](./kibana-plugin-core-public.toastsapi.addwarning.md) | | Adds a new toast pre-configured with the warning color and help icon. | -| [get$()](./kibana-plugin-core-public.toastsapi.get_.md) | | Observable of the toast messages to show to the user. | -| [remove(toastOrId)](./kibana-plugin-core-public.toastsapi.remove.md) | | Removes a toast from the current array of toasts if present. | - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastsapi.remove.md b/docs/development/core/public/kibana-plugin-core-public.toastsapi.remove.md deleted file mode 100644 index aeac9f46b7901..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastsapi.remove.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsApi](./kibana-plugin-core-public.toastsapi.md) > [remove](./kibana-plugin-core-public.toastsapi.remove.md) - -## ToastsApi.remove() method - -Removes a toast from the current array of toasts if present. - -Signature: - -```typescript -remove(toastOrId: Toast | string): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| toastOrId | Toast \| string | a [Toast](./kibana-plugin-core-public.toast.md) returned by [ToastsApi.add()](./kibana-plugin-core-public.toastsapi.add.md) or its id | - -Returns: - -void - diff --git a/docs/development/core/public/kibana-plugin-core-public.toastssetup.md b/docs/development/core/public/kibana-plugin-core-public.toastssetup.md deleted file mode 100644 index c704a3ec1d80a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastssetup.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsSetup](./kibana-plugin-core-public.toastssetup.md) - -## ToastsSetup type - -[IToasts](./kibana-plugin-core-public.itoasts.md) - -Signature: - -```typescript -export declare type ToastsSetup = IToasts; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.toastsstart.md b/docs/development/core/public/kibana-plugin-core-public.toastsstart.md deleted file mode 100644 index 3b2cf97e4ddf0..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.toastsstart.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ToastsStart](./kibana-plugin-core-public.toastsstart.md) - -## ToastsStart type - -[IToasts](./kibana-plugin-core-public.itoasts.md) - -Signature: - -```typescript -export declare type ToastsStart = IToasts; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.category.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.category.md deleted file mode 100644 index 4b67d32e6bc27..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.category.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [category](./kibana-plugin-core-public.uisettingsparams.category.md) - -## UiSettingsParams.category property - -used to group the configured setting in the UI - -Signature: - -```typescript -category?: string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.deprecation.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.deprecation.md deleted file mode 100644 index a68cbed7662e3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.deprecation.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [deprecation](./kibana-plugin-core-public.uisettingsparams.deprecation.md) - -## UiSettingsParams.deprecation property - -optional deprecation information. Used to generate a deprecation warning. - -Signature: - -```typescript -deprecation?: DeprecationSettings; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.description.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.description.md deleted file mode 100644 index 25e616dbaa90a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.description.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [description](./kibana-plugin-core-public.uisettingsparams.description.md) - -## UiSettingsParams.description property - -description provided to a user in UI - -Signature: - -```typescript -description?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md deleted file mode 100644 index 325ce96f36ca3..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md +++ /dev/null @@ -1,33 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) - -## UiSettingsParams interface - -UiSettings parameters defined by the plugins. - -Signature: - -```typescript -export interface UiSettingsParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [category?](./kibana-plugin-core-public.uisettingsparams.category.md) | string\[\] | (Optional) used to group the configured setting in the UI | -| [deprecation?](./kibana-plugin-core-public.uisettingsparams.deprecation.md) | DeprecationSettings | (Optional) optional deprecation information. Used to generate a deprecation warning. | -| [description?](./kibana-plugin-core-public.uisettingsparams.description.md) | string | (Optional) description provided to a user in UI | -| [metric?](./kibana-plugin-core-public.uisettingsparams.metric.md) | { type: UiCounterMetricType; name: string; } | (Optional) Metric to track once this property changes | -| [name?](./kibana-plugin-core-public.uisettingsparams.name.md) | string | (Optional) title in the UI | -| [optionLabels?](./kibana-plugin-core-public.uisettingsparams.optionlabels.md) | Record<string, string> | (Optional) text labels for 'select' type UI element | -| [options?](./kibana-plugin-core-public.uisettingsparams.options.md) | string\[\] | (Optional) array of permitted values for this setting | -| [order?](./kibana-plugin-core-public.uisettingsparams.order.md) | number | (Optional) index of the settings within its category (ascending order, smallest will be displayed first). Used for ordering in the UI. settings without order defined will be displayed last and ordered by name | -| [readonly?](./kibana-plugin-core-public.uisettingsparams.readonly.md) | boolean | (Optional) a flag indicating that value cannot be changed | -| [requiresPageReload?](./kibana-plugin-core-public.uisettingsparams.requirespagereload.md) | boolean | (Optional) a flag indicating whether new value applying requires page reloading | -| [schema](./kibana-plugin-core-public.uisettingsparams.schema.md) | Type<T> | | -| [sensitive?](./kibana-plugin-core-public.uisettingsparams.sensitive.md) | boolean | (Optional) a flag indicating that value might contain user sensitive data. used by telemetry to mask the value of the setting when sent. | -| [type?](./kibana-plugin-core-public.uisettingsparams.type.md) | UiSettingsType | (Optional) defines a type of UI element [UiSettingsType](./kibana-plugin-core-public.uisettingstype.md) | -| [value?](./kibana-plugin-core-public.uisettingsparams.value.md) | T | (Optional) default value to fall back to if a user doesn't provide any | - diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.metric.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.metric.md deleted file mode 100644 index c6d288ec8f542..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.metric.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [metric](./kibana-plugin-core-public.uisettingsparams.metric.md) - -## UiSettingsParams.metric property - -> Warning: This API is now obsolete. -> -> Temporary measure until https://github.com/elastic/kibana/issues/83084 is in place -> - -Metric to track once this property changes - -Signature: - -```typescript -metric?: { - type: UiCounterMetricType; - name: string; - }; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.name.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.name.md deleted file mode 100644 index a86ba4d49725a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [name](./kibana-plugin-core-public.uisettingsparams.name.md) - -## UiSettingsParams.name property - -title in the UI - -Signature: - -```typescript -name?: string; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.optionlabels.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.optionlabels.md deleted file mode 100644 index 35e90878a0dab..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.optionlabels.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [optionLabels](./kibana-plugin-core-public.uisettingsparams.optionlabels.md) - -## UiSettingsParams.optionLabels property - -text labels for 'select' type UI element - -Signature: - -```typescript -optionLabels?: Record; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.options.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.options.md deleted file mode 100644 index 60060d7c3223d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.options.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [options](./kibana-plugin-core-public.uisettingsparams.options.md) - -## UiSettingsParams.options property - -array of permitted values for this setting - -Signature: - -```typescript -options?: string[]; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.order.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.order.md deleted file mode 100644 index d93aaeb904616..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.order.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [order](./kibana-plugin-core-public.uisettingsparams.order.md) - -## UiSettingsParams.order property - -index of the settings within its category (ascending order, smallest will be displayed first). Used for ordering in the UI. - - settings without order defined will be displayed last and ordered by name - -Signature: - -```typescript -order?: number; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.readonly.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.readonly.md deleted file mode 100644 index 03c5cd6201825..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.readonly.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [readonly](./kibana-plugin-core-public.uisettingsparams.readonly.md) - -## UiSettingsParams.readonly property - -a flag indicating that value cannot be changed - -Signature: - -```typescript -readonly?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.requirespagereload.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.requirespagereload.md deleted file mode 100644 index 2ce396dbc6a81..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.requirespagereload.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [requiresPageReload](./kibana-plugin-core-public.uisettingsparams.requirespagereload.md) - -## UiSettingsParams.requiresPageReload property - -a flag indicating whether new value applying requires page reloading - -Signature: - -```typescript -requiresPageReload?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.schema.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.schema.md deleted file mode 100644 index f90d5161f96a9..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.schema.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [schema](./kibana-plugin-core-public.uisettingsparams.schema.md) - -## UiSettingsParams.schema property - -Signature: - -```typescript -schema: Type; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.sensitive.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.sensitive.md deleted file mode 100644 index e12f3c5649f17..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.sensitive.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [sensitive](./kibana-plugin-core-public.uisettingsparams.sensitive.md) - -## UiSettingsParams.sensitive property - -a flag indicating that value might contain user sensitive data. used by telemetry to mask the value of the setting when sent. - -Signature: - -```typescript -sensitive?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.type.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.type.md deleted file mode 100644 index 128e8f3ce7761..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [type](./kibana-plugin-core-public.uisettingsparams.type.md) - -## UiSettingsParams.type property - -defines a type of UI element [UiSettingsType](./kibana-plugin-core-public.uisettingstype.md) - -Signature: - -```typescript -type?: UiSettingsType; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.value.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.value.md deleted file mode 100644 index 2740f169eeecb..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.value.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [value](./kibana-plugin-core-public.uisettingsparams.value.md) - -## UiSettingsParams.value property - -default value to fall back to if a user doesn't provide any - -Signature: - -```typescript -value?: T; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsstate.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsstate.md deleted file mode 100644 index 8aae7904276e1..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingsstate.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsState](./kibana-plugin-core-public.uisettingsstate.md) - -## UiSettingsState interface - - -Signature: - -```typescript -export interface UiSettingsState -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingstype.md b/docs/development/core/public/kibana-plugin-core-public.uisettingstype.md deleted file mode 100644 index 65e6264ea1e08..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.uisettingstype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsType](./kibana-plugin-core-public.uisettingstype.md) - -## UiSettingsType type - -UI element type to represent the settings. - -Signature: - -```typescript -export declare type UiSettingsType = 'undefined' | 'json' | 'markdown' | 'number' | 'select' | 'boolean' | 'string' | 'array' | 'image' | 'color'; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.unmountcallback.md b/docs/development/core/public/kibana-plugin-core-public.unmountcallback.md deleted file mode 100644 index e4570de5a0f31..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.unmountcallback.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UnmountCallback](./kibana-plugin-core-public.unmountcallback.md) - -## UnmountCallback type - -A function that will unmount the element previously mounted by the associated [MountPoint](./kibana-plugin-core-public.mountpoint.md) - -Signature: - -```typescript -export declare type UnmountCallback = () => void; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.url_max_length.md b/docs/development/core/public/kibana-plugin-core-public.url_max_length.md deleted file mode 100644 index 993320d51909a..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.url_max_length.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [URL\_MAX\_LENGTH](./kibana-plugin-core-public.url_max_length.md) - -## URL\_MAX\_LENGTH variable - -The max URL length allowed by the current browser. Should be used to display warnings to users when query parameters cause URL to exceed this limit. - -Signature: - -```typescript -URL_MAX_LENGTH: number -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.isoverridden.md b/docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.isoverridden.md deleted file mode 100644 index 2d9994e442f00..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.isoverridden.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UserProvidedValues](./kibana-plugin-core-public.userprovidedvalues.md) > [isOverridden](./kibana-plugin-core-public.userprovidedvalues.isoverridden.md) - -## UserProvidedValues.isOverridden property - -Signature: - -```typescript -isOverridden?: boolean; -``` diff --git a/docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.md b/docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.md deleted file mode 100644 index eb8f0124c3341..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UserProvidedValues](./kibana-plugin-core-public.userprovidedvalues.md) - -## UserProvidedValues interface - -Describes the values explicitly set by user. - -Signature: - -```typescript -export interface UserProvidedValues -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [isOverridden?](./kibana-plugin-core-public.userprovidedvalues.isoverridden.md) | boolean | (Optional) | -| [userValue?](./kibana-plugin-core-public.userprovidedvalues.uservalue.md) | T | (Optional) | - diff --git a/docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.uservalue.md b/docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.uservalue.md deleted file mode 100644 index 8925852f6e80d..0000000000000 --- a/docs/development/core/public/kibana-plugin-core-public.userprovidedvalues.uservalue.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UserProvidedValues](./kibana-plugin-core-public.userprovidedvalues.md) > [userValue](./kibana-plugin-core-public.userprovidedvalues.uservalue.md) - -## UserProvidedValues.userValue property - -Signature: - -```typescript -userValue?: T; -``` diff --git a/docs/development/core/server/index.md b/docs/development/core/server/index.md deleted file mode 100644 index 2f215c322cdc8..0000000000000 --- a/docs/development/core/server/index.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) - -## API Reference - -## Packages - -| Package | Description | -| --- | --- | -| [kibana-plugin-core-server](./kibana-plugin-core-server.md) | The Kibana Core APIs for server-side plugins.A plugin requires a kibana.json file at it's root directory that follows to define static plugin information required to load the plugin.A plugin's server/index file must contain a named import, plugin, that implements which returns an object that implements .The plugin integrates with the core system via lifecycle events: setup, start, and stop. In each lifecycle method, the plugin will receive the corresponding core services available (either or ) and any interfaces returned by dependency plugins' lifecycle method. Anything returned by the plugin's lifecycle method will be exposed to downstream dependencies when their corresponding lifecycle methods are invoked. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.analyticsservicepreboot.md b/docs/development/core/server/kibana-plugin-core-server.analyticsservicepreboot.md deleted file mode 100644 index e1129181dbb49..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.analyticsservicepreboot.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AnalyticsServicePreboot](./kibana-plugin-core-server.analyticsservicepreboot.md) - -## AnalyticsServicePreboot type - -Exposes the public APIs of the AnalyticsClient during the preboot phase - -Signature: - -```typescript -export declare type AnalyticsServicePreboot = Omit; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.analyticsservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.analyticsservicesetup.md deleted file mode 100644 index 5dc90eb0c1f03..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.analyticsservicesetup.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AnalyticsServiceSetup](./kibana-plugin-core-server.analyticsservicesetup.md) - -## AnalyticsServiceSetup type - -Exposes the public APIs of the AnalyticsClient during the setup phase. - -Signature: - -```typescript -export declare type AnalyticsServiceSetup = Omit; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.analyticsservicestart.md b/docs/development/core/server/kibana-plugin-core-server.analyticsservicestart.md deleted file mode 100644 index 828577889da61..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.analyticsservicestart.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AnalyticsServiceStart](./kibana-plugin-core-server.analyticsservicestart.md) - -## AnalyticsServiceStart type - -Exposes the public APIs of the AnalyticsClient during the start phase - -Signature: - -```typescript -export declare type AnalyticsServiceStart = Pick; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.app_wrapper_class.md b/docs/development/core/server/kibana-plugin-core-server.app_wrapper_class.md deleted file mode 100644 index cdb0b909bf79d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.app_wrapper_class.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [APP\_WRAPPER\_CLASS](./kibana-plugin-core-server.app_wrapper_class.md) - -## APP\_WRAPPER\_CLASS variable - -The class name for top level \*and\* nested application wrappers to ensure proper layout - -Signature: - -```typescript -APP_WRAPPER_CLASS = "kbnAppWrapper" -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.appcategory.arialabel.md b/docs/development/core/server/kibana-plugin-core-server.appcategory.arialabel.md deleted file mode 100644 index fe81f7cffaa41..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.appcategory.arialabel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AppCategory](./kibana-plugin-core-server.appcategory.md) > [ariaLabel](./kibana-plugin-core-server.appcategory.arialabel.md) - -## AppCategory.ariaLabel property - -If the visual label isn't appropriate for screen readers, can override it here - -Signature: - -```typescript -ariaLabel?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.appcategory.euiicontype.md b/docs/development/core/server/kibana-plugin-core-server.appcategory.euiicontype.md deleted file mode 100644 index 79de37ea619f3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.appcategory.euiicontype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AppCategory](./kibana-plugin-core-server.appcategory.md) > [euiIconType](./kibana-plugin-core-server.appcategory.euiicontype.md) - -## AppCategory.euiIconType property - -Define an icon to be used for the category If the category is only 1 item, and no icon is defined, will default to the product icon Defaults to initials if no icon is defined - -Signature: - -```typescript -euiIconType?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.appcategory.id.md b/docs/development/core/server/kibana-plugin-core-server.appcategory.id.md deleted file mode 100644 index f0889d200725a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.appcategory.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AppCategory](./kibana-plugin-core-server.appcategory.md) > [id](./kibana-plugin-core-server.appcategory.id.md) - -## AppCategory.id property - -Unique identifier for the categories - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.appcategory.label.md b/docs/development/core/server/kibana-plugin-core-server.appcategory.label.md deleted file mode 100644 index 9405118ed7a11..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.appcategory.label.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AppCategory](./kibana-plugin-core-server.appcategory.md) > [label](./kibana-plugin-core-server.appcategory.label.md) - -## AppCategory.label property - -Label used for category name. Also used as aria-label if one isn't set. - -Signature: - -```typescript -label: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.appcategory.md b/docs/development/core/server/kibana-plugin-core-server.appcategory.md deleted file mode 100644 index ca5e8b354d451..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.appcategory.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AppCategory](./kibana-plugin-core-server.appcategory.md) - -## AppCategory interface - -A category definition for nav links to know where to sort them in the left hand nav - -Signature: - -```typescript -export interface AppCategory -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [ariaLabel?](./kibana-plugin-core-server.appcategory.arialabel.md) | string | (Optional) If the visual label isn't appropriate for screen readers, can override it here | -| [euiIconType?](./kibana-plugin-core-server.appcategory.euiicontype.md) | string | (Optional) Define an icon to be used for the category If the category is only 1 item, and no icon is defined, will default to the product icon Defaults to initials if no icon is defined | -| [id](./kibana-plugin-core-server.appcategory.id.md) | string | Unique identifier for the categories | -| [label](./kibana-plugin-core-server.appcategory.label.md) | string | Label used for category name. Also used as aria-label if one isn't set. | -| [order?](./kibana-plugin-core-server.appcategory.order.md) | number | (Optional) The order that categories will be sorted in Prefer large steps between categories to allow for further editing (Default categories are in steps of 1000) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.appcategory.order.md b/docs/development/core/server/kibana-plugin-core-server.appcategory.order.md deleted file mode 100644 index aba1b886076ad..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.appcategory.order.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AppCategory](./kibana-plugin-core-server.appcategory.md) > [order](./kibana-plugin-core-server.appcategory.order.md) - -## AppCategory.order property - -The order that categories will be sorted in Prefer large steps between categories to allow for further editing (Default categories are in steps of 1000) - -Signature: - -```typescript -order?: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.asyncplugin.md b/docs/development/core/server/kibana-plugin-core-server.asyncplugin.md deleted file mode 100644 index bd528e59878ea..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.asyncplugin.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AsyncPlugin](./kibana-plugin-core-server.asyncplugin.md) - -## AsyncPlugin interface - -> Warning: This API is now obsolete. -> -> Asynchronous lifecycles are deprecated, and should be migrated to sync 8.8.0 -> - -A plugin with asynchronous lifecycle methods. - -Signature: - -```typescript -export interface AsyncPlugin -``` - -## Methods - -| Method | Description | -| --- | --- | -| [setup(core, plugins)](./kibana-plugin-core-server.asyncplugin.setup.md) | | -| [start(core, plugins)](./kibana-plugin-core-server.asyncplugin.start.md) | | -| [stop()?](./kibana-plugin-core-server.asyncplugin.stop.md) | (Optional) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.asyncplugin.setup.md b/docs/development/core/server/kibana-plugin-core-server.asyncplugin.setup.md deleted file mode 100644 index 73752d6c9bd20..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.asyncplugin.setup.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AsyncPlugin](./kibana-plugin-core-server.asyncplugin.md) > [setup](./kibana-plugin-core-server.asyncplugin.setup.md) - -## AsyncPlugin.setup() method - -Signature: - -```typescript -setup(core: CoreSetup, plugins: TPluginsSetup): TSetup | Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreSetup | | -| plugins | TPluginsSetup | | - -Returns: - -TSetup \| Promise<TSetup> - diff --git a/docs/development/core/server/kibana-plugin-core-server.asyncplugin.start.md b/docs/development/core/server/kibana-plugin-core-server.asyncplugin.start.md deleted file mode 100644 index 98cf74341062a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.asyncplugin.start.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AsyncPlugin](./kibana-plugin-core-server.asyncplugin.md) > [start](./kibana-plugin-core-server.asyncplugin.start.md) - -## AsyncPlugin.start() method - -Signature: - -```typescript -start(core: CoreStart, plugins: TPluginsStart): TStart | Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreStart | | -| plugins | TPluginsStart | | - -Returns: - -TStart \| Promise<TStart> - diff --git a/docs/development/core/server/kibana-plugin-core-server.asyncplugin.stop.md b/docs/development/core/server/kibana-plugin-core-server.asyncplugin.stop.md deleted file mode 100644 index 80c554f343346..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.asyncplugin.stop.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AsyncPlugin](./kibana-plugin-core-server.asyncplugin.md) > [stop](./kibana-plugin-core-server.asyncplugin.stop.md) - -## AsyncPlugin.stop() method - -Signature: - -```typescript -stop?(): void; -``` -Returns: - -void - diff --git a/docs/development/core/server/kibana-plugin-core-server.authenticated.md b/docs/development/core/server/kibana-plugin-core-server.authenticated.md deleted file mode 100644 index 90b480d4a026c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authenticated.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [Authenticated](./kibana-plugin-core-server.authenticated.md) - -## Authenticated interface - - -Signature: - -```typescript -export interface Authenticated extends AuthResultParams -``` -Extends: AuthResultParams - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [type](./kibana-plugin-core-server.authenticated.type.md) | AuthResultType.authenticated | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.authenticated.type.md b/docs/development/core/server/kibana-plugin-core-server.authenticated.type.md deleted file mode 100644 index f655ecac12606..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authenticated.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [Authenticated](./kibana-plugin-core-server.authenticated.md) > [type](./kibana-plugin-core-server.authenticated.type.md) - -## Authenticated.type property - -Signature: - -```typescript -type: AuthResultType.authenticated; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authenticationhandler.md b/docs/development/core/server/kibana-plugin-core-server.authenticationhandler.md deleted file mode 100644 index d7a456dc127af..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authenticationhandler.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthenticationHandler](./kibana-plugin-core-server.authenticationhandler.md) - -## AuthenticationHandler type - -See [AuthToolkit](./kibana-plugin-core-server.authtoolkit.md). - -Signature: - -```typescript -export declare type AuthenticationHandler = (request: KibanaRequest, response: LifecycleResponseFactory, toolkit: AuthToolkit) => AuthResult | IKibanaResponse | Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authheaders.md b/docs/development/core/server/kibana-plugin-core-server.authheaders.md deleted file mode 100644 index 60c3c0be7e552..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authheaders.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthHeaders](./kibana-plugin-core-server.authheaders.md) - -## AuthHeaders type - -Auth Headers map - -Signature: - -```typescript -export declare type AuthHeaders = Record; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authnothandled.md b/docs/development/core/server/kibana-plugin-core-server.authnothandled.md deleted file mode 100644 index 297f60e4bd8ac..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authnothandled.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthNotHandled](./kibana-plugin-core-server.authnothandled.md) - -## AuthNotHandled interface - - -Signature: - -```typescript -export interface AuthNotHandled -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [type](./kibana-plugin-core-server.authnothandled.type.md) | AuthResultType.notHandled | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.authnothandled.type.md b/docs/development/core/server/kibana-plugin-core-server.authnothandled.type.md deleted file mode 100644 index 0e328b704153d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authnothandled.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthNotHandled](./kibana-plugin-core-server.authnothandled.md) > [type](./kibana-plugin-core-server.authnothandled.type.md) - -## AuthNotHandled.type property - -Signature: - -```typescript -type: AuthResultType.notHandled; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authredirected.md b/docs/development/core/server/kibana-plugin-core-server.authredirected.md deleted file mode 100644 index 4da08e49056f7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authredirected.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthRedirected](./kibana-plugin-core-server.authredirected.md) - -## AuthRedirected interface - - -Signature: - -```typescript -export interface AuthRedirected extends AuthRedirectedParams -``` -Extends: AuthRedirectedParams - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [type](./kibana-plugin-core-server.authredirected.type.md) | AuthResultType.redirected | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.authredirected.type.md b/docs/development/core/server/kibana-plugin-core-server.authredirected.type.md deleted file mode 100644 index b906656818b85..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authredirected.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthRedirected](./kibana-plugin-core-server.authredirected.md) > [type](./kibana-plugin-core-server.authredirected.type.md) - -## AuthRedirected.type property - -Signature: - -```typescript -type: AuthResultType.redirected; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authredirectedparams.headers.md b/docs/development/core/server/kibana-plugin-core-server.authredirectedparams.headers.md deleted file mode 100644 index b500e0c494f61..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authredirectedparams.headers.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthRedirectedParams](./kibana-plugin-core-server.authredirectedparams.md) > [headers](./kibana-plugin-core-server.authredirectedparams.headers.md) - -## AuthRedirectedParams.headers property - -Headers to attach for auth redirect. Must include "location" header - -Signature: - -```typescript -headers: { - location: string; - } & ResponseHeaders; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authredirectedparams.md b/docs/development/core/server/kibana-plugin-core-server.authredirectedparams.md deleted file mode 100644 index 2f6ef7c6f6ba4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authredirectedparams.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthRedirectedParams](./kibana-plugin-core-server.authredirectedparams.md) - -## AuthRedirectedParams interface - -Result of auth redirection. - -Signature: - -```typescript -export interface AuthRedirectedParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [headers](./kibana-plugin-core-server.authredirectedparams.headers.md) | { location: string; } & ResponseHeaders | Headers to attach for auth redirect. Must include "location" header | - diff --git a/docs/development/core/server/kibana-plugin-core-server.authresult.md b/docs/development/core/server/kibana-plugin-core-server.authresult.md deleted file mode 100644 index e523353d83f4a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authresult.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthResult](./kibana-plugin-core-server.authresult.md) - -## AuthResult type - - -Signature: - -```typescript -export declare type AuthResult = Authenticated | AuthNotHandled | AuthRedirected; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authresultparams.md b/docs/development/core/server/kibana-plugin-core-server.authresultparams.md deleted file mode 100644 index 7e907a9bf7a77..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authresultparams.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthResultParams](./kibana-plugin-core-server.authresultparams.md) - -## AuthResultParams interface - -Result of successful authentication. - -Signature: - -```typescript -export interface AuthResultParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [requestHeaders?](./kibana-plugin-core-server.authresultparams.requestheaders.md) | AuthHeaders | (Optional) Auth specific headers to attach to a request object. Used to perform a request to Elasticsearch on behalf of an authenticated user. | -| [responseHeaders?](./kibana-plugin-core-server.authresultparams.responseheaders.md) | AuthHeaders | (Optional) Auth specific headers to attach to a response object. Used to send back authentication mechanism related headers to a client when needed. | -| [state?](./kibana-plugin-core-server.authresultparams.state.md) | Record<string, any> | (Optional) Data to associate with an incoming request. Any downstream plugin may get access to the data. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.authresultparams.requestheaders.md b/docs/development/core/server/kibana-plugin-core-server.authresultparams.requestheaders.md deleted file mode 100644 index aa5b054a93e56..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authresultparams.requestheaders.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthResultParams](./kibana-plugin-core-server.authresultparams.md) > [requestHeaders](./kibana-plugin-core-server.authresultparams.requestheaders.md) - -## AuthResultParams.requestHeaders property - -Auth specific headers to attach to a request object. Used to perform a request to Elasticsearch on behalf of an authenticated user. - -Signature: - -```typescript -requestHeaders?: AuthHeaders; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authresultparams.responseheaders.md b/docs/development/core/server/kibana-plugin-core-server.authresultparams.responseheaders.md deleted file mode 100644 index 5a203c83f6394..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authresultparams.responseheaders.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthResultParams](./kibana-plugin-core-server.authresultparams.md) > [responseHeaders](./kibana-plugin-core-server.authresultparams.responseheaders.md) - -## AuthResultParams.responseHeaders property - -Auth specific headers to attach to a response object. Used to send back authentication mechanism related headers to a client when needed. - -Signature: - -```typescript -responseHeaders?: AuthHeaders; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authresultparams.state.md b/docs/development/core/server/kibana-plugin-core-server.authresultparams.state.md deleted file mode 100644 index 8d35f1676b318..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authresultparams.state.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthResultParams](./kibana-plugin-core-server.authresultparams.md) > [state](./kibana-plugin-core-server.authresultparams.state.md) - -## AuthResultParams.state property - -Data to associate with an incoming request. Any downstream plugin may get access to the data. - -Signature: - -```typescript -state?: Record; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authresulttype.md b/docs/development/core/server/kibana-plugin-core-server.authresulttype.md deleted file mode 100644 index 5e68edd9aa66b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authresulttype.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthResultType](./kibana-plugin-core-server.authresulttype.md) - -## AuthResultType enum - - -Signature: - -```typescript -export declare enum AuthResultType -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| authenticated | "authenticated" | | -| notHandled | "notHandled" | | -| redirected | "redirected" | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.authstatus.md b/docs/development/core/server/kibana-plugin-core-server.authstatus.md deleted file mode 100644 index d022392c6f188..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authstatus.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthStatus](./kibana-plugin-core-server.authstatus.md) - -## AuthStatus enum - -Status indicating an outcome of the authentication. - -Signature: - -```typescript -export declare enum AuthStatus -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| authenticated | "authenticated" | auth interceptor successfully authenticated a user | -| unauthenticated | "unauthenticated" | auth interceptor failed user authentication | -| unknown | "unknown" | auth interceptor has not been registered | - diff --git a/docs/development/core/server/kibana-plugin-core-server.authtoolkit.authenticated.md b/docs/development/core/server/kibana-plugin-core-server.authtoolkit.authenticated.md deleted file mode 100644 index 7cfb4efd29662..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authtoolkit.authenticated.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthToolkit](./kibana-plugin-core-server.authtoolkit.md) > [authenticated](./kibana-plugin-core-server.authtoolkit.authenticated.md) - -## AuthToolkit.authenticated property - -Authentication is successful with given credentials, allow request to pass through - -Signature: - -```typescript -authenticated: (data?: AuthResultParams) => AuthResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authtoolkit.md b/docs/development/core/server/kibana-plugin-core-server.authtoolkit.md deleted file mode 100644 index 24b561d04bbb7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authtoolkit.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthToolkit](./kibana-plugin-core-server.authtoolkit.md) - -## AuthToolkit interface - -A tool set defining an outcome of Auth interceptor for incoming request. - -Signature: - -```typescript -export interface AuthToolkit -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [authenticated](./kibana-plugin-core-server.authtoolkit.authenticated.md) | (data?: AuthResultParams) => AuthResult | Authentication is successful with given credentials, allow request to pass through | -| [notHandled](./kibana-plugin-core-server.authtoolkit.nothandled.md) | () => AuthResult | User has no credentials. Allows user to access a resource when authRequired is 'optional' Rejects a request when authRequired: true | -| [redirected](./kibana-plugin-core-server.authtoolkit.redirected.md) | (headers: { location: string; } & ResponseHeaders) => AuthResult | Redirects user to another location to complete authentication when authRequired: true Allows user to access a resource without redirection when authRequired: 'optional' | - diff --git a/docs/development/core/server/kibana-plugin-core-server.authtoolkit.nothandled.md b/docs/development/core/server/kibana-plugin-core-server.authtoolkit.nothandled.md deleted file mode 100644 index 577faa6562558..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authtoolkit.nothandled.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthToolkit](./kibana-plugin-core-server.authtoolkit.md) > [notHandled](./kibana-plugin-core-server.authtoolkit.nothandled.md) - -## AuthToolkit.notHandled property - -User has no credentials. Allows user to access a resource when authRequired is 'optional' Rejects a request when authRequired: true - -Signature: - -```typescript -notHandled: () => AuthResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.authtoolkit.redirected.md b/docs/development/core/server/kibana-plugin-core-server.authtoolkit.redirected.md deleted file mode 100644 index 92d2181f24765..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.authtoolkit.redirected.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [AuthToolkit](./kibana-plugin-core-server.authtoolkit.md) > [redirected](./kibana-plugin-core-server.authtoolkit.redirected.md) - -## AuthToolkit.redirected property - -Redirects user to another location to complete authentication when authRequired: true Allows user to access a resource without redirection when authRequired: 'optional' - -Signature: - -```typescript -redirected: (headers: { - location: string; - } & ResponseHeaders) => AuthResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.correctiveactions.md b/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.correctiveactions.md deleted file mode 100644 index 273945166735b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.correctiveactions.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BaseDeprecationDetails](./kibana-plugin-core-server.basedeprecationdetails.md) > [correctiveActions](./kibana-plugin-core-server.basedeprecationdetails.correctiveactions.md) - -## BaseDeprecationDetails.correctiveActions property - -corrective action needed to fix this deprecation. - -Signature: - -```typescript -correctiveActions: { - api?: { - path: string; - method: 'POST' | 'PUT'; - body?: { - [key: string]: any; - }; - omitContextFromBody?: boolean; - }; - manualSteps: string[]; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.deprecationtype.md b/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.deprecationtype.md deleted file mode 100644 index 072dfd17418f9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.deprecationtype.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BaseDeprecationDetails](./kibana-plugin-core-server.basedeprecationdetails.md) > [deprecationType](./kibana-plugin-core-server.basedeprecationdetails.deprecationtype.md) - -## BaseDeprecationDetails.deprecationType property - -(optional) Used to identify between different deprecation types. Example use case: in Upgrade Assistant, we may want to allow the user to sort by deprecation type or show each type in a separate tab. - -Feel free to add new types if necessary. Predefined types are necessary to reduce having similar definitions with different keywords across kibana deprecations. - -Signature: - -```typescript -deprecationType?: 'config' | 'feature'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.documentationurl.md b/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.documentationurl.md deleted file mode 100644 index c8f0762acdce6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.documentationurl.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BaseDeprecationDetails](./kibana-plugin-core-server.basedeprecationdetails.md) > [documentationUrl](./kibana-plugin-core-server.basedeprecationdetails.documentationurl.md) - -## BaseDeprecationDetails.documentationUrl property - -(optional) link to the documentation for more details on the deprecation. - -Signature: - -```typescript -documentationUrl?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.level.md b/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.level.md deleted file mode 100644 index ad755805d00b9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.level.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BaseDeprecationDetails](./kibana-plugin-core-server.basedeprecationdetails.md) > [level](./kibana-plugin-core-server.basedeprecationdetails.level.md) - -## BaseDeprecationDetails.level property - -levels: - warning: will not break deployment upon upgrade - critical: needs to be addressed before upgrade. - fetch\_error: Deprecations service failed to grab the deprecation details for the domain. - -Signature: - -```typescript -level: 'warning' | 'critical' | 'fetch_error'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.md b/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.md deleted file mode 100644 index bcd96e35295ac..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BaseDeprecationDetails](./kibana-plugin-core-server.basedeprecationdetails.md) - -## BaseDeprecationDetails interface - -Base properties shared by all types of deprecations - -Signature: - -```typescript -export interface BaseDeprecationDetails -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [correctiveActions](./kibana-plugin-core-server.basedeprecationdetails.correctiveactions.md) | { api?: { path: string; method: 'POST' \| 'PUT'; body?: { \[key: string\]: any; }; omitContextFromBody?: boolean; }; manualSteps: string\[\]; } | corrective action needed to fix this deprecation. | -| [deprecationType?](./kibana-plugin-core-server.basedeprecationdetails.deprecationtype.md) | 'config' \| 'feature' | (Optional) (optional) Used to identify between different deprecation types. Example use case: in Upgrade Assistant, we may want to allow the user to sort by deprecation type or show each type in a separate tab.Feel free to add new types if necessary. Predefined types are necessary to reduce having similar definitions with different keywords across kibana deprecations. | -| [documentationUrl?](./kibana-plugin-core-server.basedeprecationdetails.documentationurl.md) | string | (Optional) (optional) link to the documentation for more details on the deprecation. | -| [level](./kibana-plugin-core-server.basedeprecationdetails.level.md) | 'warning' \| 'critical' \| 'fetch\_error' | levels: - warning: will not break deployment upon upgrade - critical: needs to be addressed before upgrade. - fetch\_error: Deprecations service failed to grab the deprecation details for the domain. | -| [message](./kibana-plugin-core-server.basedeprecationdetails.message.md) | string | The description message to be displayed for the deprecation. Check the README for writing deprecations in src/core/server/deprecations/README.mdx | -| [requireRestart?](./kibana-plugin-core-server.basedeprecationdetails.requirerestart.md) | boolean | (Optional) (optional) specify the fix for this deprecation requires a full kibana restart. | -| [title](./kibana-plugin-core-server.basedeprecationdetails.title.md) | string | The title of the deprecation. Check the README for writing deprecations in src/core/server/deprecations/README.mdx | - diff --git a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.message.md b/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.message.md deleted file mode 100644 index 5802bc316cc08..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.message.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BaseDeprecationDetails](./kibana-plugin-core-server.basedeprecationdetails.md) > [message](./kibana-plugin-core-server.basedeprecationdetails.message.md) - -## BaseDeprecationDetails.message property - -The description message to be displayed for the deprecation. Check the README for writing deprecations in `src/core/server/deprecations/README.mdx` - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.requirerestart.md b/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.requirerestart.md deleted file mode 100644 index 3f589600d0458..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.requirerestart.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BaseDeprecationDetails](./kibana-plugin-core-server.basedeprecationdetails.md) > [requireRestart](./kibana-plugin-core-server.basedeprecationdetails.requirerestart.md) - -## BaseDeprecationDetails.requireRestart property - -(optional) specify the fix for this deprecation requires a full kibana restart. - -Signature: - -```typescript -requireRestart?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.title.md b/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.title.md deleted file mode 100644 index b6788a4faa7c5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basedeprecationdetails.title.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BaseDeprecationDetails](./kibana-plugin-core-server.basedeprecationdetails.md) > [title](./kibana-plugin-core-server.basedeprecationdetails.title.md) - -## BaseDeprecationDetails.title property - -The title of the deprecation. Check the README for writing deprecations in `src/core/server/deprecations/README.mdx` - -Signature: - -```typescript -title: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.get.md b/docs/development/core/server/kibana-plugin-core-server.basepath.get.md deleted file mode 100644 index b35c6e657b01f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basepath.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BasePath](./kibana-plugin-core-server.basepath.md) > [get](./kibana-plugin-core-server.basepath.get.md) - -## BasePath.get property - -returns `basePath` value, specific for an incoming request. - -Signature: - -```typescript -get: (request: KibanaRequest) => string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.md b/docs/development/core/server/kibana-plugin-core-server.basepath.md deleted file mode 100644 index 4fae861cf1659..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basepath.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BasePath](./kibana-plugin-core-server.basepath.md) - -## BasePath class - -Access or manipulate the Kibana base path - -Signature: - -```typescript -export declare class BasePath -``` - -## Remarks - -The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `BasePath` class. - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [get](./kibana-plugin-core-server.basepath.get.md) | | (request: KibanaRequest) => string | returns basePath value, specific for an incoming request. | -| [prepend](./kibana-plugin-core-server.basepath.prepend.md) | | (path: string) => string | Prepends path with the basePath. | -| [publicBaseUrl?](./kibana-plugin-core-server.basepath.publicbaseurl.md) | | string | (Optional) The server's publicly exposed base URL, if configured. Includes protocol, host, port (optional) and the [BasePath.serverBasePath](./kibana-plugin-core-server.basepath.serverbasepath.md). | -| [remove](./kibana-plugin-core-server.basepath.remove.md) | | (path: string) => string | Removes the prepended basePath from the path. | -| [serverBasePath](./kibana-plugin-core-server.basepath.serverbasepath.md) | | string | returns the server's basePathSee [BasePath.get](./kibana-plugin-core-server.basepath.get.md) for getting the basePath value for a specific request | -| [set](./kibana-plugin-core-server.basepath.set.md) | | (request: KibanaRequest, requestSpecificBasePath: string) => void | sets basePath value, specific for an incoming request. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.prepend.md b/docs/development/core/server/kibana-plugin-core-server.basepath.prepend.md deleted file mode 100644 index 94ddf74372cc4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basepath.prepend.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BasePath](./kibana-plugin-core-server.basepath.md) > [prepend](./kibana-plugin-core-server.basepath.prepend.md) - -## BasePath.prepend property - -Prepends `path` with the basePath. - -Signature: - -```typescript -prepend: (path: string) => string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.publicbaseurl.md b/docs/development/core/server/kibana-plugin-core-server.basepath.publicbaseurl.md deleted file mode 100644 index 65842333ac246..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basepath.publicbaseurl.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BasePath](./kibana-plugin-core-server.basepath.md) > [publicBaseUrl](./kibana-plugin-core-server.basepath.publicbaseurl.md) - -## BasePath.publicBaseUrl property - -The server's publicly exposed base URL, if configured. Includes protocol, host, port (optional) and the [BasePath.serverBasePath](./kibana-plugin-core-server.basepath.serverbasepath.md). - -Signature: - -```typescript -readonly publicBaseUrl?: string; -``` - -## Remarks - -Should be used for generating external URL links back to this Kibana instance. - diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.remove.md b/docs/development/core/server/kibana-plugin-core-server.basepath.remove.md deleted file mode 100644 index 13ccd9db6ab86..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basepath.remove.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BasePath](./kibana-plugin-core-server.basepath.md) > [remove](./kibana-plugin-core-server.basepath.remove.md) - -## BasePath.remove property - -Removes the prepended basePath from the `path`. - -Signature: - -```typescript -remove: (path: string) => string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.serverbasepath.md b/docs/development/core/server/kibana-plugin-core-server.basepath.serverbasepath.md deleted file mode 100644 index 01fc9b69055f0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basepath.serverbasepath.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BasePath](./kibana-plugin-core-server.basepath.md) > [serverBasePath](./kibana-plugin-core-server.basepath.serverbasepath.md) - -## BasePath.serverBasePath property - -returns the server's basePath - -See [BasePath.get](./kibana-plugin-core-server.basepath.get.md) for getting the basePath value for a specific request - -Signature: - -```typescript -readonly serverBasePath: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.basepath.set.md b/docs/development/core/server/kibana-plugin-core-server.basepath.set.md deleted file mode 100644 index b90767022d594..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.basepath.set.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [BasePath](./kibana-plugin-core-server.basepath.md) > [set](./kibana-plugin-core-server.basepath.set.md) - -## BasePath.set property - -sets `basePath` value, specific for an incoming request. - -Signature: - -```typescript -set: (request: KibanaRequest, requestSpecificBasePath: string) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.capabilities.catalogue.md b/docs/development/core/server/kibana-plugin-core-server.capabilities.catalogue.md deleted file mode 100644 index 7b93d3b885d23..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.capabilities.catalogue.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [Capabilities](./kibana-plugin-core-server.capabilities.md) > [catalogue](./kibana-plugin-core-server.capabilities.catalogue.md) - -## Capabilities.catalogue property - -Catalogue capabilities. Catalogue entries drive the visibility of the Kibana homepage options. - -Signature: - -```typescript -catalogue: Record; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.capabilities.management.md b/docs/development/core/server/kibana-plugin-core-server.capabilities.management.md deleted file mode 100644 index 968faadf43774..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.capabilities.management.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [Capabilities](./kibana-plugin-core-server.capabilities.md) > [management](./kibana-plugin-core-server.capabilities.management.md) - -## Capabilities.management property - -Management section capabilities. - -Signature: - -```typescript -management: { - [sectionId: string]: Record; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.capabilities.md b/docs/development/core/server/kibana-plugin-core-server.capabilities.md deleted file mode 100644 index a5900e96a86b5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.capabilities.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [Capabilities](./kibana-plugin-core-server.capabilities.md) - -## Capabilities interface - -The read-only set of capabilities available for the current UI session. Capabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID, and the boolean is a flag indicating if the capability is enabled or disabled. - -Signature: - -```typescript -export interface Capabilities -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [catalogue](./kibana-plugin-core-server.capabilities.catalogue.md) | Record<string, boolean> | Catalogue capabilities. Catalogue entries drive the visibility of the Kibana homepage options. | -| [management](./kibana-plugin-core-server.capabilities.management.md) | { \[sectionId: string\]: Record<string, boolean>; } | Management section capabilities. | -| [navLinks](./kibana-plugin-core-server.capabilities.navlinks.md) | Record<string, boolean> | Navigation link capabilities. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.capabilities.navlinks.md b/docs/development/core/server/kibana-plugin-core-server.capabilities.navlinks.md deleted file mode 100644 index 0e68239ff4eee..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.capabilities.navlinks.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [Capabilities](./kibana-plugin-core-server.capabilities.md) > [navLinks](./kibana-plugin-core-server.capabilities.navlinks.md) - -## Capabilities.navLinks property - -Navigation link capabilities. - -Signature: - -```typescript -navLinks: Record; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.capabilitiesprovider.md b/docs/development/core/server/kibana-plugin-core-server.capabilitiesprovider.md deleted file mode 100644 index 2f71e4b9bb18a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.capabilitiesprovider.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CapabilitiesProvider](./kibana-plugin-core-server.capabilitiesprovider.md) - -## CapabilitiesProvider type - -See [CapabilitiesSetup](./kibana-plugin-core-server.capabilitiessetup.md) - -Signature: - -```typescript -export declare type CapabilitiesProvider = () => Partial; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.md b/docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.md deleted file mode 100644 index 19e7f05b20415..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CapabilitiesSetup](./kibana-plugin-core-server.capabilitiessetup.md) - -## CapabilitiesSetup interface - -APIs to manage the [Capabilities](./kibana-plugin-core-server.capabilities.md) that will be used by the application. - -Plugins relying on capabilities to toggle some of their features should register them during the setup phase using the `registerProvider` method. - -Plugins having the responsibility to restrict capabilities depending on a given context should register their capabilities switcher using the `registerSwitcher` method. - -Refers to the methods documentation for complete description and examples. - -Signature: - -```typescript -export interface CapabilitiesSetup -``` - -## Methods - -| Method | Description | -| --- | --- | -| [registerProvider(provider)](./kibana-plugin-core-server.capabilitiessetup.registerprovider.md) | Register a [CapabilitiesProvider](./kibana-plugin-core-server.capabilitiesprovider.md) to be used to provide [Capabilities](./kibana-plugin-core-server.capabilities.md) when resolving them. | -| [registerSwitcher(switcher)](./kibana-plugin-core-server.capabilitiessetup.registerswitcher.md) | Register a [CapabilitiesSwitcher](./kibana-plugin-core-server.capabilitiesswitcher.md) to be used to change the default state of the [Capabilities](./kibana-plugin-core-server.capabilities.md) entries when resolving them.A capabilities switcher can only change the state of existing capabilities. Capabilities added or removed when invoking the switcher will be ignored. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.registerprovider.md b/docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.registerprovider.md deleted file mode 100644 index 9122f7e0f11ed..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.registerprovider.md +++ /dev/null @@ -1,45 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CapabilitiesSetup](./kibana-plugin-core-server.capabilitiessetup.md) > [registerProvider](./kibana-plugin-core-server.capabilitiessetup.registerprovider.md) - -## CapabilitiesSetup.registerProvider() method - -Register a [CapabilitiesProvider](./kibana-plugin-core-server.capabilitiesprovider.md) to be used to provide [Capabilities](./kibana-plugin-core-server.capabilities.md) when resolving them. - -Signature: - -```typescript -registerProvider(provider: CapabilitiesProvider): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| provider | CapabilitiesProvider | | - -Returns: - -void - -## Example - -How to register a plugin's capabilities during setup - -```ts -// my-plugin/server/plugin.ts -public setup(core: CoreSetup, deps: {}) { - core.capabilities.registerProvider(() => { - return { - catalogue: { - myPlugin: true, - }, - myPlugin: { - someFeature: true, - featureDisabledByDefault: false, - }, - } - }); -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.registerswitcher.md b/docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.registerswitcher.md deleted file mode 100644 index c07703c1f365f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.capabilitiessetup.registerswitcher.md +++ /dev/null @@ -1,58 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CapabilitiesSetup](./kibana-plugin-core-server.capabilitiessetup.md) > [registerSwitcher](./kibana-plugin-core-server.capabilitiessetup.registerswitcher.md) - -## CapabilitiesSetup.registerSwitcher() method - -Register a [CapabilitiesSwitcher](./kibana-plugin-core-server.capabilitiesswitcher.md) to be used to change the default state of the [Capabilities](./kibana-plugin-core-server.capabilities.md) entries when resolving them. - -A capabilities switcher can only change the state of existing capabilities. Capabilities added or removed when invoking the switcher will be ignored. - -Signature: - -```typescript -registerSwitcher(switcher: CapabilitiesSwitcher): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| switcher | CapabilitiesSwitcher | | - -Returns: - -void - -## Example - -How to restrict some capabilities - -```ts -// my-plugin/server/plugin.ts -public setup(core: CoreSetup, deps: {}) { - core.capabilities.registerSwitcher((request, capabilities, useDefaultCapabilities) => { - // useDefaultCapabilities is a special case that switchers typically don't have to concern themselves with. - // The default capabilities are typically the ones you provide in your CapabilitiesProvider, but this flag - // gives each switcher an opportunity to change the default capabilities of other plugins' capabilities. - // For example, you may decide to flip another plugin's capability to false if today is Tuesday, - // but you wouldn't want to do this when we are requesting the default set of capabilities. - if (useDefaultCapabilities) { - return { - somePlugin: { - featureEnabledByDefault: true - } - } - } - if(myPluginApi.shouldRestrictSomePluginBecauseOf(request)) { - return { - somePlugin: { - featureEnabledByDefault: false // `featureEnabledByDefault` will be disabled. All other capabilities will remain unchanged. - } - } - } - return {}; // All capabilities will remain unchanged. - }); -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.capabilitiesstart.md b/docs/development/core/server/kibana-plugin-core-server.capabilitiesstart.md deleted file mode 100644 index 217a782be9d8b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.capabilitiesstart.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CapabilitiesStart](./kibana-plugin-core-server.capabilitiesstart.md) - -## CapabilitiesStart interface - -APIs to access the application [Capabilities](./kibana-plugin-core-server.capabilities.md). - -Signature: - -```typescript -export interface CapabilitiesStart -``` - -## Methods - -| Method | Description | -| --- | --- | -| [resolveCapabilities(request, options)](./kibana-plugin-core-server.capabilitiesstart.resolvecapabilities.md) | Resolve the [Capabilities](./kibana-plugin-core-server.capabilities.md) to be used for given request | - diff --git a/docs/development/core/server/kibana-plugin-core-server.capabilitiesstart.resolvecapabilities.md b/docs/development/core/server/kibana-plugin-core-server.capabilitiesstart.resolvecapabilities.md deleted file mode 100644 index a9dc279526065..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.capabilitiesstart.resolvecapabilities.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CapabilitiesStart](./kibana-plugin-core-server.capabilitiesstart.md) > [resolveCapabilities](./kibana-plugin-core-server.capabilitiesstart.resolvecapabilities.md) - -## CapabilitiesStart.resolveCapabilities() method - -Resolve the [Capabilities](./kibana-plugin-core-server.capabilities.md) to be used for given request - -Signature: - -```typescript -resolveCapabilities(request: KibanaRequest, options?: ResolveCapabilitiesOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| request | KibanaRequest | | -| options | ResolveCapabilitiesOptions | | - -Returns: - -Promise<Capabilities> - diff --git a/docs/development/core/server/kibana-plugin-core-server.capabilitiesswitcher.md b/docs/development/core/server/kibana-plugin-core-server.capabilitiesswitcher.md deleted file mode 100644 index e6a0a9a096671..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.capabilitiesswitcher.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CapabilitiesSwitcher](./kibana-plugin-core-server.capabilitiesswitcher.md) - -## CapabilitiesSwitcher type - -See [CapabilitiesSetup](./kibana-plugin-core-server.capabilitiessetup.md) - -Signature: - -```typescript -export declare type CapabilitiesSwitcher = (request: KibanaRequest, uiCapabilities: Capabilities, useDefaultCapabilities: boolean) => Partial | Promise>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.configpath.md b/docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.configpath.md deleted file mode 100644 index 7af6c16d86e4a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.configpath.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ConfigDeprecationDetails](./kibana-plugin-core-server.configdeprecationdetails.md) > [configPath](./kibana-plugin-core-server.configdeprecationdetails.configpath.md) - -## ConfigDeprecationDetails.configPath property - -Signature: - -```typescript -configPath: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.deprecationtype.md b/docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.deprecationtype.md deleted file mode 100644 index fb3737062f986..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.deprecationtype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ConfigDeprecationDetails](./kibana-plugin-core-server.configdeprecationdetails.md) > [deprecationType](./kibana-plugin-core-server.configdeprecationdetails.deprecationtype.md) - -## ConfigDeprecationDetails.deprecationType property - -Signature: - -```typescript -deprecationType: 'config'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.md b/docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.md deleted file mode 100644 index 6065d1fc1889f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.configdeprecationdetails.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ConfigDeprecationDetails](./kibana-plugin-core-server.configdeprecationdetails.md) - -## ConfigDeprecationDetails interface - - -Signature: - -```typescript -export interface ConfigDeprecationDetails extends BaseDeprecationDetails -``` -Extends: BaseDeprecationDetails - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [configPath](./kibana-plugin-core-server.configdeprecationdetails.configpath.md) | string | | -| [deprecationType](./kibana-plugin-core-server.configdeprecationdetails.deprecationtype.md) | 'config' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.contextsetup.createcontextcontainer.md b/docs/development/core/server/kibana-plugin-core-server.contextsetup.createcontextcontainer.md deleted file mode 100644 index 5e60dd7e2ffd7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.contextsetup.createcontextcontainer.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ContextSetup](./kibana-plugin-core-server.contextsetup.md) > [createContextContainer](./kibana-plugin-core-server.contextsetup.createcontextcontainer.md) - -## ContextSetup.createContextContainer() method - -Creates a new [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) for a service owner. - -Signature: - -```typescript -createContextContainer(): IContextContainer; -``` -Returns: - -IContextContainer - diff --git a/docs/development/core/server/kibana-plugin-core-server.contextsetup.md b/docs/development/core/server/kibana-plugin-core-server.contextsetup.md deleted file mode 100644 index a15adccc97714..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.contextsetup.md +++ /dev/null @@ -1,136 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ContextSetup](./kibana-plugin-core-server.contextsetup.md) - -## ContextSetup interface - -An object that handles registration of context providers and configuring handlers with context. - -Signature: - -```typescript -export interface ContextSetup -``` - -## Remarks - -A [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) can be used by any Core service or plugin (known as the "service owner") which wishes to expose APIs in a handler function. The container object will manage registering context providers and configuring a handler with all of the contexts that should be exposed to the handler's plugin. This is dependent on the dependencies that the handler's plugin declares. - -Contexts providers are executed in the order they were registered. Each provider gets access to context values provided by any plugins that it depends on. - -In order to configure a handler with context, you must call the [IContextContainer.createHandler()](./kibana-plugin-core-server.icontextcontainer.createhandler.md) function and use the returned handler which will automatically build a context object when called. - -When registering context or creating handlers, the \_calling plugin's opaque id\_ must be provided. This id is passed in via the plugin's initializer and can be accessed from the [PluginInitializerContext.opaqueId](./kibana-plugin-core-server.plugininitializercontext.opaqueid.md) Note this should NOT be the context service owner's id, but the plugin that is actually registering the context or handler. - -```ts -// Correct -class MyPlugin { - private readonly handlers = new Map(); - - setup(core) { - this.contextContainer = core.context.createContextContainer(); - return { - registerContext(pluginOpaqueId, contextName, provider) { - this.contextContainer.registerContext(pluginOpaqueId, contextName, provider); - }, - registerRoute(pluginOpaqueId, path, handler) { - this.handlers.set( - path, - this.contextContainer.createHandler(pluginOpaqueId, handler) - ); - } - } - } -} - -// Incorrect -class MyPlugin { - private readonly handlers = new Map(); - - constructor(private readonly initContext: PluginInitializerContext) {} - - setup(core) { - this.contextContainer = core.context.createContextContainer(); - return { - registerContext(contextName, provider) { - // BUG! - // This would leak this context to all handlers rather that only plugins that depend on the calling plugin. - this.contextContainer.registerContext(this.initContext.opaqueId, contextName, provider); - }, - registerRoute(path, handler) { - this.handlers.set( - path, - // BUG! - // This handler will not receive any contexts provided by other dependencies of the calling plugin. - this.contextContainer.createHandler(this.initContext.opaqueId, handler) - ); - } - } - } -} -``` - -## Example - -Say we're creating a plugin for rendering visualizations that allows new rendering methods to be registered. If we want to offer context to these rendering methods, we can leverage the ContextService to manage these contexts. - -```ts -export interface VizRenderContext { - core: { - i18n: I18nStart; - uiSettings: IUiSettingsClient; - } - [contextName: string]: unknown; -} - -export type VizRenderer = (context: VizRenderContext, domElement: HTMLElement) => () => void; -// When a renderer is bound via `contextContainer.createHandler` this is the type that will be returned. -type BoundVizRenderer = (domElement: HTMLElement) => () => void; - -class VizRenderingPlugin { - private readonly contextContainer?: IContextContainer; - private readonly vizRenderers = new Map(); - - constructor(private readonly initContext: PluginInitializerContext) {} - - setup(core) { - this.contextContainer = core.context.createContextContainer(); - - return { - registerContext: this.contextContainer.registerContext, - registerVizRenderer: (plugin: PluginOpaqueId, renderMethod: string, renderer: VizTypeRenderer) => - this.vizRenderers.set(renderMethod, this.contextContainer.createHandler(plugin, renderer)), - }; - } - - start(core) { - // Register the core context available to all renderers. Use the VizRendererContext's opaqueId as the first arg. - this.contextContainer.registerContext(this.initContext.opaqueId, 'core', () => ({ - i18n: core.i18n, - uiSettings: core.uiSettings - })); - - return { - registerContext: this.contextContainer.registerContext, - - renderVizualization: (renderMethod: string, domElement: HTMLElement) => { - if (!this.vizRenderer.has(renderMethod)) { - throw new Error(`Render method '${renderMethod}' has not been registered`); - } - - // The handler can now be called directly with only an `HTMLElement` and will automatically - // have a new `context` object created and populated by the context container. - const handler = this.vizRenderers.get(renderMethod) - return handler(domElement); - } - }; - } -} -``` - -## Methods - -| Method | Description | -| --- | --- | -| [createContextContainer()](./kibana-plugin-core-server.contextsetup.createcontextcontainer.md) | Creates a new [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) for a service owner. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.corepreboot.analytics.md b/docs/development/core/server/kibana-plugin-core-server.corepreboot.analytics.md deleted file mode 100644 index b9846fa851b35..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corepreboot.analytics.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CorePreboot](./kibana-plugin-core-server.corepreboot.md) > [analytics](./kibana-plugin-core-server.corepreboot.analytics.md) - -## CorePreboot.analytics property - -[AnalyticsServicePreboot](./kibana-plugin-core-server.analyticsservicepreboot.md) - -Signature: - -```typescript -analytics: AnalyticsServicePreboot; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corepreboot.elasticsearch.md b/docs/development/core/server/kibana-plugin-core-server.corepreboot.elasticsearch.md deleted file mode 100644 index 7d3b5296b5988..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corepreboot.elasticsearch.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CorePreboot](./kibana-plugin-core-server.corepreboot.md) > [elasticsearch](./kibana-plugin-core-server.corepreboot.elasticsearch.md) - -## CorePreboot.elasticsearch property - -[ElasticsearchServicePreboot](./kibana-plugin-core-server.elasticsearchservicepreboot.md) - -Signature: - -```typescript -elasticsearch: ElasticsearchServicePreboot; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corepreboot.http.md b/docs/development/core/server/kibana-plugin-core-server.corepreboot.http.md deleted file mode 100644 index 0df643c6f133b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corepreboot.http.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CorePreboot](./kibana-plugin-core-server.corepreboot.md) > [http](./kibana-plugin-core-server.corepreboot.http.md) - -## CorePreboot.http property - -[HttpServicePreboot](./kibana-plugin-core-server.httpservicepreboot.md) - -Signature: - -```typescript -http: HttpServicePreboot; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corepreboot.md b/docs/development/core/server/kibana-plugin-core-server.corepreboot.md deleted file mode 100644 index 027dca5362f8d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corepreboot.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CorePreboot](./kibana-plugin-core-server.corepreboot.md) - -## CorePreboot interface - -Context passed to the `setup` method of `preboot` plugins. - -Signature: - -```typescript -export interface CorePreboot -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [analytics](./kibana-plugin-core-server.corepreboot.analytics.md) | AnalyticsServicePreboot | [AnalyticsServicePreboot](./kibana-plugin-core-server.analyticsservicepreboot.md) | -| [elasticsearch](./kibana-plugin-core-server.corepreboot.elasticsearch.md) | ElasticsearchServicePreboot | [ElasticsearchServicePreboot](./kibana-plugin-core-server.elasticsearchservicepreboot.md) | -| [http](./kibana-plugin-core-server.corepreboot.http.md) | HttpServicePreboot | [HttpServicePreboot](./kibana-plugin-core-server.httpservicepreboot.md) | -| [preboot](./kibana-plugin-core-server.corepreboot.preboot.md) | PrebootServicePreboot | [PrebootServicePreboot](./kibana-plugin-core-server.prebootservicepreboot.md) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.corepreboot.preboot.md b/docs/development/core/server/kibana-plugin-core-server.corepreboot.preboot.md deleted file mode 100644 index 3780a92053a5e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corepreboot.preboot.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CorePreboot](./kibana-plugin-core-server.corepreboot.md) > [preboot](./kibana-plugin-core-server.corepreboot.preboot.md) - -## CorePreboot.preboot property - -[PrebootServicePreboot](./kibana-plugin-core-server.prebootservicepreboot.md) - -Signature: - -```typescript -preboot: PrebootServicePreboot; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.deprecations.md b/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.deprecations.md deleted file mode 100644 index 51d93371e518e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.deprecations.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreRequestHandlerContext](./kibana-plugin-core-server.corerequesthandlercontext.md) > [deprecations](./kibana-plugin-core-server.corerequesthandlercontext.deprecations.md) - -## CoreRequestHandlerContext.deprecations property - -Signature: - -```typescript -deprecations: { - client: DeprecationsClient; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.elasticsearch.md b/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.elasticsearch.md deleted file mode 100644 index 22ff84ce1cb57..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.elasticsearch.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreRequestHandlerContext](./kibana-plugin-core-server.corerequesthandlercontext.md) > [elasticsearch](./kibana-plugin-core-server.corerequesthandlercontext.elasticsearch.md) - -## CoreRequestHandlerContext.elasticsearch property - -Signature: - -```typescript -elasticsearch: { - client: IScopedClusterClient; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.md b/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.md deleted file mode 100644 index 47297bcddc906..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreRequestHandlerContext](./kibana-plugin-core-server.corerequesthandlercontext.md) - -## CoreRequestHandlerContext interface - -The `core` context provided to route handler. - -Provides the following clients and services: - [savedObjects.client](./kibana-plugin-core-server.savedobjectsclient.md) - Saved Objects client which uses the credentials of the incoming request - [savedObjects.typeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) - Type registry containing all the registered types. - [elasticsearch.client](./kibana-plugin-core-server.iscopedclusterclient.md) - Elasticsearch data client which uses the credentials of the incoming request - [uiSettings.client](./kibana-plugin-core-server.iuisettingsclient.md) - uiSettings client which uses the credentials of the incoming request - -Signature: - -```typescript -export interface CoreRequestHandlerContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [deprecations](./kibana-plugin-core-server.corerequesthandlercontext.deprecations.md) | { client: DeprecationsClient; } | | -| [elasticsearch](./kibana-plugin-core-server.corerequesthandlercontext.elasticsearch.md) | { client: IScopedClusterClient; } | | -| [savedObjects](./kibana-plugin-core-server.corerequesthandlercontext.savedobjects.md) | { client: SavedObjectsClientContract; typeRegistry: ISavedObjectTypeRegistry; getClient: (options?: SavedObjectsClientProviderOptions) => SavedObjectsClientContract; getExporter: (client: SavedObjectsClientContract) => ISavedObjectsExporter; getImporter: (client: SavedObjectsClientContract) => ISavedObjectsImporter; } | | -| [uiSettings](./kibana-plugin-core-server.corerequesthandlercontext.uisettings.md) | { client: IUiSettingsClient; } | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.savedobjects.md b/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.savedobjects.md deleted file mode 100644 index 6d1aa0a8bb5f1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.savedobjects.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreRequestHandlerContext](./kibana-plugin-core-server.corerequesthandlercontext.md) > [savedObjects](./kibana-plugin-core-server.corerequesthandlercontext.savedobjects.md) - -## CoreRequestHandlerContext.savedObjects property - -Signature: - -```typescript -savedObjects: { - client: SavedObjectsClientContract; - typeRegistry: ISavedObjectTypeRegistry; - getClient: (options?: SavedObjectsClientProviderOptions) => SavedObjectsClientContract; - getExporter: (client: SavedObjectsClientContract) => ISavedObjectsExporter; - getImporter: (client: SavedObjectsClientContract) => ISavedObjectsImporter; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.uisettings.md b/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.uisettings.md deleted file mode 100644 index f76dcc8965a03..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corerequesthandlercontext.uisettings.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreRequestHandlerContext](./kibana-plugin-core-server.corerequesthandlercontext.md) > [uiSettings](./kibana-plugin-core-server.corerequesthandlercontext.uisettings.md) - -## CoreRequestHandlerContext.uiSettings property - -Signature: - -```typescript -uiSettings: { - client: IUiSettingsClient; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.analytics.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.analytics.md deleted file mode 100644 index 3e6d8a5c2c230..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.analytics.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [analytics](./kibana-plugin-core-server.coresetup.analytics.md) - -## CoreSetup.analytics property - -[AnalyticsServiceSetup](./kibana-plugin-core-server.analyticsservicesetup.md) - -Signature: - -```typescript -analytics: AnalyticsServiceSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.capabilities.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.capabilities.md deleted file mode 100644 index 29e66998ab825..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.capabilities.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [capabilities](./kibana-plugin-core-server.coresetup.capabilities.md) - -## CoreSetup.capabilities property - -[CapabilitiesSetup](./kibana-plugin-core-server.capabilitiessetup.md) - -Signature: - -```typescript -capabilities: CapabilitiesSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.context.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.context.md deleted file mode 100644 index fd8a71f3ff93c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.context.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [context](./kibana-plugin-core-server.coresetup.context.md) - -## CoreSetup.context property - -[ContextSetup](./kibana-plugin-core-server.contextsetup.md) - -Signature: - -```typescript -context: ContextSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.deprecations.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.deprecations.md deleted file mode 100644 index 436cc29b6e343..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.deprecations.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [deprecations](./kibana-plugin-core-server.coresetup.deprecations.md) - -## CoreSetup.deprecations property - -[DeprecationsServiceSetup](./kibana-plugin-core-server.deprecationsservicesetup.md) - -Signature: - -```typescript -deprecations: DeprecationsServiceSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.doclinks.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.doclinks.md deleted file mode 100644 index 68dcc7c9af53f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.doclinks.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [docLinks](./kibana-plugin-core-server.coresetup.doclinks.md) - -## CoreSetup.docLinks property - - -Signature: - -```typescript -docLinks: DocLinksServiceSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.elasticsearch.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.elasticsearch.md deleted file mode 100644 index ed1a87034f51d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.elasticsearch.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [elasticsearch](./kibana-plugin-core-server.coresetup.elasticsearch.md) - -## CoreSetup.elasticsearch property - -[ElasticsearchServiceSetup](./kibana-plugin-core-server.elasticsearchservicesetup.md) - -Signature: - -```typescript -elasticsearch: ElasticsearchServiceSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.executioncontext.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.executioncontext.md deleted file mode 100644 index 847b353aee44f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.executioncontext.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [executionContext](./kibana-plugin-core-server.coresetup.executioncontext.md) - -## CoreSetup.executionContext property - -[ExecutionContextSetup](./kibana-plugin-core-server.executioncontextsetup.md) - -Signature: - -```typescript -executionContext: ExecutionContextSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.getstartservices.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.getstartservices.md deleted file mode 100644 index 1f326449156f0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.getstartservices.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [getStartServices](./kibana-plugin-core-server.coresetup.getstartservices.md) - -## CoreSetup.getStartServices property - -[StartServicesAccessor](./kibana-plugin-core-server.startservicesaccessor.md) - -Signature: - -```typescript -getStartServices: StartServicesAccessor; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.http.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.http.md deleted file mode 100644 index a8028827cc0a4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.http.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [http](./kibana-plugin-core-server.coresetup.http.md) - -## CoreSetup.http property - -[HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) - -Signature: - -```typescript -http: HttpServiceSetup & { - resources: HttpResources; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.i18n.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.i18n.md deleted file mode 100644 index cac878c1e4449..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.i18n.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [i18n](./kibana-plugin-core-server.coresetup.i18n.md) - -## CoreSetup.i18n property - -[I18nServiceSetup](./kibana-plugin-core-server.i18nservicesetup.md) - -Signature: - -```typescript -i18n: I18nServiceSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.logging.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.logging.md deleted file mode 100644 index 78fcc9be2c677..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.logging.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [logging](./kibana-plugin-core-server.coresetup.logging.md) - -## CoreSetup.logging property - - -Signature: - -```typescript -logging: LoggingServiceSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.md deleted file mode 100644 index cb8d26dc4dda4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.md +++ /dev/null @@ -1,34 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) - -## CoreSetup interface - -Context passed to the `setup` method of `standard` plugins. - -Signature: - -```typescript -export interface CoreSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [analytics](./kibana-plugin-core-server.coresetup.analytics.md) | AnalyticsServiceSetup | [AnalyticsServiceSetup](./kibana-plugin-core-server.analyticsservicesetup.md) | -| [capabilities](./kibana-plugin-core-server.coresetup.capabilities.md) | CapabilitiesSetup | [CapabilitiesSetup](./kibana-plugin-core-server.capabilitiessetup.md) | -| [context](./kibana-plugin-core-server.coresetup.context.md) | ContextSetup | [ContextSetup](./kibana-plugin-core-server.contextsetup.md) | -| [deprecations](./kibana-plugin-core-server.coresetup.deprecations.md) | DeprecationsServiceSetup | [DeprecationsServiceSetup](./kibana-plugin-core-server.deprecationsservicesetup.md) | -| [docLinks](./kibana-plugin-core-server.coresetup.doclinks.md) | DocLinksServiceSetup | | -| [elasticsearch](./kibana-plugin-core-server.coresetup.elasticsearch.md) | ElasticsearchServiceSetup | [ElasticsearchServiceSetup](./kibana-plugin-core-server.elasticsearchservicesetup.md) | -| [executionContext](./kibana-plugin-core-server.coresetup.executioncontext.md) | ExecutionContextSetup | [ExecutionContextSetup](./kibana-plugin-core-server.executioncontextsetup.md) | -| [getStartServices](./kibana-plugin-core-server.coresetup.getstartservices.md) | StartServicesAccessor<TPluginsStart, TStart> | [StartServicesAccessor](./kibana-plugin-core-server.startservicesaccessor.md) | -| [http](./kibana-plugin-core-server.coresetup.http.md) | HttpServiceSetup & { resources: HttpResources; } | [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) | -| [i18n](./kibana-plugin-core-server.coresetup.i18n.md) | I18nServiceSetup | [I18nServiceSetup](./kibana-plugin-core-server.i18nservicesetup.md) | -| [logging](./kibana-plugin-core-server.coresetup.logging.md) | LoggingServiceSetup | | -| [metrics](./kibana-plugin-core-server.coresetup.metrics.md) | MetricsServiceSetup | [MetricsServiceSetup](./kibana-plugin-core-server.metricsservicesetup.md) | -| [savedObjects](./kibana-plugin-core-server.coresetup.savedobjects.md) | SavedObjectsServiceSetup | [SavedObjectsServiceSetup](./kibana-plugin-core-server.savedobjectsservicesetup.md) | -| [status](./kibana-plugin-core-server.coresetup.status.md) | StatusServiceSetup | [StatusServiceSetup](./kibana-plugin-core-server.statusservicesetup.md) | -| [uiSettings](./kibana-plugin-core-server.coresetup.uisettings.md) | UiSettingsServiceSetup | [UiSettingsServiceSetup](./kibana-plugin-core-server.uisettingsservicesetup.md) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.metrics.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.metrics.md deleted file mode 100644 index 77c9e867ef8ea..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.metrics.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [metrics](./kibana-plugin-core-server.coresetup.metrics.md) - -## CoreSetup.metrics property - -[MetricsServiceSetup](./kibana-plugin-core-server.metricsservicesetup.md) - -Signature: - -```typescript -metrics: MetricsServiceSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.savedobjects.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.savedobjects.md deleted file mode 100644 index 4b448b89bd3cd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.savedobjects.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [savedObjects](./kibana-plugin-core-server.coresetup.savedobjects.md) - -## CoreSetup.savedObjects property - -[SavedObjectsServiceSetup](./kibana-plugin-core-server.savedobjectsservicesetup.md) - -Signature: - -```typescript -savedObjects: SavedObjectsServiceSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.status.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.status.md deleted file mode 100644 index f5ea627a9f008..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.status.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [status](./kibana-plugin-core-server.coresetup.status.md) - -## CoreSetup.status property - -[StatusServiceSetup](./kibana-plugin-core-server.statusservicesetup.md) - -Signature: - -```typescript -status: StatusServiceSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.coresetup.uisettings.md b/docs/development/core/server/kibana-plugin-core-server.coresetup.uisettings.md deleted file mode 100644 index 60aff70155a72..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.coresetup.uisettings.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreSetup](./kibana-plugin-core-server.coresetup.md) > [uiSettings](./kibana-plugin-core-server.coresetup.uisettings.md) - -## CoreSetup.uiSettings property - -[UiSettingsServiceSetup](./kibana-plugin-core-server.uisettingsservicesetup.md) - -Signature: - -```typescript -uiSettings: UiSettingsServiceSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corestart.analytics.md b/docs/development/core/server/kibana-plugin-core-server.corestart.analytics.md deleted file mode 100644 index 7ea48c183f30e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestart.analytics.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStart](./kibana-plugin-core-server.corestart.md) > [analytics](./kibana-plugin-core-server.corestart.analytics.md) - -## CoreStart.analytics property - -[AnalyticsServiceStart](./kibana-plugin-core-server.analyticsservicestart.md) - -Signature: - -```typescript -analytics: AnalyticsServiceStart; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corestart.capabilities.md b/docs/development/core/server/kibana-plugin-core-server.corestart.capabilities.md deleted file mode 100644 index 20705b7554c3a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestart.capabilities.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStart](./kibana-plugin-core-server.corestart.md) > [capabilities](./kibana-plugin-core-server.corestart.capabilities.md) - -## CoreStart.capabilities property - -[CapabilitiesStart](./kibana-plugin-core-server.capabilitiesstart.md) - -Signature: - -```typescript -capabilities: CapabilitiesStart; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corestart.doclinks.md b/docs/development/core/server/kibana-plugin-core-server.corestart.doclinks.md deleted file mode 100644 index e647d291d9172..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestart.doclinks.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStart](./kibana-plugin-core-server.corestart.md) > [docLinks](./kibana-plugin-core-server.corestart.doclinks.md) - -## CoreStart.docLinks property - - -Signature: - -```typescript -docLinks: DocLinksServiceStart; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corestart.elasticsearch.md b/docs/development/core/server/kibana-plugin-core-server.corestart.elasticsearch.md deleted file mode 100644 index d8f518ceebd64..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestart.elasticsearch.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStart](./kibana-plugin-core-server.corestart.md) > [elasticsearch](./kibana-plugin-core-server.corestart.elasticsearch.md) - -## CoreStart.elasticsearch property - -[ElasticsearchServiceStart](./kibana-plugin-core-server.elasticsearchservicestart.md) - -Signature: - -```typescript -elasticsearch: ElasticsearchServiceStart; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corestart.executioncontext.md b/docs/development/core/server/kibana-plugin-core-server.corestart.executioncontext.md deleted file mode 100644 index e58f4dc4afa32..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestart.executioncontext.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStart](./kibana-plugin-core-server.corestart.md) > [executionContext](./kibana-plugin-core-server.corestart.executioncontext.md) - -## CoreStart.executionContext property - -[ExecutionContextStart](./kibana-plugin-core-server.executioncontextstart.md) - -Signature: - -```typescript -executionContext: ExecutionContextStart; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corestart.http.md b/docs/development/core/server/kibana-plugin-core-server.corestart.http.md deleted file mode 100644 index d81049dfbd340..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestart.http.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStart](./kibana-plugin-core-server.corestart.md) > [http](./kibana-plugin-core-server.corestart.http.md) - -## CoreStart.http property - -[HttpServiceStart](./kibana-plugin-core-server.httpservicestart.md) - -Signature: - -```typescript -http: HttpServiceStart; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corestart.md b/docs/development/core/server/kibana-plugin-core-server.corestart.md deleted file mode 100644 index f5566e6671ef1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestart.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStart](./kibana-plugin-core-server.corestart.md) - -## CoreStart interface - -Context passed to the plugins `start` method. - -Signature: - -```typescript -export interface CoreStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [analytics](./kibana-plugin-core-server.corestart.analytics.md) | AnalyticsServiceStart | [AnalyticsServiceStart](./kibana-plugin-core-server.analyticsservicestart.md) | -| [capabilities](./kibana-plugin-core-server.corestart.capabilities.md) | CapabilitiesStart | [CapabilitiesStart](./kibana-plugin-core-server.capabilitiesstart.md) | -| [docLinks](./kibana-plugin-core-server.corestart.doclinks.md) | DocLinksServiceStart | | -| [elasticsearch](./kibana-plugin-core-server.corestart.elasticsearch.md) | ElasticsearchServiceStart | [ElasticsearchServiceStart](./kibana-plugin-core-server.elasticsearchservicestart.md) | -| [executionContext](./kibana-plugin-core-server.corestart.executioncontext.md) | ExecutionContextStart | [ExecutionContextStart](./kibana-plugin-core-server.executioncontextstart.md) | -| [http](./kibana-plugin-core-server.corestart.http.md) | HttpServiceStart | [HttpServiceStart](./kibana-plugin-core-server.httpservicestart.md) | -| [metrics](./kibana-plugin-core-server.corestart.metrics.md) | MetricsServiceStart | [MetricsServiceStart](./kibana-plugin-core-server.metricsservicestart.md) | -| [savedObjects](./kibana-plugin-core-server.corestart.savedobjects.md) | SavedObjectsServiceStart | [SavedObjectsServiceStart](./kibana-plugin-core-server.savedobjectsservicestart.md) | -| [uiSettings](./kibana-plugin-core-server.corestart.uisettings.md) | UiSettingsServiceStart | [UiSettingsServiceStart](./kibana-plugin-core-server.uisettingsservicestart.md) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.corestart.metrics.md b/docs/development/core/server/kibana-plugin-core-server.corestart.metrics.md deleted file mode 100644 index 2c32f730c4c9b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestart.metrics.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStart](./kibana-plugin-core-server.corestart.md) > [metrics](./kibana-plugin-core-server.corestart.metrics.md) - -## CoreStart.metrics property - -[MetricsServiceStart](./kibana-plugin-core-server.metricsservicestart.md) - -Signature: - -```typescript -metrics: MetricsServiceStart; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corestart.savedobjects.md b/docs/development/core/server/kibana-plugin-core-server.corestart.savedobjects.md deleted file mode 100644 index cc31c256df88e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestart.savedobjects.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStart](./kibana-plugin-core-server.corestart.md) > [savedObjects](./kibana-plugin-core-server.corestart.savedobjects.md) - -## CoreStart.savedObjects property - -[SavedObjectsServiceStart](./kibana-plugin-core-server.savedobjectsservicestart.md) - -Signature: - -```typescript -savedObjects: SavedObjectsServiceStart; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corestart.uisettings.md b/docs/development/core/server/kibana-plugin-core-server.corestart.uisettings.md deleted file mode 100644 index 95c298820f3c3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestart.uisettings.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStart](./kibana-plugin-core-server.corestart.md) > [uiSettings](./kibana-plugin-core-server.corestart.uisettings.md) - -## CoreStart.uiSettings property - -[UiSettingsServiceStart](./kibana-plugin-core-server.uisettingsservicestart.md) - -Signature: - -```typescript -uiSettings: UiSettingsServiceStart; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corestatus.elasticsearch.md b/docs/development/core/server/kibana-plugin-core-server.corestatus.elasticsearch.md deleted file mode 100644 index b41e7020c38e9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestatus.elasticsearch.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStatus](./kibana-plugin-core-server.corestatus.md) > [elasticsearch](./kibana-plugin-core-server.corestatus.elasticsearch.md) - -## CoreStatus.elasticsearch property - -Signature: - -```typescript -elasticsearch: ServiceStatus; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.corestatus.md b/docs/development/core/server/kibana-plugin-core-server.corestatus.md deleted file mode 100644 index 8d44ab49dfcb7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestatus.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStatus](./kibana-plugin-core-server.corestatus.md) - -## CoreStatus interface - -Status of core services. - -Signature: - -```typescript -export interface CoreStatus -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [elasticsearch](./kibana-plugin-core-server.corestatus.elasticsearch.md) | ServiceStatus | | -| [savedObjects](./kibana-plugin-core-server.corestatus.savedobjects.md) | ServiceStatus | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.corestatus.savedobjects.md b/docs/development/core/server/kibana-plugin-core-server.corestatus.savedobjects.md deleted file mode 100644 index d554c6f70d720..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.corestatus.savedobjects.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CoreStatus](./kibana-plugin-core-server.corestatus.md) > [savedObjects](./kibana-plugin-core-server.corestatus.savedobjects.md) - -## CoreStatus.savedObjects property - -Signature: - -```typescript -savedObjects: ServiceStatus; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.countresponse._shards.md b/docs/development/core/server/kibana-plugin-core-server.countresponse._shards.md deleted file mode 100644 index 0f31a554e2208..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.countresponse._shards.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CountResponse](./kibana-plugin-core-server.countresponse.md) > [\_shards](./kibana-plugin-core-server.countresponse._shards.md) - -## CountResponse.\_shards property - -Signature: - -```typescript -_shards: ShardsInfo; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.countresponse.count.md b/docs/development/core/server/kibana-plugin-core-server.countresponse.count.md deleted file mode 100644 index 3cd1a6aaf6644..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.countresponse.count.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CountResponse](./kibana-plugin-core-server.countresponse.md) > [count](./kibana-plugin-core-server.countresponse.count.md) - -## CountResponse.count property - -Signature: - -```typescript -count: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.countresponse.md b/docs/development/core/server/kibana-plugin-core-server.countresponse.md deleted file mode 100644 index 53793dc87bf33..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.countresponse.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CountResponse](./kibana-plugin-core-server.countresponse.md) - -## CountResponse interface - - -Signature: - -```typescript -export interface CountResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [\_shards](./kibana-plugin-core-server.countresponse._shards.md) | ShardsInfo | | -| [count](./kibana-plugin-core-server.countresponse.count.md) | number | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.cspconfig.default.md b/docs/development/core/server/kibana-plugin-core-server.cspconfig.default.md deleted file mode 100644 index 7668cf56dab83..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.cspconfig.default.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CspConfig](./kibana-plugin-core-server.cspconfig.md) > [DEFAULT](./kibana-plugin-core-server.cspconfig.default.md) - -## CspConfig.DEFAULT property - -Signature: - -```typescript -static readonly DEFAULT: CspConfig; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.cspconfig.disableembedding.md b/docs/development/core/server/kibana-plugin-core-server.cspconfig.disableembedding.md deleted file mode 100644 index bbd7c42c302d1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.cspconfig.disableembedding.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CspConfig](./kibana-plugin-core-server.cspconfig.md) > [disableEmbedding](./kibana-plugin-core-server.cspconfig.disableembedding.md) - -## CspConfig.disableEmbedding property - -Signature: - -```typescript -readonly disableEmbedding: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.cspconfig.header.md b/docs/development/core/server/kibana-plugin-core-server.cspconfig.header.md deleted file mode 100644 index ebde18e7b3586..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.cspconfig.header.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CspConfig](./kibana-plugin-core-server.cspconfig.md) > [header](./kibana-plugin-core-server.cspconfig.header.md) - -## CspConfig.header property - -Signature: - -```typescript -readonly header: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.cspconfig.md b/docs/development/core/server/kibana-plugin-core-server.cspconfig.md deleted file mode 100644 index 3d2f4bb683742..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.cspconfig.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CspConfig](./kibana-plugin-core-server.cspconfig.md) - -## CspConfig class - -CSP configuration for use in Kibana. - -Signature: - -```typescript -export declare class CspConfig implements ICspConfig -``` -Implements: ICspConfig - -## Remarks - -The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `CspConfig` class. - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [DEFAULT](./kibana-plugin-core-server.cspconfig.default.md) | static | CspConfig | | -| [disableEmbedding](./kibana-plugin-core-server.cspconfig.disableembedding.md) | | boolean | | -| [header](./kibana-plugin-core-server.cspconfig.header.md) | | string | | -| [strict](./kibana-plugin-core-server.cspconfig.strict.md) | | boolean | | -| [warnLegacyBrowsers](./kibana-plugin-core-server.cspconfig.warnlegacybrowsers.md) | | boolean | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.cspconfig.strict.md b/docs/development/core/server/kibana-plugin-core-server.cspconfig.strict.md deleted file mode 100644 index 303d04373db73..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.cspconfig.strict.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CspConfig](./kibana-plugin-core-server.cspconfig.md) > [strict](./kibana-plugin-core-server.cspconfig.strict.md) - -## CspConfig.strict property - -Signature: - -```typescript -readonly strict: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.cspconfig.warnlegacybrowsers.md b/docs/development/core/server/kibana-plugin-core-server.cspconfig.warnlegacybrowsers.md deleted file mode 100644 index 70c93c57864b7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.cspconfig.warnlegacybrowsers.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CspConfig](./kibana-plugin-core-server.cspconfig.md) > [warnLegacyBrowsers](./kibana-plugin-core-server.cspconfig.warnlegacybrowsers.md) - -## CspConfig.warnLegacyBrowsers property - -Signature: - -```typescript -readonly warnLegacyBrowsers: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.body.md b/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.body.md deleted file mode 100644 index da37b33fe1bd0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.body.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CustomHttpResponseOptions](./kibana-plugin-core-server.customhttpresponseoptions.md) > [body](./kibana-plugin-core-server.customhttpresponseoptions.body.md) - -## CustomHttpResponseOptions.body property - -HTTP message to send to the client - -Signature: - -```typescript -body?: T; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.bypasserrorformat.md b/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.bypasserrorformat.md deleted file mode 100644 index bbd97ab517d29..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.bypasserrorformat.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CustomHttpResponseOptions](./kibana-plugin-core-server.customhttpresponseoptions.md) > [bypassErrorFormat](./kibana-plugin-core-server.customhttpresponseoptions.bypasserrorformat.md) - -## CustomHttpResponseOptions.bypassErrorFormat property - -Bypass the default error formatting - -Signature: - -```typescript -bypassErrorFormat?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.headers.md b/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.headers.md deleted file mode 100644 index f317037482575..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.headers.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CustomHttpResponseOptions](./kibana-plugin-core-server.customhttpresponseoptions.md) > [headers](./kibana-plugin-core-server.customhttpresponseoptions.headers.md) - -## CustomHttpResponseOptions.headers property - -HTTP Headers with additional information about response - -Signature: - -```typescript -headers?: ResponseHeaders; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.md b/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.md deleted file mode 100644 index 84cb55f5c1054..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CustomHttpResponseOptions](./kibana-plugin-core-server.customhttpresponseoptions.md) - -## CustomHttpResponseOptions interface - -HTTP response parameters for a response with adjustable status code. - -Signature: - -```typescript -export interface CustomHttpResponseOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [body?](./kibana-plugin-core-server.customhttpresponseoptions.body.md) | T | (Optional) HTTP message to send to the client | -| [bypassErrorFormat?](./kibana-plugin-core-server.customhttpresponseoptions.bypasserrorformat.md) | boolean | (Optional) Bypass the default error formatting | -| [headers?](./kibana-plugin-core-server.customhttpresponseoptions.headers.md) | ResponseHeaders | (Optional) HTTP Headers with additional information about response | -| [statusCode](./kibana-plugin-core-server.customhttpresponseoptions.statuscode.md) | number | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.statuscode.md b/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.statuscode.md deleted file mode 100644 index 67cadcb5545a9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.customhttpresponseoptions.statuscode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CustomHttpResponseOptions](./kibana-plugin-core-server.customhttpresponseoptions.md) > [statusCode](./kibana-plugin-core-server.customhttpresponseoptions.statuscode.md) - -## CustomHttpResponseOptions.statusCode property - -Signature: - -```typescript -statusCode: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.customrequesthandlercontext.md b/docs/development/core/server/kibana-plugin-core-server.customrequesthandlercontext.md deleted file mode 100644 index afaf8c278565a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.customrequesthandlercontext.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [CustomRequestHandlerContext](./kibana-plugin-core-server.customrequesthandlercontext.md) - -## CustomRequestHandlerContext type - - -Signature: - -```typescript -export declare type CustomRequestHandlerContext = RequestHandlerContext & { - [Key in keyof T]: T[Key] extends Promise ? T[Key] : Promise; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._id.md b/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._id.md deleted file mode 100644 index ccc6a76361f26..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeleteDocumentResponse](./kibana-plugin-core-server.deletedocumentresponse.md) > [\_id](./kibana-plugin-core-server.deletedocumentresponse._id.md) - -## DeleteDocumentResponse.\_id property - -Signature: - -```typescript -_id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._index.md b/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._index.md deleted file mode 100644 index a9a04bb2b2ed7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._index.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeleteDocumentResponse](./kibana-plugin-core-server.deletedocumentresponse.md) > [\_index](./kibana-plugin-core-server.deletedocumentresponse._index.md) - -## DeleteDocumentResponse.\_index property - -Signature: - -```typescript -_index: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._shards.md b/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._shards.md deleted file mode 100644 index e3d5e9208db0a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._shards.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeleteDocumentResponse](./kibana-plugin-core-server.deletedocumentresponse.md) > [\_shards](./kibana-plugin-core-server.deletedocumentresponse._shards.md) - -## DeleteDocumentResponse.\_shards property - -Signature: - -```typescript -_shards: ShardsResponse; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._type.md b/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._type.md deleted file mode 100644 index 690852e20a76e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeleteDocumentResponse](./kibana-plugin-core-server.deletedocumentresponse.md) > [\_type](./kibana-plugin-core-server.deletedocumentresponse._type.md) - -## DeleteDocumentResponse.\_type property - -Signature: - -```typescript -_type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._version.md b/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._version.md deleted file mode 100644 index acfe8ef55ae71..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse._version.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeleteDocumentResponse](./kibana-plugin-core-server.deletedocumentresponse.md) > [\_version](./kibana-plugin-core-server.deletedocumentresponse._version.md) - -## DeleteDocumentResponse.\_version property - -Signature: - -```typescript -_version: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.error.md b/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.error.md deleted file mode 100644 index aafe850188998..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.error.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeleteDocumentResponse](./kibana-plugin-core-server.deletedocumentresponse.md) > [error](./kibana-plugin-core-server.deletedocumentresponse.error.md) - -## DeleteDocumentResponse.error property - -Signature: - -```typescript -error?: { - type: string; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.found.md b/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.found.md deleted file mode 100644 index 00bc89bda66ed..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.found.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeleteDocumentResponse](./kibana-plugin-core-server.deletedocumentresponse.md) > [found](./kibana-plugin-core-server.deletedocumentresponse.found.md) - -## DeleteDocumentResponse.found property - -Signature: - -```typescript -found: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.md b/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.md deleted file mode 100644 index fe6712ea3b61c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeleteDocumentResponse](./kibana-plugin-core-server.deletedocumentresponse.md) - -## DeleteDocumentResponse interface - - -Signature: - -```typescript -export interface DeleteDocumentResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [\_id](./kibana-plugin-core-server.deletedocumentresponse._id.md) | string | | -| [\_index](./kibana-plugin-core-server.deletedocumentresponse._index.md) | string | | -| [\_shards](./kibana-plugin-core-server.deletedocumentresponse._shards.md) | ShardsResponse | | -| [\_type](./kibana-plugin-core-server.deletedocumentresponse._type.md) | string | | -| [\_version](./kibana-plugin-core-server.deletedocumentresponse._version.md) | number | | -| [error?](./kibana-plugin-core-server.deletedocumentresponse.error.md) | { type: string; } | (Optional) | -| [found](./kibana-plugin-core-server.deletedocumentresponse.found.md) | boolean | | -| [result](./kibana-plugin-core-server.deletedocumentresponse.result.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.result.md b/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.result.md deleted file mode 100644 index 88f7568d3d9bc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deletedocumentresponse.result.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeleteDocumentResponse](./kibana-plugin-core-server.deletedocumentresponse.md) > [result](./kibana-plugin-core-server.deletedocumentresponse.result.md) - -## DeleteDocumentResponse.result property - -Signature: - -```typescript -result: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationsclient.getalldeprecations.md b/docs/development/core/server/kibana-plugin-core-server.deprecationsclient.getalldeprecations.md deleted file mode 100644 index 90cd8daca24cd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationsclient.getalldeprecations.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationsClient](./kibana-plugin-core-server.deprecationsclient.md) > [getAllDeprecations](./kibana-plugin-core-server.deprecationsclient.getalldeprecations.md) - -## DeprecationsClient.getAllDeprecations property - -Signature: - -```typescript -getAllDeprecations: () => Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationsclient.md b/docs/development/core/server/kibana-plugin-core-server.deprecationsclient.md deleted file mode 100644 index 0e724e251b266..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationsclient.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationsClient](./kibana-plugin-core-server.deprecationsclient.md) - -## DeprecationsClient interface - -Server-side client that provides access to fetch all Kibana deprecations - -Signature: - -```typescript -export interface DeprecationsClient -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [getAllDeprecations](./kibana-plugin-core-server.deprecationsclient.getalldeprecations.md) | () => Promise<DomainDeprecationDetails\[\]> | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationsdetails.md b/docs/development/core/server/kibana-plugin-core-server.deprecationsdetails.md deleted file mode 100644 index d8ced1da62416..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationsdetails.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationsDetails](./kibana-plugin-core-server.deprecationsdetails.md) - -## DeprecationsDetails type - - -Signature: - -```typescript -export declare type DeprecationsDetails = ConfigDeprecationDetails | FeatureDeprecationDetails; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationsettings.doclinkskey.md b/docs/development/core/server/kibana-plugin-core-server.deprecationsettings.doclinkskey.md deleted file mode 100644 index 9ad751f8082be..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationsettings.doclinkskey.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationSettings](./kibana-plugin-core-server.deprecationsettings.md) > [docLinksKey](./kibana-plugin-core-server.deprecationsettings.doclinkskey.md) - -## DeprecationSettings.docLinksKey property - -Key to documentation links - -Signature: - -```typescript -docLinksKey: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationsettings.md b/docs/development/core/server/kibana-plugin-core-server.deprecationsettings.md deleted file mode 100644 index 917ca933d63a1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationsettings.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationSettings](./kibana-plugin-core-server.deprecationsettings.md) - -## DeprecationSettings interface - -UiSettings deprecation field options. - -Signature: - -```typescript -export interface DeprecationSettings -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [docLinksKey](./kibana-plugin-core-server.deprecationsettings.doclinkskey.md) | string | Key to documentation links | -| [message](./kibana-plugin-core-server.deprecationsettings.message.md) | string | Deprecation message | - diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationsettings.message.md b/docs/development/core/server/kibana-plugin-core-server.deprecationsettings.message.md deleted file mode 100644 index 238600aff4e55..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationsettings.message.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationSettings](./kibana-plugin-core-server.deprecationsettings.md) > [message](./kibana-plugin-core-server.deprecationsettings.message.md) - -## DeprecationSettings.message property - -Deprecation message - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationsservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.deprecationsservicesetup.md deleted file mode 100644 index 1fcefeea9b0ba..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationsservicesetup.md +++ /dev/null @@ -1,85 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationsServiceSetup](./kibana-plugin-core-server.deprecationsservicesetup.md) - -## DeprecationsServiceSetup interface - -The deprecations service provides a way for the Kibana platform to communicate deprecated features and configs with its users. These deprecations are only communicated if the deployment is using these features. Allowing for a user tailored experience for upgrading the stack version. - -The Deprecation service is consumed by the upgrade assistant to assist with the upgrade experience. - -If a deprecated feature can be resolved without manual user intervention. Using correctiveActions.api allows the Upgrade Assistant to use this api to correct the deprecation upon a user trigger. - -Signature: - -```typescript -export interface DeprecationsServiceSetup -``` - -## Example - - -```ts -import { DeprecationsDetails, GetDeprecationsContext, CoreSetup } from 'src/core/server'; -import { i18n } from '@kbn/i18n'; - -async function getDeprecations({ esClient, savedObjectsClient }: GetDeprecationsContext): Promise { - const deprecations: DeprecationsDetails[] = []; - const count = await getFooCount(savedObjectsClient); - if (count > 0) { - deprecations.push({ - title: i18n.translate('xpack.foo.deprecations.title', { - defaultMessage: `Foo's are deprecated` - }), - message: i18n.translate('xpack.foo.deprecations.message', { - defaultMessage: `You have {count} Foo's. Migrate your Foo's to a dashboard to continue using them.`, - values: { count }, - }), - documentationUrl: - 'https://www.elastic.co/guide/en/kibana/current/foo.html', - level: 'warning', - correctiveActions: { - manualSteps: [ - i18n.translate('xpack.foo.deprecations.manualStepOneMessage', { - defaultMessage: 'Navigate to the Kibana Dashboard and click "Create dashboard".', - }), - i18n.translate('xpack.foo.deprecations.manualStepTwoMessage', { - defaultMessage: 'Select Foo from the "New Visualization" window.', - }), - ], - api: { - path: '/internal/security/users/test_dashboard_user', - method: 'POST', - body: { - username: 'test_dashboard_user', - roles: [ - "machine_learning_user", - "enrich_user", - "kibana_admin" - ], - full_name: "Alison Goryachev", - email: "alisongoryachev@gmail.com", - metadata: {}, - enabled: true - } - }, - }, - }); - } - return deprecations; -} - - -export class Plugin() { - setup: (core: CoreSetup) => { - core.deprecations.registerDeprecations({ getDeprecations }); - } -} -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [registerDeprecations](./kibana-plugin-core-server.deprecationsservicesetup.registerdeprecations.md) | (deprecationContext: RegisterDeprecationsConfig) => void | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.deprecationsservicesetup.registerdeprecations.md b/docs/development/core/server/kibana-plugin-core-server.deprecationsservicesetup.registerdeprecations.md deleted file mode 100644 index 07c2a3ad0ce55..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.deprecationsservicesetup.registerdeprecations.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DeprecationsServiceSetup](./kibana-plugin-core-server.deprecationsservicesetup.md) > [registerDeprecations](./kibana-plugin-core-server.deprecationsservicesetup.registerdeprecations.md) - -## DeprecationsServiceSetup.registerDeprecations property - -Signature: - -```typescript -registerDeprecations: (deprecationContext: RegisterDeprecationsConfig) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.destructiveroutemethod.md b/docs/development/core/server/kibana-plugin-core-server.destructiveroutemethod.md deleted file mode 100644 index 2c112ac7f6217..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.destructiveroutemethod.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [DestructiveRouteMethod](./kibana-plugin-core-server.destructiveroutemethod.md) - -## DestructiveRouteMethod type - -Set of HTTP methods changing the state of the server. - -Signature: - -```typescript -export declare type DestructiveRouteMethod = 'post' | 'put' | 'delete' | 'patch'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchclient.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchclient.md deleted file mode 100644 index 1dfb1ab7a0b42..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchclient.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchClient](./kibana-plugin-core-server.elasticsearchclient.md) - -## ElasticsearchClient type - -Client used to query the elasticsearch cluster. - -Signature: - -```typescript -export declare type ElasticsearchClient = Omit; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchclientconfig.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchclientconfig.md deleted file mode 100644 index 2a8a99c17ad63..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchclientconfig.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchClientConfig](./kibana-plugin-core-server.elasticsearchclientconfig.md) - -## ElasticsearchClientConfig type - -Configuration options to be used to create a [cluster client](./kibana-plugin-core-server.iclusterclient.md) using the [createClient API](./kibana-plugin-core-server.elasticsearchservicestart.createclient.md) - -Signature: - -```typescript -export declare type ElasticsearchClientConfig = Pick & { - pingTimeout?: ElasticsearchConfig['pingTimeout'] | ClientOptions['pingTimeout']; - requestTimeout?: ElasticsearchConfig['requestTimeout'] | ClientOptions['requestTimeout']; - ssl?: Partial; - keepAlive?: boolean; - caFingerprint?: ClientOptions['caFingerprint']; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig._constructor_.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig._constructor_.md deleted file mode 100644 index a8d9f1183b3e5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig._constructor_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [(constructor)](./kibana-plugin-core-server.elasticsearchconfig._constructor_.md) - -## ElasticsearchConfig.(constructor) - -Constructs a new instance of the `ElasticsearchConfig` class - -Signature: - -```typescript -constructor(rawConfig: ElasticsearchConfigType); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| rawConfig | ElasticsearchConfigType | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.apiversion.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.apiversion.md deleted file mode 100644 index 06ca6a2b9a691..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.apiversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [apiVersion](./kibana-plugin-core-server.elasticsearchconfig.apiversion.md) - -## ElasticsearchConfig.apiVersion property - -Version of the Elasticsearch (6.7, 7.1 or `master`) client will be connecting to. - -Signature: - -```typescript -readonly apiVersion: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.compression.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.compression.md deleted file mode 100644 index 5bc85dfb05647..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.compression.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [compression](./kibana-plugin-core-server.elasticsearchconfig.compression.md) - -## ElasticsearchConfig.compression property - -Whether to use compression for communications with elasticsearch. - -Signature: - -```typescript -readonly compression: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.customheaders.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.customheaders.md deleted file mode 100644 index 93f94687956b9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.customheaders.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [customHeaders](./kibana-plugin-core-server.elasticsearchconfig.customheaders.md) - -## ElasticsearchConfig.customHeaders property - -Header names and values to send to Elasticsearch with every request. These headers cannot be overwritten by client-side headers and aren't affected by `requestHeadersWhitelist` configuration. - -Signature: - -```typescript -readonly customHeaders: ElasticsearchConfigType['customHeaders']; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.healthcheckdelay.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.healthcheckdelay.md deleted file mode 100644 index 904168a869d14..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.healthcheckdelay.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [healthCheckDelay](./kibana-plugin-core-server.elasticsearchconfig.healthcheckdelay.md) - -## ElasticsearchConfig.healthCheckDelay property - -The interval between health check requests Kibana sends to the Elasticsearch. - -Signature: - -```typescript -readonly healthCheckDelay: Duration; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.hosts.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.hosts.md deleted file mode 100644 index f702512287c1c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.hosts.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [hosts](./kibana-plugin-core-server.elasticsearchconfig.hosts.md) - -## ElasticsearchConfig.hosts property - -Hosts that the client will connect to. If sniffing is enabled, this list will be used as seeds to discover the rest of your cluster. - -Signature: - -```typescript -readonly hosts: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.ignoreversionmismatch.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.ignoreversionmismatch.md deleted file mode 100644 index 9d708f28a66c8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.ignoreversionmismatch.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [ignoreVersionMismatch](./kibana-plugin-core-server.elasticsearchconfig.ignoreversionmismatch.md) - -## ElasticsearchConfig.ignoreVersionMismatch property - -Whether to allow kibana to connect to a non-compatible elasticsearch node. - -Signature: - -```typescript -readonly ignoreVersionMismatch: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.maxsockets.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.maxsockets.md deleted file mode 100644 index 64403f0cad543..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.maxsockets.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [maxSockets](./kibana-plugin-core-server.elasticsearchconfig.maxsockets.md) - -## ElasticsearchConfig.maxSockets property - -The maximum number of sockets that can be used for communications with elasticsearch. - -Signature: - -```typescript -readonly maxSockets: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.md deleted file mode 100644 index 593836664d5bf..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.md +++ /dev/null @@ -1,43 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) - -## ElasticsearchConfig class - -Wrapper of config schema. - -Signature: - -```typescript -export declare class ElasticsearchConfig -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(rawConfig)](./kibana-plugin-core-server.elasticsearchconfig._constructor_.md) | | Constructs a new instance of the ElasticsearchConfig class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [apiVersion](./kibana-plugin-core-server.elasticsearchconfig.apiversion.md) | | string | Version of the Elasticsearch (6.7, 7.1 or master) client will be connecting to. | -| [compression](./kibana-plugin-core-server.elasticsearchconfig.compression.md) | | boolean | Whether to use compression for communications with elasticsearch. | -| [customHeaders](./kibana-plugin-core-server.elasticsearchconfig.customheaders.md) | | ElasticsearchConfigType\['customHeaders'\] | Header names and values to send to Elasticsearch with every request. These headers cannot be overwritten by client-side headers and aren't affected by requestHeadersWhitelist configuration. | -| [healthCheckDelay](./kibana-plugin-core-server.elasticsearchconfig.healthcheckdelay.md) | | Duration | The interval between health check requests Kibana sends to the Elasticsearch. | -| [hosts](./kibana-plugin-core-server.elasticsearchconfig.hosts.md) | | string\[\] | Hosts that the client will connect to. If sniffing is enabled, this list will be used as seeds to discover the rest of your cluster. | -| [ignoreVersionMismatch](./kibana-plugin-core-server.elasticsearchconfig.ignoreversionmismatch.md) | | boolean | Whether to allow kibana to connect to a non-compatible elasticsearch node. | -| [maxSockets](./kibana-plugin-core-server.elasticsearchconfig.maxsockets.md) | | number | The maximum number of sockets that can be used for communications with elasticsearch. | -| [password?](./kibana-plugin-core-server.elasticsearchconfig.password.md) | | string | (Optional) If Elasticsearch is protected with basic authentication, this setting provides the password that the Kibana server uses to perform its administrative functions. | -| [pingTimeout](./kibana-plugin-core-server.elasticsearchconfig.pingtimeout.md) | | Duration | Timeout after which PING HTTP request will be aborted and retried. | -| [requestHeadersWhitelist](./kibana-plugin-core-server.elasticsearchconfig.requestheaderswhitelist.md) | | string\[\] | List of Kibana client-side headers to send to Elasticsearch when request scoped cluster client is used. If this is an empty array then \*no\* client-side will be sent. | -| [requestTimeout](./kibana-plugin-core-server.elasticsearchconfig.requesttimeout.md) | | Duration | Timeout after which HTTP request will be aborted and retried. | -| [serviceAccountToken?](./kibana-plugin-core-server.elasticsearchconfig.serviceaccounttoken.md) | | string | (Optional) If Elasticsearch security features are enabled, this setting provides the service account token that the Kibana server users to perform its administrative functions.This is an alternative to specifying a username and password. | -| [shardTimeout](./kibana-plugin-core-server.elasticsearchconfig.shardtimeout.md) | | Duration | Timeout for Elasticsearch to wait for responses from shards. Set to 0 to disable. | -| [sniffInterval](./kibana-plugin-core-server.elasticsearchconfig.sniffinterval.md) | | false \| Duration | Interval to perform a sniff operation and make sure the list of nodes is complete. If false then sniffing is disabled. | -| [sniffOnConnectionFault](./kibana-plugin-core-server.elasticsearchconfig.sniffonconnectionfault.md) | | boolean | Specifies whether the client should immediately sniff for a more current list of nodes when a connection dies. | -| [sniffOnStart](./kibana-plugin-core-server.elasticsearchconfig.sniffonstart.md) | | boolean | Specifies whether the client should attempt to detect the rest of the cluster when it is first instantiated. | -| [ssl](./kibana-plugin-core-server.elasticsearchconfig.ssl.md) | | Pick<SslConfigSchema, Exclude<keyof SslConfigSchema, 'certificateAuthorities' \| 'keystore' \| 'truststore'>> & { certificateAuthorities?: string\[\]; } | Set of settings configure SSL connection between Kibana and Elasticsearch that are required when xpack.ssl.verification_mode in Elasticsearch is set to either certificate or full. | -| [username?](./kibana-plugin-core-server.elasticsearchconfig.username.md) | | string | (Optional) If Elasticsearch is protected with basic authentication, this setting provides the username that the Kibana server uses to perform its administrative functions. Cannot be used in conjunction with serviceAccountToken. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.password.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.password.md deleted file mode 100644 index 2f927b5bc7c76..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.password.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [password](./kibana-plugin-core-server.elasticsearchconfig.password.md) - -## ElasticsearchConfig.password property - -If Elasticsearch is protected with basic authentication, this setting provides the password that the Kibana server uses to perform its administrative functions. - -Signature: - -```typescript -readonly password?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.pingtimeout.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.pingtimeout.md deleted file mode 100644 index 07e37974219de..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.pingtimeout.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [pingTimeout](./kibana-plugin-core-server.elasticsearchconfig.pingtimeout.md) - -## ElasticsearchConfig.pingTimeout property - -Timeout after which PING HTTP request will be aborted and retried. - -Signature: - -```typescript -readonly pingTimeout: Duration; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.requestheaderswhitelist.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.requestheaderswhitelist.md deleted file mode 100644 index c19dcd3896366..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.requestheaderswhitelist.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [requestHeadersWhitelist](./kibana-plugin-core-server.elasticsearchconfig.requestheaderswhitelist.md) - -## ElasticsearchConfig.requestHeadersWhitelist property - -List of Kibana client-side headers to send to Elasticsearch when request scoped cluster client is used. If this is an empty array then \*no\* client-side will be sent. - -Signature: - -```typescript -readonly requestHeadersWhitelist: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.requesttimeout.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.requesttimeout.md deleted file mode 100644 index f43cfc754b1f6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.requesttimeout.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [requestTimeout](./kibana-plugin-core-server.elasticsearchconfig.requesttimeout.md) - -## ElasticsearchConfig.requestTimeout property - -Timeout after which HTTP request will be aborted and retried. - -Signature: - -```typescript -readonly requestTimeout: Duration; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.serviceaccounttoken.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.serviceaccounttoken.md deleted file mode 100644 index 5934e83de17a4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.serviceaccounttoken.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [serviceAccountToken](./kibana-plugin-core-server.elasticsearchconfig.serviceaccounttoken.md) - -## ElasticsearchConfig.serviceAccountToken property - -If Elasticsearch security features are enabled, this setting provides the service account token that the Kibana server users to perform its administrative functions. - -This is an alternative to specifying a username and password. - -Signature: - -```typescript -readonly serviceAccountToken?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.shardtimeout.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.shardtimeout.md deleted file mode 100644 index c29f00a074e3f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.shardtimeout.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [shardTimeout](./kibana-plugin-core-server.elasticsearchconfig.shardtimeout.md) - -## ElasticsearchConfig.shardTimeout property - -Timeout for Elasticsearch to wait for responses from shards. Set to 0 to disable. - -Signature: - -```typescript -readonly shardTimeout: Duration; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffinterval.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffinterval.md deleted file mode 100644 index 19f6968b13863..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffinterval.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [sniffInterval](./kibana-plugin-core-server.elasticsearchconfig.sniffinterval.md) - -## ElasticsearchConfig.sniffInterval property - -Interval to perform a sniff operation and make sure the list of nodes is complete. If `false` then sniffing is disabled. - -Signature: - -```typescript -readonly sniffInterval: false | Duration; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffonconnectionfault.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffonconnectionfault.md deleted file mode 100644 index a632b446a55fd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffonconnectionfault.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [sniffOnConnectionFault](./kibana-plugin-core-server.elasticsearchconfig.sniffonconnectionfault.md) - -## ElasticsearchConfig.sniffOnConnectionFault property - -Specifies whether the client should immediately sniff for a more current list of nodes when a connection dies. - -Signature: - -```typescript -readonly sniffOnConnectionFault: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffonstart.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffonstart.md deleted file mode 100644 index 09f3431c71880..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.sniffonstart.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [sniffOnStart](./kibana-plugin-core-server.elasticsearchconfig.sniffonstart.md) - -## ElasticsearchConfig.sniffOnStart property - -Specifies whether the client should attempt to detect the rest of the cluster when it is first instantiated. - -Signature: - -```typescript -readonly sniffOnStart: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.ssl.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.ssl.md deleted file mode 100644 index f88fc57339475..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.ssl.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [ssl](./kibana-plugin-core-server.elasticsearchconfig.ssl.md) - -## ElasticsearchConfig.ssl property - -Set of settings configure SSL connection between Kibana and Elasticsearch that are required when `xpack.ssl.verification_mode` in Elasticsearch is set to either `certificate` or `full`. - -Signature: - -```typescript -readonly ssl: Pick> & { - certificateAuthorities?: string[]; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.username.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.username.md deleted file mode 100644 index 959870ff43a0f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfig.username.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) > [username](./kibana-plugin-core-server.elasticsearchconfig.username.md) - -## ElasticsearchConfig.username property - -If Elasticsearch is protected with basic authentication, this setting provides the username that the Kibana server uses to perform its administrative functions. Cannot be used in conjunction with serviceAccountToken. - -Signature: - -```typescript -readonly username?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.credentialsspecified.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.credentialsspecified.md deleted file mode 100644 index df99d5ec4b831..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.credentialsspecified.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfigPreboot](./kibana-plugin-core-server.elasticsearchconfigpreboot.md) > [credentialsSpecified](./kibana-plugin-core-server.elasticsearchconfigpreboot.credentialsspecified.md) - -## ElasticsearchConfigPreboot.credentialsSpecified property - -Indicates whether Elasticsearch configuration includes credentials (`username`, `password` or `serviceAccountToken`). - -Signature: - -```typescript -readonly credentialsSpecified: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.hosts.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.hosts.md deleted file mode 100644 index e9ad47b61419e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.hosts.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfigPreboot](./kibana-plugin-core-server.elasticsearchconfigpreboot.md) > [hosts](./kibana-plugin-core-server.elasticsearchconfigpreboot.hosts.md) - -## ElasticsearchConfigPreboot.hosts property - -Hosts that the client will connect to. If sniffing is enabled, this list will be used as seeds to discover the rest of your cluster. - -Signature: - -```typescript -readonly hosts: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.md deleted file mode 100644 index d7d3e8d70e8d7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchconfigpreboot.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchConfigPreboot](./kibana-plugin-core-server.elasticsearchconfigpreboot.md) - -## ElasticsearchConfigPreboot interface - -A limited set of Elasticsearch configuration entries exposed to the `preboot` plugins at `setup`. - -Signature: - -```typescript -export interface ElasticsearchConfigPreboot -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [credentialsSpecified](./kibana-plugin-core-server.elasticsearchconfigpreboot.credentialsspecified.md) | boolean | Indicates whether Elasticsearch configuration includes credentials (username, password or serviceAccountToken). | -| [hosts](./kibana-plugin-core-server.elasticsearchconfigpreboot.hosts.md) | string\[\] | Hosts that the client will connect to. If sniffing is enabled, this list will be used as seeds to discover the rest of your cluster. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearcherrordetails.error.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearcherrordetails.error.md deleted file mode 100644 index 7191caea54929..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearcherrordetails.error.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchErrorDetails](./kibana-plugin-core-server.elasticsearcherrordetails.md) > [error](./kibana-plugin-core-server.elasticsearcherrordetails.error.md) - -## ElasticsearchErrorDetails.error property - -Signature: - -```typescript -error?: { - type: string; - reason?: string; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearcherrordetails.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearcherrordetails.md deleted file mode 100644 index 570a161db20e0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearcherrordetails.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchErrorDetails](./kibana-plugin-core-server.elasticsearcherrordetails.md) - -## ElasticsearchErrorDetails interface - - -Signature: - -```typescript -export interface ElasticsearchErrorDetails -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [error?](./kibana-plugin-core-server.elasticsearcherrordetails.error.md) | { type: string; reason?: string; } | (Optional) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.config.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.config.md deleted file mode 100644 index c4284248ea894..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.config.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServicePreboot](./kibana-plugin-core-server.elasticsearchservicepreboot.md) > [config](./kibana-plugin-core-server.elasticsearchservicepreboot.config.md) - -## ElasticsearchServicePreboot.config property - -A limited set of Elasticsearch configuration entries. - -Signature: - -```typescript -readonly config: Readonly; -``` - -## Example - - -```js -const { hosts, credentialsSpecified } = core.elasticsearch.config; -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.createclient.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.createclient.md deleted file mode 100644 index 070cb7905b585..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.createclient.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServicePreboot](./kibana-plugin-core-server.elasticsearchservicepreboot.md) > [createClient](./kibana-plugin-core-server.elasticsearchservicepreboot.createclient.md) - -## ElasticsearchServicePreboot.createClient property - -Create application specific Elasticsearch cluster API client with customized config. See [IClusterClient](./kibana-plugin-core-server.iclusterclient.md). - -Signature: - -```typescript -readonly createClient: (type: string, clientConfig?: Partial) => ICustomClusterClient; -``` - -## Example - - -```js -const client = elasticsearch.createClient('my-app-name', config); -const data = await client.asInternalUser.search(); -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.md deleted file mode 100644 index 14dc099d13835..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicepreboot.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServicePreboot](./kibana-plugin-core-server.elasticsearchservicepreboot.md) - -## ElasticsearchServicePreboot interface - - -Signature: - -```typescript -export interface ElasticsearchServicePreboot -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [config](./kibana-plugin-core-server.elasticsearchservicepreboot.config.md) | Readonly<ElasticsearchConfigPreboot> | A limited set of Elasticsearch configuration entries. | -| [createClient](./kibana-plugin-core-server.elasticsearchservicepreboot.createclient.md) | (type: string, clientConfig?: Partial<ElasticsearchClientConfig>) => ICustomClusterClient | Create application specific Elasticsearch cluster API client with customized config. See [IClusterClient](./kibana-plugin-core-server.iclusterclient.md). | - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.legacy.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.legacy.md deleted file mode 100644 index 03e2be0da7a10..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.legacy.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-core-server.elasticsearchservicesetup.md) > [legacy](./kibana-plugin-core-server.elasticsearchservicesetup.legacy.md) - -## ElasticsearchServiceSetup.legacy property - -> Warning: This API is now obsolete. -> -> - -Signature: - -```typescript -legacy: { - readonly config$: Observable; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md deleted file mode 100644 index f66333427a224..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-core-server.elasticsearchservicesetup.md) - -## ElasticsearchServiceSetup interface - - -Signature: - -```typescript -export interface ElasticsearchServiceSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [legacy](./kibana-plugin-core-server.elasticsearchservicesetup.legacy.md) | { readonly config$: Observable<ElasticsearchConfig>; } | | -| [setUnauthorizedErrorHandler](./kibana-plugin-core-server.elasticsearchservicesetup.setunauthorizederrorhandler.md) | (handler: UnauthorizedErrorHandler) => void | Register a handler that will be called when unauthorized (401) errors are returned from any API call to elasticsearch performed on behalf of a user via a [scoped cluster client](./kibana-plugin-core-server.iscopedclusterclient.md). | - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.setunauthorizederrorhandler.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.setunauthorizederrorhandler.md deleted file mode 100644 index ee403a800d934..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicesetup.setunauthorizederrorhandler.md +++ /dev/null @@ -1,35 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServiceSetup](./kibana-plugin-core-server.elasticsearchservicesetup.md) > [setUnauthorizedErrorHandler](./kibana-plugin-core-server.elasticsearchservicesetup.setunauthorizederrorhandler.md) - -## ElasticsearchServiceSetup.setUnauthorizedErrorHandler property - -Register a handler that will be called when unauthorized (401) errors are returned from any API call to elasticsearch performed on behalf of a user via a [scoped cluster client](./kibana-plugin-core-server.iscopedclusterclient.md). - -Signature: - -```typescript -setUnauthorizedErrorHandler: (handler: UnauthorizedErrorHandler) => void; -``` - -## Remarks - -The handler will only be invoked for scoped client bound to real [request](./kibana-plugin-core-server.kibanarequest.md) instances. - -## Example - - -```ts -const handler: UnauthorizedErrorHandler = ({ request, error }, toolkit) => { - const reauthenticationResult = await authenticator.reauthenticate(request, error); - if (reauthenticationResult.succeeded()) { - return toolkit.retry({ - authHeaders: reauthenticationResult.authHeaders, - }); - } - return toolkit.notHandled(); -} - -coreSetup.elasticsearch.setUnauthorizedErrorHandler(handler); -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.client.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.client.md deleted file mode 100644 index 59f302170c53a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.client.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServiceStart](./kibana-plugin-core-server.elasticsearchservicestart.md) > [client](./kibana-plugin-core-server.elasticsearchservicestart.client.md) - -## ElasticsearchServiceStart.client property - -A pre-configured [Elasticsearch client](./kibana-plugin-core-server.iclusterclient.md) - -Signature: - -```typescript -readonly client: IClusterClient; -``` - -## Example - - -```js -const client = core.elasticsearch.client; -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.createclient.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.createclient.md deleted file mode 100644 index 26930c6f02b32..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.createclient.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServiceStart](./kibana-plugin-core-server.elasticsearchservicestart.md) > [createClient](./kibana-plugin-core-server.elasticsearchservicestart.createclient.md) - -## ElasticsearchServiceStart.createClient property - -Create application specific Elasticsearch cluster API client with customized config. See [IClusterClient](./kibana-plugin-core-server.iclusterclient.md). - -Signature: - -```typescript -readonly createClient: (type: string, clientConfig?: Partial) => ICustomClusterClient; -``` - -## Example - - -```js -const client = elasticsearch.createClient('my-app-name', config); -const data = await client.asInternalUser.search(); -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.md deleted file mode 100644 index 66ff94ee9c80d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchservicestart.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchServiceStart](./kibana-plugin-core-server.elasticsearchservicestart.md) - -## ElasticsearchServiceStart interface - - -Signature: - -```typescript -export interface ElasticsearchServiceStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [client](./kibana-plugin-core-server.elasticsearchservicestart.client.md) | IClusterClient | A pre-configured [Elasticsearch client](./kibana-plugin-core-server.iclusterclient.md) | -| [createClient](./kibana-plugin-core-server.elasticsearchservicestart.createclient.md) | (type: string, clientConfig?: Partial<ElasticsearchClientConfig>) => ICustomClusterClient | Create application specific Elasticsearch cluster API client with customized config. See [IClusterClient](./kibana-plugin-core-server.iclusterclient.md). | - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.incompatiblenodes.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.incompatiblenodes.md deleted file mode 100644 index f8a45fe9a5a9c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.incompatiblenodes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchStatusMeta](./kibana-plugin-core-server.elasticsearchstatusmeta.md) > [incompatibleNodes](./kibana-plugin-core-server.elasticsearchstatusmeta.incompatiblenodes.md) - -## ElasticsearchStatusMeta.incompatibleNodes property - -Signature: - -```typescript -incompatibleNodes: NodesVersionCompatibility['incompatibleNodes']; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.md deleted file mode 100644 index 82748932c2102..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchStatusMeta](./kibana-plugin-core-server.elasticsearchstatusmeta.md) - -## ElasticsearchStatusMeta interface - - -Signature: - -```typescript -export interface ElasticsearchStatusMeta -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [incompatibleNodes](./kibana-plugin-core-server.elasticsearchstatusmeta.incompatiblenodes.md) | NodesVersionCompatibility\['incompatibleNodes'\] | | -| [nodesInfoRequestError?](./kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md) | NodesVersionCompatibility\['nodesInfoRequestError'\] | (Optional) | -| [warningNodes](./kibana-plugin-core-server.elasticsearchstatusmeta.warningnodes.md) | NodesVersionCompatibility\['warningNodes'\] | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md deleted file mode 100644 index 1b46078a1a453..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchStatusMeta](./kibana-plugin-core-server.elasticsearchstatusmeta.md) > [nodesInfoRequestError](./kibana-plugin-core-server.elasticsearchstatusmeta.nodesinforequesterror.md) - -## ElasticsearchStatusMeta.nodesInfoRequestError property - -Signature: - -```typescript -nodesInfoRequestError?: NodesVersionCompatibility['nodesInfoRequestError']; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.warningnodes.md b/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.warningnodes.md deleted file mode 100644 index 7374ccd9e7fa8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.elasticsearchstatusmeta.warningnodes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ElasticsearchStatusMeta](./kibana-plugin-core-server.elasticsearchstatusmeta.md) > [warningNodes](./kibana-plugin-core-server.elasticsearchstatusmeta.warningnodes.md) - -## ElasticsearchStatusMeta.warningNodes property - -Signature: - -```typescript -warningNodes: NodesVersionCompatibility['warningNodes']; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.body.md b/docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.body.md deleted file mode 100644 index 102e0c8f64b5a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.body.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ErrorHttpResponseOptions](./kibana-plugin-core-server.errorhttpresponseoptions.md) > [body](./kibana-plugin-core-server.errorhttpresponseoptions.body.md) - -## ErrorHttpResponseOptions.body property - -HTTP message to send to the client - -Signature: - -```typescript -body?: ResponseError; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.headers.md b/docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.headers.md deleted file mode 100644 index bbd91156347b5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.headers.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ErrorHttpResponseOptions](./kibana-plugin-core-server.errorhttpresponseoptions.md) > [headers](./kibana-plugin-core-server.errorhttpresponseoptions.headers.md) - -## ErrorHttpResponseOptions.headers property - -HTTP Headers with additional information about response - -Signature: - -```typescript -headers?: ResponseHeaders; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.md b/docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.md deleted file mode 100644 index 3a037e71ac1e2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.errorhttpresponseoptions.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ErrorHttpResponseOptions](./kibana-plugin-core-server.errorhttpresponseoptions.md) - -## ErrorHttpResponseOptions interface - -HTTP response parameters - -Signature: - -```typescript -export interface ErrorHttpResponseOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [body?](./kibana-plugin-core-server.errorhttpresponseoptions.body.md) | ResponseError | (Optional) HTTP message to send to the client | -| [headers?](./kibana-plugin-core-server.errorhttpresponseoptions.headers.md) | ResponseHeaders | (Optional) HTTP Headers with additional information about response | - diff --git a/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor._constructor_.md b/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor._constructor_.md deleted file mode 100644 index ae9df8b406be6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor._constructor_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [EventLoopDelaysMonitor](./kibana-plugin-core-server.eventloopdelaysmonitor.md) > [(constructor)](./kibana-plugin-core-server.eventloopdelaysmonitor._constructor_.md) - -## EventLoopDelaysMonitor.(constructor) - -Creating a new instance from EventLoopDelaysMonitor will automatically start tracking event loop delays. - -Signature: - -```typescript -constructor(); -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.collect.md b/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.collect.md deleted file mode 100644 index ff9c57787f71d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.collect.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [EventLoopDelaysMonitor](./kibana-plugin-core-server.eventloopdelaysmonitor.md) > [collect](./kibana-plugin-core-server.eventloopdelaysmonitor.collect.md) - -## EventLoopDelaysMonitor.collect() method - -Collect gathers event loop delays metrics from nodejs perf\_hooks.monitorEventLoopDelay the histogram calculations start from the last time `reset` was called or this EventLoopDelaysMonitor instance was created. - -Returns metrics in milliseconds. - -Signature: - -```typescript -collect(): IntervalHistogram; -``` -Returns: - -IntervalHistogram - -{IntervalHistogram} - diff --git a/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.md b/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.md deleted file mode 100644 index e5d35547d3bdb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [EventLoopDelaysMonitor](./kibana-plugin-core-server.eventloopdelaysmonitor.md) - -## EventLoopDelaysMonitor class - -Signature: - -```typescript -export declare class EventLoopDelaysMonitor -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)()](./kibana-plugin-core-server.eventloopdelaysmonitor._constructor_.md) | | Creating a new instance from EventLoopDelaysMonitor will automatically start tracking event loop delays. | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [collect()](./kibana-plugin-core-server.eventloopdelaysmonitor.collect.md) | | Collect gathers event loop delays metrics from nodejs perf\_hooks.monitorEventLoopDelay the histogram calculations start from the last time reset was called or this EventLoopDelaysMonitor instance was created.Returns metrics in milliseconds. | -| [reset()](./kibana-plugin-core-server.eventloopdelaysmonitor.reset.md) | | Resets the collected histogram data. | -| [stop()](./kibana-plugin-core-server.eventloopdelaysmonitor.stop.md) | | Disables updating the interval timer for collecting new data points. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.reset.md b/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.reset.md deleted file mode 100644 index a65cc7c99842d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.reset.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [EventLoopDelaysMonitor](./kibana-plugin-core-server.eventloopdelaysmonitor.md) > [reset](./kibana-plugin-core-server.eventloopdelaysmonitor.reset.md) - -## EventLoopDelaysMonitor.reset() method - -Resets the collected histogram data. - -Signature: - -```typescript -reset(): void; -``` -Returns: - -void - diff --git a/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.stop.md b/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.stop.md deleted file mode 100644 index d63c963b384e6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.eventloopdelaysmonitor.stop.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [EventLoopDelaysMonitor](./kibana-plugin-core-server.eventloopdelaysmonitor.md) > [stop](./kibana-plugin-core-server.eventloopdelaysmonitor.stop.md) - -## EventLoopDelaysMonitor.stop() method - -Disables updating the interval timer for collecting new data points. - -Signature: - -```typescript -stop(): void; -``` -Returns: - -void - diff --git a/docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.getaslabels.md b/docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.getaslabels.md deleted file mode 100644 index c8816a3deee4d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.getaslabels.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ExecutionContextSetup](./kibana-plugin-core-server.executioncontextsetup.md) > [getAsLabels](./kibana-plugin-core-server.executioncontextsetup.getaslabels.md) - -## ExecutionContextSetup.getAsLabels() method - -Signature: - -```typescript -getAsLabels(): apm.Labels; -``` -Returns: - -apm.Labels - diff --git a/docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.md b/docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.md deleted file mode 100644 index 7fdc4d1ec1d57..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ExecutionContextSetup](./kibana-plugin-core-server.executioncontextsetup.md) - -## ExecutionContextSetup interface - - -Signature: - -```typescript -export interface ExecutionContextSetup -``` - -## Methods - -| Method | Description | -| --- | --- | -| [getAsLabels()](./kibana-plugin-core-server.executioncontextsetup.getaslabels.md) | | -| [withContext(context, fn)](./kibana-plugin-core-server.executioncontextsetup.withcontext.md) | Keeps track of execution context while the passed function is executed. Data are carried over all async operations spawned by the passed function. The nested calls stack the registered context on top of each other. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.withcontext.md b/docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.withcontext.md deleted file mode 100644 index 2bfef6db2f907..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.executioncontextsetup.withcontext.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ExecutionContextSetup](./kibana-plugin-core-server.executioncontextsetup.md) > [withContext](./kibana-plugin-core-server.executioncontextsetup.withcontext.md) - -## ExecutionContextSetup.withContext() method - -Keeps track of execution context while the passed function is executed. Data are carried over all async operations spawned by the passed function. The nested calls stack the registered context on top of each other. - -Signature: - -```typescript -withContext(context: KibanaExecutionContext | undefined, fn: (...args: any[]) => R): R; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| context | KibanaExecutionContext \| undefined | | -| fn | (...args: any\[\]) => R | | - -Returns: - -R - diff --git a/docs/development/core/server/kibana-plugin-core-server.executioncontextstart.md b/docs/development/core/server/kibana-plugin-core-server.executioncontextstart.md deleted file mode 100644 index 115c09471b3f7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.executioncontextstart.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ExecutionContextStart](./kibana-plugin-core-server.executioncontextstart.md) - -## ExecutionContextStart type - - -Signature: - -```typescript -export declare type ExecutionContextStart = ExecutionContextSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.exposedtobrowserdescriptor.md b/docs/development/core/server/kibana-plugin-core-server.exposedtobrowserdescriptor.md deleted file mode 100644 index b2bb3f5928dcc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.exposedtobrowserdescriptor.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ExposedToBrowserDescriptor](./kibana-plugin-core-server.exposedtobrowserdescriptor.md) - -## ExposedToBrowserDescriptor type - -Type defining the list of configuration properties that will be exposed on the client-side Object properties can either be fully exposed - -Signature: - -```typescript -export declare type ExposedToBrowserDescriptor = { - [Key in keyof T]?: T[Key] extends Maybe ? boolean : T[Key] extends Maybe ? // can be nested for objects - ExposedToBrowserDescriptor | boolean : boolean; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.fakerequest.headers.md b/docs/development/core/server/kibana-plugin-core-server.fakerequest.headers.md deleted file mode 100644 index 55d1dc7edc05e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.fakerequest.headers.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [FakeRequest](./kibana-plugin-core-server.fakerequest.md) > [headers](./kibana-plugin-core-server.fakerequest.headers.md) - -## FakeRequest.headers property - -Headers used for authentication against Elasticsearch - -Signature: - -```typescript -headers: Headers; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.fakerequest.md b/docs/development/core/server/kibana-plugin-core-server.fakerequest.md deleted file mode 100644 index 6b8bfe33d19c4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.fakerequest.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [FakeRequest](./kibana-plugin-core-server.fakerequest.md) - -## FakeRequest interface - -Fake request object created manually by Kibana plugins. - -Signature: - -```typescript -export interface FakeRequest -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [headers](./kibana-plugin-core-server.fakerequest.headers.md) | Headers | Headers used for authentication against Elasticsearch | - diff --git a/docs/development/core/server/kibana-plugin-core-server.featuredeprecationdetails.deprecationtype.md b/docs/development/core/server/kibana-plugin-core-server.featuredeprecationdetails.deprecationtype.md deleted file mode 100644 index b530874d3678b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.featuredeprecationdetails.deprecationtype.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [FeatureDeprecationDetails](./kibana-plugin-core-server.featuredeprecationdetails.md) > [deprecationType](./kibana-plugin-core-server.featuredeprecationdetails.deprecationtype.md) - -## FeatureDeprecationDetails.deprecationType property - -Signature: - -```typescript -deprecationType?: 'feature' | undefined; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.featuredeprecationdetails.md b/docs/development/core/server/kibana-plugin-core-server.featuredeprecationdetails.md deleted file mode 100644 index c92f352ce7e5e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.featuredeprecationdetails.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [FeatureDeprecationDetails](./kibana-plugin-core-server.featuredeprecationdetails.md) - -## FeatureDeprecationDetails interface - - -Signature: - -```typescript -export interface FeatureDeprecationDetails extends BaseDeprecationDetails -``` -Extends: BaseDeprecationDetails - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [deprecationType?](./kibana-plugin-core-server.featuredeprecationdetails.deprecationtype.md) | 'feature' \| undefined | (Optional) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.getauthheaders.md b/docs/development/core/server/kibana-plugin-core-server.getauthheaders.md deleted file mode 100644 index 2f1502a5ea0ea..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getauthheaders.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetAuthHeaders](./kibana-plugin-core-server.getauthheaders.md) - -## GetAuthHeaders type - -Get headers to authenticate a user against Elasticsearch. - -Signature: - -```typescript -export declare type GetAuthHeaders = (request: KibanaRequest) => AuthHeaders | undefined; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getauthstate.md b/docs/development/core/server/kibana-plugin-core-server.getauthstate.md deleted file mode 100644 index 979a6b5b5792b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getauthstate.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetAuthState](./kibana-plugin-core-server.getauthstate.md) - -## GetAuthState type - -Gets authentication state for a request. Returned by `auth` interceptor. - -Signature: - -```typescript -export declare type GetAuthState = (request: KibanaRequest) => { - status: AuthStatus; - state: T; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.esclient.md b/docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.esclient.md deleted file mode 100644 index 70c1864bf905f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.esclient.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetDeprecationsContext](./kibana-plugin-core-server.getdeprecationscontext.md) > [esClient](./kibana-plugin-core-server.getdeprecationscontext.esclient.md) - -## GetDeprecationsContext.esClient property - -Signature: - -```typescript -esClient: IScopedClusterClient; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.md b/docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.md deleted file mode 100644 index 2362966866852..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetDeprecationsContext](./kibana-plugin-core-server.getdeprecationscontext.md) - -## GetDeprecationsContext interface - - -Signature: - -```typescript -export interface GetDeprecationsContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [esClient](./kibana-plugin-core-server.getdeprecationscontext.esclient.md) | IScopedClusterClient | | -| [savedObjectsClient](./kibana-plugin-core-server.getdeprecationscontext.savedobjectsclient.md) | SavedObjectsClientContract | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.savedobjectsclient.md b/docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.savedobjectsclient.md deleted file mode 100644 index 66da52d3b5824..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getdeprecationscontext.savedobjectsclient.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetDeprecationsContext](./kibana-plugin-core-server.getdeprecationscontext.md) > [savedObjectsClient](./kibana-plugin-core-server.getdeprecationscontext.savedobjectsclient.md) - -## GetDeprecationsContext.savedObjectsClient property - -Signature: - -```typescript -savedObjectsClient: SavedObjectsClientContract; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getresponse._id.md b/docs/development/core/server/kibana-plugin-core-server.getresponse._id.md deleted file mode 100644 index d31b61f3962c8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getresponse._id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetResponse](./kibana-plugin-core-server.getresponse.md) > [\_id](./kibana-plugin-core-server.getresponse._id.md) - -## GetResponse.\_id property - -Signature: - -```typescript -_id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getresponse._index.md b/docs/development/core/server/kibana-plugin-core-server.getresponse._index.md deleted file mode 100644 index 0353ec1a17b2c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getresponse._index.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetResponse](./kibana-plugin-core-server.getresponse.md) > [\_index](./kibana-plugin-core-server.getresponse._index.md) - -## GetResponse.\_index property - -Signature: - -```typescript -_index: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getresponse._primary_term.md b/docs/development/core/server/kibana-plugin-core-server.getresponse._primary_term.md deleted file mode 100644 index 8412302ab727d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getresponse._primary_term.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetResponse](./kibana-plugin-core-server.getresponse.md) > [\_primary\_term](./kibana-plugin-core-server.getresponse._primary_term.md) - -## GetResponse.\_primary\_term property - -Signature: - -```typescript -_primary_term: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getresponse._routing.md b/docs/development/core/server/kibana-plugin-core-server.getresponse._routing.md deleted file mode 100644 index 1af3ed31ee112..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getresponse._routing.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetResponse](./kibana-plugin-core-server.getresponse.md) > [\_routing](./kibana-plugin-core-server.getresponse._routing.md) - -## GetResponse.\_routing property - -Signature: - -```typescript -_routing?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getresponse._seq_no.md b/docs/development/core/server/kibana-plugin-core-server.getresponse._seq_no.md deleted file mode 100644 index e8d72563f8149..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getresponse._seq_no.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetResponse](./kibana-plugin-core-server.getresponse.md) > [\_seq\_no](./kibana-plugin-core-server.getresponse._seq_no.md) - -## GetResponse.\_seq\_no property - -Signature: - -```typescript -_seq_no: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getresponse._source.md b/docs/development/core/server/kibana-plugin-core-server.getresponse._source.md deleted file mode 100644 index 97aacb42992a3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getresponse._source.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetResponse](./kibana-plugin-core-server.getresponse.md) > [\_source](./kibana-plugin-core-server.getresponse._source.md) - -## GetResponse.\_source property - -Signature: - -```typescript -_source: T; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getresponse._type.md b/docs/development/core/server/kibana-plugin-core-server.getresponse._type.md deleted file mode 100644 index b3205e2fe91d7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getresponse._type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetResponse](./kibana-plugin-core-server.getresponse.md) > [\_type](./kibana-plugin-core-server.getresponse._type.md) - -## GetResponse.\_type property - -Signature: - -```typescript -_type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getresponse._version.md b/docs/development/core/server/kibana-plugin-core-server.getresponse._version.md deleted file mode 100644 index 23d3a8c91f4a2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getresponse._version.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetResponse](./kibana-plugin-core-server.getresponse.md) > [\_version](./kibana-plugin-core-server.getresponse._version.md) - -## GetResponse.\_version property - -Signature: - -```typescript -_version: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getresponse.found.md b/docs/development/core/server/kibana-plugin-core-server.getresponse.found.md deleted file mode 100644 index 8d34a3e743cca..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getresponse.found.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetResponse](./kibana-plugin-core-server.getresponse.md) > [found](./kibana-plugin-core-server.getresponse.found.md) - -## GetResponse.found property - -Signature: - -```typescript -found: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.getresponse.md b/docs/development/core/server/kibana-plugin-core-server.getresponse.md deleted file mode 100644 index 5068be8a5689a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.getresponse.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [GetResponse](./kibana-plugin-core-server.getresponse.md) - -## GetResponse interface - - -Signature: - -```typescript -export interface GetResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [\_id](./kibana-plugin-core-server.getresponse._id.md) | string | | -| [\_index](./kibana-plugin-core-server.getresponse._index.md) | string | | -| [\_primary\_term](./kibana-plugin-core-server.getresponse._primary_term.md) | number | | -| [\_routing?](./kibana-plugin-core-server.getresponse._routing.md) | string | (Optional) | -| [\_seq\_no](./kibana-plugin-core-server.getresponse._seq_no.md) | number | | -| [\_source](./kibana-plugin-core-server.getresponse._source.md) | T | | -| [\_type](./kibana-plugin-core-server.getresponse._type.md) | string | | -| [\_version](./kibana-plugin-core-server.getresponse._version.md) | number | | -| [found](./kibana-plugin-core-server.getresponse.found.md) | boolean | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.handlercontexttype.md b/docs/development/core/server/kibana-plugin-core-server.handlercontexttype.md deleted file mode 100644 index 6fef414209d71..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.handlercontexttype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HandlerContextType](./kibana-plugin-core-server.handlercontexttype.md) - -## HandlerContextType type - -Extracts the type of the first argument of a [HandlerFunction](./kibana-plugin-core-server.handlerfunction.md) to represent the type of the context. - -Signature: - -```typescript -export declare type HandlerContextType> = T extends HandlerFunction ? U : never; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.handlerfunction.md b/docs/development/core/server/kibana-plugin-core-server.handlerfunction.md deleted file mode 100644 index 2b41e5a978be2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.handlerfunction.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HandlerFunction](./kibana-plugin-core-server.handlerfunction.md) - -## HandlerFunction type - -A function that accepts a context object and an optional number of additional arguments. Used for the generic types in [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) - -Signature: - -```typescript -export declare type HandlerFunction = (context: T, ...args: any[]) => any; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.handlerparameters.md b/docs/development/core/server/kibana-plugin-core-server.handlerparameters.md deleted file mode 100644 index 3e5a2f24eddc7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.handlerparameters.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HandlerParameters](./kibana-plugin-core-server.handlerparameters.md) - -## HandlerParameters type - -Extracts the types of the additional arguments of a [HandlerFunction](./kibana-plugin-core-server.handlerfunction.md), excluding the [HandlerContextType](./kibana-plugin-core-server.handlercontexttype.md). - -Signature: - -```typescript -export declare type HandlerParameters> = T extends (context: any, ...args: infer U) => any ? U : never; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.headers_2.md b/docs/development/core/server/kibana-plugin-core-server.headers_2.md deleted file mode 100644 index 398827f2bf3d1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.headers_2.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [Headers\_2](./kibana-plugin-core-server.headers_2.md) - -## Headers\_2 type - -Http request headers to read. - -Signature: - -```typescript -export declare type Headers = { - [header in KnownHeaders]?: string | string[] | undefined; -} & { - [header: string]: string | string[] | undefined; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpauth.get.md b/docs/development/core/server/kibana-plugin-core-server.httpauth.get.md deleted file mode 100644 index 4ea67cf895a27..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpauth.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpAuth](./kibana-plugin-core-server.httpauth.md) > [get](./kibana-plugin-core-server.httpauth.get.md) - -## HttpAuth.get property - -Gets authentication state for a request. Returned by `auth` interceptor. [GetAuthState](./kibana-plugin-core-server.getauthstate.md) - -Signature: - -```typescript -get: GetAuthState; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpauth.isauthenticated.md b/docs/development/core/server/kibana-plugin-core-server.httpauth.isauthenticated.md deleted file mode 100644 index 54db6bce5f161..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpauth.isauthenticated.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpAuth](./kibana-plugin-core-server.httpauth.md) > [isAuthenticated](./kibana-plugin-core-server.httpauth.isauthenticated.md) - -## HttpAuth.isAuthenticated property - -Returns authentication status for a request. [IsAuthenticated](./kibana-plugin-core-server.isauthenticated.md) - -Signature: - -```typescript -isAuthenticated: IsAuthenticated; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpauth.md b/docs/development/core/server/kibana-plugin-core-server.httpauth.md deleted file mode 100644 index 4b47be615c79c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpauth.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpAuth](./kibana-plugin-core-server.httpauth.md) - -## HttpAuth interface - - -Signature: - -```typescript -export interface HttpAuth -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [get](./kibana-plugin-core-server.httpauth.get.md) | GetAuthState | Gets authentication state for a request. Returned by auth interceptor. [GetAuthState](./kibana-plugin-core-server.getauthstate.md) | -| [isAuthenticated](./kibana-plugin-core-server.httpauth.isauthenticated.md) | IsAuthenticated | Returns authentication status for a request. [IsAuthenticated](./kibana-plugin-core-server.isauthenticated.md) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresources.md b/docs/development/core/server/kibana-plugin-core-server.httpresources.md deleted file mode 100644 index 0b1854d7cbcd9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresources.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResources](./kibana-plugin-core-server.httpresources.md) - -## HttpResources interface - -HttpResources service is responsible for serving static & dynamic assets for Kibana application via HTTP. Provides API allowing plug-ins to respond with: - a pre-configured HTML page bootstrapping Kibana client app - custom HTML page - custom JS script file. - -Signature: - -```typescript -export interface HttpResources -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [register](./kibana-plugin-core-server.httpresources.register.md) | <P, Q, B, Context extends RequestHandlerContext = RequestHandlerContext>(route: RouteConfig<P, Q, B, 'get'>, handler: HttpResourcesRequestHandler<P, Q, B, Context>) => void | To register a route handler executing passed function to form response. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresources.register.md b/docs/development/core/server/kibana-plugin-core-server.httpresources.register.md deleted file mode 100644 index ee9569aeb37b4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresources.register.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResources](./kibana-plugin-core-server.httpresources.md) > [register](./kibana-plugin-core-server.httpresources.register.md) - -## HttpResources.register property - -To register a route handler executing passed function to form response. - -Signature: - -```typescript -register: (route: RouteConfig, handler: HttpResourcesRequestHandler) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresourcesrenderoptions.headers.md b/docs/development/core/server/kibana-plugin-core-server.httpresourcesrenderoptions.headers.md deleted file mode 100644 index bb6dec504ff42..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresourcesrenderoptions.headers.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResourcesRenderOptions](./kibana-plugin-core-server.httpresourcesrenderoptions.md) > [headers](./kibana-plugin-core-server.httpresourcesrenderoptions.headers.md) - -## HttpResourcesRenderOptions.headers property - -HTTP Headers with additional information about response. - -Signature: - -```typescript -headers?: ResponseHeaders; -``` - -## Remarks - -All HTML pages are already pre-configured with `content-security-policy` header that cannot be overridden. - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresourcesrenderoptions.md b/docs/development/core/server/kibana-plugin-core-server.httpresourcesrenderoptions.md deleted file mode 100644 index 9fcdc1b338783..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresourcesrenderoptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResourcesRenderOptions](./kibana-plugin-core-server.httpresourcesrenderoptions.md) - -## HttpResourcesRenderOptions interface - -Allows to configure HTTP response parameters - -Signature: - -```typescript -export interface HttpResourcesRenderOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [headers?](./kibana-plugin-core-server.httpresourcesrenderoptions.headers.md) | ResponseHeaders | (Optional) HTTP Headers with additional information about response. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresourcesrequesthandler.md b/docs/development/core/server/kibana-plugin-core-server.httpresourcesrequesthandler.md deleted file mode 100644 index 49854ac003860..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresourcesrequesthandler.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResourcesRequestHandler](./kibana-plugin-core-server.httpresourcesrequesthandler.md) - -## HttpResourcesRequestHandler type - -Extended version of [RequestHandler](./kibana-plugin-core-server.requesthandler.md) having access to [HttpResourcesServiceToolkit](./kibana-plugin-core-server.httpresourcesservicetoolkit.md) to respond with HTML or JS resources. - -Signature: - -```typescript -export declare type HttpResourcesRequestHandler

= RequestHandler; -``` - -## Example - -\`\`\`typescript httpResources.register({ path: '/login', validate: { params: schema.object({ id: schema.string() }), }, }, async (context, request, response) => { //.. return response.renderCoreApp(); }); - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresourcesresponseoptions.md b/docs/development/core/server/kibana-plugin-core-server.httpresourcesresponseoptions.md deleted file mode 100644 index 2ea3ea7e58c78..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresourcesresponseoptions.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResourcesResponseOptions](./kibana-plugin-core-server.httpresourcesresponseoptions.md) - -## HttpResourcesResponseOptions type - -HTTP Resources response parameters - -Signature: - -```typescript -export declare type HttpResourcesResponseOptions = HttpResponseOptions; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.md b/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.md deleted file mode 100644 index 05e7af5dcbedf..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResourcesServiceToolkit](./kibana-plugin-core-server.httpresourcesservicetoolkit.md) - -## HttpResourcesServiceToolkit interface - -Extended set of [KibanaResponseFactory](./kibana-plugin-core-server.kibanaresponsefactory.md) helpers used to respond with HTML or JS resource. - -Signature: - -```typescript -export interface HttpResourcesServiceToolkit -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [renderAnonymousCoreApp](./kibana-plugin-core-server.httpresourcesservicetoolkit.renderanonymouscoreapp.md) | (options?: HttpResourcesRenderOptions) => Promise<IKibanaResponse> | To respond with HTML page bootstrapping Kibana application without retrieving user-specific information. | -| [renderCoreApp](./kibana-plugin-core-server.httpresourcesservicetoolkit.rendercoreapp.md) | (options?: HttpResourcesRenderOptions) => Promise<IKibanaResponse> | To respond with HTML page bootstrapping Kibana application. | -| [renderHtml](./kibana-plugin-core-server.httpresourcesservicetoolkit.renderhtml.md) | (options: HttpResourcesResponseOptions) => IKibanaResponse | To respond with a custom HTML page. | -| [renderJs](./kibana-plugin-core-server.httpresourcesservicetoolkit.renderjs.md) | (options: HttpResourcesResponseOptions) => IKibanaResponse | To respond with a custom JS script file. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderanonymouscoreapp.md b/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderanonymouscoreapp.md deleted file mode 100644 index 3dce9d88c8036..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderanonymouscoreapp.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResourcesServiceToolkit](./kibana-plugin-core-server.httpresourcesservicetoolkit.md) > [renderAnonymousCoreApp](./kibana-plugin-core-server.httpresourcesservicetoolkit.renderanonymouscoreapp.md) - -## HttpResourcesServiceToolkit.renderAnonymousCoreApp property - -To respond with HTML page bootstrapping Kibana application without retrieving user-specific information. - -Signature: - -```typescript -renderAnonymousCoreApp: (options?: HttpResourcesRenderOptions) => Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.rendercoreapp.md b/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.rendercoreapp.md deleted file mode 100644 index eb4f095bc19be..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.rendercoreapp.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResourcesServiceToolkit](./kibana-plugin-core-server.httpresourcesservicetoolkit.md) > [renderCoreApp](./kibana-plugin-core-server.httpresourcesservicetoolkit.rendercoreapp.md) - -## HttpResourcesServiceToolkit.renderCoreApp property - -To respond with HTML page bootstrapping Kibana application. - -Signature: - -```typescript -renderCoreApp: (options?: HttpResourcesRenderOptions) => Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderhtml.md b/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderhtml.md deleted file mode 100644 index 325d19625df44..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderhtml.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResourcesServiceToolkit](./kibana-plugin-core-server.httpresourcesservicetoolkit.md) > [renderHtml](./kibana-plugin-core-server.httpresourcesservicetoolkit.renderhtml.md) - -## HttpResourcesServiceToolkit.renderHtml property - -To respond with a custom HTML page. - -Signature: - -```typescript -renderHtml: (options: HttpResourcesResponseOptions) => IKibanaResponse; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderjs.md b/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderjs.md deleted file mode 100644 index f8d4418fc6cba..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresourcesservicetoolkit.renderjs.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResourcesServiceToolkit](./kibana-plugin-core-server.httpresourcesservicetoolkit.md) > [renderJs](./kibana-plugin-core-server.httpresourcesservicetoolkit.renderjs.md) - -## HttpResourcesServiceToolkit.renderJs property - -To respond with a custom JS script file. - -Signature: - -```typescript -renderJs: (options: HttpResourcesResponseOptions) => IKibanaResponse; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.body.md b/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.body.md deleted file mode 100644 index bf61be9d7e606..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.body.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResponseOptions](./kibana-plugin-core-server.httpresponseoptions.md) > [body](./kibana-plugin-core-server.httpresponseoptions.body.md) - -## HttpResponseOptions.body property - -HTTP message to send to the client - -Signature: - -```typescript -body?: HttpResponsePayload; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.bypasserrorformat.md b/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.bypasserrorformat.md deleted file mode 100644 index 98792c47d564f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.bypasserrorformat.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResponseOptions](./kibana-plugin-core-server.httpresponseoptions.md) > [bypassErrorFormat](./kibana-plugin-core-server.httpresponseoptions.bypasserrorformat.md) - -## HttpResponseOptions.bypassErrorFormat property - -Bypass the default error formatting - -Signature: - -```typescript -bypassErrorFormat?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.headers.md b/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.headers.md deleted file mode 100644 index 7702c49d07c8b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.headers.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResponseOptions](./kibana-plugin-core-server.httpresponseoptions.md) > [headers](./kibana-plugin-core-server.httpresponseoptions.headers.md) - -## HttpResponseOptions.headers property - -HTTP Headers with additional information about response - -Signature: - -```typescript -headers?: ResponseHeaders; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.md b/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.md deleted file mode 100644 index 9d10d91244157..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresponseoptions.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResponseOptions](./kibana-plugin-core-server.httpresponseoptions.md) - -## HttpResponseOptions interface - -HTTP response parameters - -Signature: - -```typescript -export interface HttpResponseOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [body?](./kibana-plugin-core-server.httpresponseoptions.body.md) | HttpResponsePayload | (Optional) HTTP message to send to the client | -| [bypassErrorFormat?](./kibana-plugin-core-server.httpresponseoptions.bypasserrorformat.md) | boolean | (Optional) Bypass the default error formatting | -| [headers?](./kibana-plugin-core-server.httpresponseoptions.headers.md) | ResponseHeaders | (Optional) HTTP Headers with additional information about response | - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpresponsepayload.md b/docs/development/core/server/kibana-plugin-core-server.httpresponsepayload.md deleted file mode 100644 index 8f72dc4daa8a4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpresponsepayload.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpResponsePayload](./kibana-plugin-core-server.httpresponsepayload.md) - -## HttpResponsePayload type - -Data send to the client as a response payload. - -Signature: - -```typescript -export declare type HttpResponsePayload = undefined | string | Record | Buffer | Stream; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.hostname.md b/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.hostname.md deleted file mode 100644 index 194a8aea16269..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.hostname.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServerInfo](./kibana-plugin-core-server.httpserverinfo.md) > [hostname](./kibana-plugin-core-server.httpserverinfo.hostname.md) - -## HttpServerInfo.hostname property - -The hostname of the server - -Signature: - -```typescript -hostname: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.md b/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.md deleted file mode 100644 index 151cb5d272403..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServerInfo](./kibana-plugin-core-server.httpserverinfo.md) - -## HttpServerInfo interface - -Information about what hostname, port, and protocol the server process is running on. Note that this may not match the URL that end-users access Kibana at. For the public URL, see [BasePath.publicBaseUrl](./kibana-plugin-core-server.basepath.publicbaseurl.md). - -Signature: - -```typescript -export interface HttpServerInfo -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [hostname](./kibana-plugin-core-server.httpserverinfo.hostname.md) | string | The hostname of the server | -| [name](./kibana-plugin-core-server.httpserverinfo.name.md) | string | The name of the Kibana server | -| [port](./kibana-plugin-core-server.httpserverinfo.port.md) | number | The port the server is listening on | -| [protocol](./kibana-plugin-core-server.httpserverinfo.protocol.md) | 'http' \| 'https' \| 'socket' | The protocol used by the server | - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.name.md b/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.name.md deleted file mode 100644 index c35ed626f12c9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServerInfo](./kibana-plugin-core-server.httpserverinfo.md) > [name](./kibana-plugin-core-server.httpserverinfo.name.md) - -## HttpServerInfo.name property - -The name of the Kibana server - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.port.md b/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.port.md deleted file mode 100644 index e8ad0e8186fea..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.port.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServerInfo](./kibana-plugin-core-server.httpserverinfo.md) > [port](./kibana-plugin-core-server.httpserverinfo.port.md) - -## HttpServerInfo.port property - -The port the server is listening on - -Signature: - -```typescript -port: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.protocol.md b/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.protocol.md deleted file mode 100644 index 9e7c672c2361f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpserverinfo.protocol.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServerInfo](./kibana-plugin-core-server.httpserverinfo.md) > [protocol](./kibana-plugin-core-server.httpserverinfo.protocol.md) - -## HttpServerInfo.protocol property - -The protocol used by the server - -Signature: - -```typescript -protocol: 'http' | 'https' | 'socket'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.basepath.md b/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.basepath.md deleted file mode 100644 index 9864f67d70a43..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.basepath.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServicePreboot](./kibana-plugin-core-server.httpservicepreboot.md) > [basePath](./kibana-plugin-core-server.httpservicepreboot.basepath.md) - -## HttpServicePreboot.basePath property - -Access or manipulate the Kibana base path See [IBasePath](./kibana-plugin-core-server.ibasepath.md). - -Signature: - -```typescript -basePath: IBasePath; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.getserverinfo.md b/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.getserverinfo.md deleted file mode 100644 index 0c9636b8eb634..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.getserverinfo.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServicePreboot](./kibana-plugin-core-server.httpservicepreboot.md) > [getServerInfo](./kibana-plugin-core-server.httpservicepreboot.getserverinfo.md) - -## HttpServicePreboot.getServerInfo property - -Provides common [information](./kibana-plugin-core-server.httpserverinfo.md) about the running preboot http server. - -Signature: - -```typescript -getServerInfo: () => HttpServerInfo; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.md b/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.md deleted file mode 100644 index 87c62b63014e1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.md +++ /dev/null @@ -1,80 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServicePreboot](./kibana-plugin-core-server.httpservicepreboot.md) - -## HttpServicePreboot interface - -Kibana HTTP Service provides an abstraction to work with the HTTP stack at the `preboot` stage. This functionality allows Kibana to serve user requests even before Kibana becomes fully operational. Only Core and `preboot` plugins can define HTTP routes at this stage. - -Signature: - -```typescript -export interface HttpServicePreboot -``` - -## Example - -To handle an incoming request in your preboot plugin you should: - Use `@kbn/config-schema` package to create a schema to validate the request `params`, `query`, and `body`. Every incoming request will be validated against the created schema. If validation failed, the request is rejected with `400` status and `Bad request` error without calling the route's handler. To opt out of validating the request, specify `false`. - -```ts -import { schema, TypeOf } from '@kbn/config-schema'; -const validate = { - params: schema.object({ - id: schema.string(), - }), -}; -``` -- Declare a function to respond to incoming request. The function will receive `request` object containing request details: url, headers, matched route, as well as validated `params`, `query`, `body`. And `response` object instructing HTTP server to create HTTP response with information sent back to the client as the response body, headers, and HTTP status. Any exception raised during the handler call will generate `500 Server error` response and log error details for further investigation. See below for returning custom error responses. - -```ts -const handler = async (context: RequestHandlerContext, request: KibanaRequest, response: ResponseFactory) => { - const data = await findObject(request.params.id); - // creates a command to respond with 'not found' error - if (!data) { - return response.notFound(); - } - // creates a command to send found data to the client and set response headers - return response.ok({ - body: data, - headers: { 'content-type': 'application/json' } - }); -} -``` -\* - Acquire `preboot` [IRouter](./kibana-plugin-core-server.irouter.md) instance and register route handler for GET request to 'path/{id}' path. - -```ts -import { schema, TypeOf } from '@kbn/config-schema'; - -const validate = { - params: schema.object({ - id: schema.string(), - }), -}; - -httpPreboot.registerRoutes('my-plugin', (router) => { - router.get({ path: 'path/{id}', validate }, async (context, request, response) => { - const data = await findObject(request.params.id); - if (!data) { - return response.notFound(); - } - return response.ok({ - body: data, - headers: { 'content-type': 'application/json' } - }); - }); -}); -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [basePath](./kibana-plugin-core-server.httpservicepreboot.basepath.md) | IBasePath | Access or manipulate the Kibana base path See [IBasePath](./kibana-plugin-core-server.ibasepath.md). | -| [getServerInfo](./kibana-plugin-core-server.httpservicepreboot.getserverinfo.md) | () => HttpServerInfo | Provides common [information](./kibana-plugin-core-server.httpserverinfo.md) about the running preboot http server. | - -## Methods - -| Method | Description | -| --- | --- | -| [registerRoutes(path, callback)](./kibana-plugin-core-server.httpservicepreboot.registerroutes.md) | Provides ability to acquire preboot [IRouter](./kibana-plugin-core-server.irouter.md) instance for a particular top-level path and register handler functions for any number of nested routes. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.registerroutes.md b/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.registerroutes.md deleted file mode 100644 index dd90074fad39a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicepreboot.registerroutes.md +++ /dev/null @@ -1,39 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServicePreboot](./kibana-plugin-core-server.httpservicepreboot.md) > [registerRoutes](./kibana-plugin-core-server.httpservicepreboot.registerroutes.md) - -## HttpServicePreboot.registerRoutes() method - -Provides ability to acquire `preboot` [IRouter](./kibana-plugin-core-server.irouter.md) instance for a particular top-level path and register handler functions for any number of nested routes. - -Signature: - -```typescript -registerRoutes(path: string, callback: (router: IRouter) => void): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| path | string | | -| callback | (router: IRouter) => void | | - -Returns: - -void - -## Remarks - -Each route can have only one handler function, which is executed when the route is matched. See the [IRouter](./kibana-plugin-core-server.irouter.md) documentation for more information. - -## Example - - -```ts -registerRoutes('my-plugin', (router) => { - // handler is called when '/my-plugin/path' resource is requested with `GET` method - router.get({ path: '/path', validate: false }, (context, req, res) => res.ok({ content: 'ok' })); -}); -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.basepath.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.basepath.md deleted file mode 100644 index ba10af1b8555a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.basepath.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) > [basePath](./kibana-plugin-core-server.httpservicesetup.basepath.md) - -## HttpServiceSetup.basePath property - -Access or manipulate the Kibana base path See [IBasePath](./kibana-plugin-core-server.ibasepath.md). - -Signature: - -```typescript -basePath: IBasePath; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.createcookiesessionstoragefactory.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.createcookiesessionstoragefactory.md deleted file mode 100644 index bdc0acf1c4864..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.createcookiesessionstoragefactory.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) > [createCookieSessionStorageFactory](./kibana-plugin-core-server.httpservicesetup.createcookiesessionstoragefactory.md) - -## HttpServiceSetup.createCookieSessionStorageFactory property - -Creates cookie based session storage factory [SessionStorageFactory](./kibana-plugin-core-server.sessionstoragefactory.md) - -Signature: - -```typescript -createCookieSessionStorageFactory: (cookieOptions: SessionStorageCookieOptions) => Promise>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.createrouter.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.createrouter.md deleted file mode 100644 index 7bdc7cd2e4e33..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.createrouter.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) > [createRouter](./kibana-plugin-core-server.httpservicesetup.createrouter.md) - -## HttpServiceSetup.createRouter property - -Provides ability to declare a handler function for a particular path and HTTP request method. - -Signature: - -```typescript -createRouter: () => IRouter; -``` - -## Remarks - -Each route can have only one handler function, which is executed when the route is matched. See the [IRouter](./kibana-plugin-core-server.irouter.md) documentation for more information. - -## Example - - -```ts -const router = createRouter(); -// handler is called when '/path' resource is requested with `GET` method -router.get({ path: '/path', validate: false }, (context, req, res) => res.ok({ content: 'ok' })); -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.csp.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.csp.md deleted file mode 100644 index 1e2b987e667c9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.csp.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) > [csp](./kibana-plugin-core-server.httpservicesetup.csp.md) - -## HttpServiceSetup.csp property - -The CSP config used for Kibana. - -Signature: - -```typescript -csp: ICspConfig; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.getserverinfo.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.getserverinfo.md deleted file mode 100644 index 9e257062722a2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.getserverinfo.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) > [getServerInfo](./kibana-plugin-core-server.httpservicesetup.getserverinfo.md) - -## HttpServiceSetup.getServerInfo property - -Provides common [information](./kibana-plugin-core-server.httpserverinfo.md) about the running http server. - -Signature: - -```typescript -getServerInfo: () => HttpServerInfo; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.md deleted file mode 100644 index bb03887e547e2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.md +++ /dev/null @@ -1,91 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) - -## HttpServiceSetup interface - -Kibana HTTP Service provides own abstraction for work with HTTP stack. Plugins don't have direct access to `hapi` server and its primitives anymore. Moreover, plugins shouldn't rely on the fact that HTTP Service uses one or another library under the hood. This gives the platform flexibility to upgrade or changing our internal HTTP stack without breaking plugins. If the HTTP Service lacks functionality you need, we are happy to discuss and support your needs. - -Signature: - -```typescript -export interface HttpServiceSetup -``` - -## Example - -To handle an incoming request in your plugin you should: - Create a `Router` instance. - -```ts -const router = httpSetup.createRouter(); -``` -- Use `@kbn/config-schema` package to create a schema to validate the request `params`, `query`, and `body`. Every incoming request will be validated against the created schema. If validation failed, the request is rejected with `400` status and `Bad request` error without calling the route's handler. To opt out of validating the request, specify `false`. - -```ts -import { schema, TypeOf } from '@kbn/config-schema'; -const validate = { - params: schema.object({ - id: schema.string(), - }), -}; -``` -- Declare a function to respond to incoming request. The function will receive `request` object containing request details: url, headers, matched route, as well as validated `params`, `query`, `body`. And `response` object instructing HTTP server to create HTTP response with information sent back to the client as the response body, headers, and HTTP status. Unlike, `hapi` route handler in the Legacy platform, any exception raised during the handler call will generate `500 Server error` response and log error details for further investigation. See below for returning custom error responses. - -```ts -const handler = async (context: RequestHandlerContext, request: KibanaRequest, response: ResponseFactory) => { - const data = await findObject(request.params.id); - // creates a command to respond with 'not found' error - if (!data) return response.notFound(); - // creates a command to send found data to the client and set response headers - return response.ok({ - body: data, - headers: { - 'content-type': 'application/json' - } - }); -} -``` -- Register route handler for GET request to 'path/{id}' path - -```ts -import { schema, TypeOf } from '@kbn/config-schema'; -const router = httpSetup.createRouter(); - -const validate = { - params: schema.object({ - id: schema.string(), - }), -}; - -router.get({ - path: 'path/{id}', - validate -}, -async (context, request, response) => { - const data = await findObject(request.params.id); - if (!data) return response.notFound(); - return response.ok({ - body: data, - headers: { - 'content-type': 'application/json' - } - }); -}); -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [basePath](./kibana-plugin-core-server.httpservicesetup.basepath.md) | IBasePath | Access or manipulate the Kibana base path See [IBasePath](./kibana-plugin-core-server.ibasepath.md). | -| [createCookieSessionStorageFactory](./kibana-plugin-core-server.httpservicesetup.createcookiesessionstoragefactory.md) | <T>(cookieOptions: SessionStorageCookieOptions<T>) => Promise<SessionStorageFactory<T>> | Creates cookie based session storage factory [SessionStorageFactory](./kibana-plugin-core-server.sessionstoragefactory.md) | -| [createRouter](./kibana-plugin-core-server.httpservicesetup.createrouter.md) | <Context extends RequestHandlerContext = RequestHandlerContext>() => IRouter<Context> | Provides ability to declare a handler function for a particular path and HTTP request method. | -| [csp](./kibana-plugin-core-server.httpservicesetup.csp.md) | ICspConfig | The CSP config used for Kibana. | -| [getServerInfo](./kibana-plugin-core-server.httpservicesetup.getserverinfo.md) | () => HttpServerInfo | Provides common [information](./kibana-plugin-core-server.httpserverinfo.md) about the running http server. | -| [registerAuth](./kibana-plugin-core-server.httpservicesetup.registerauth.md) | (handler: AuthenticationHandler) => void | To define custom authentication and/or authorization mechanism for incoming requests. | -| [registerOnPostAuth](./kibana-plugin-core-server.httpservicesetup.registeronpostauth.md) | (handler: OnPostAuthHandler) => void | To define custom logic after Auth interceptor did make sure a user has access to the requested resource. | -| [registerOnPreAuth](./kibana-plugin-core-server.httpservicesetup.registeronpreauth.md) | (handler: OnPreAuthHandler) => void | To define custom logic to perform for incoming requests before the Auth interceptor performs a check that user has access to requested resources. | -| [registerOnPreResponse](./kibana-plugin-core-server.httpservicesetup.registeronpreresponse.md) | (handler: OnPreResponseHandler) => void | To define custom logic to perform for the server response. | -| [registerOnPreRouting](./kibana-plugin-core-server.httpservicesetup.registeronprerouting.md) | (handler: OnPreRoutingHandler) => void | To define custom logic to perform for incoming requests before server performs a route lookup. | -| [registerRouteHandlerContext](./kibana-plugin-core-server.httpservicesetup.registerroutehandlercontext.md) | <Context extends RequestHandlerContext, ContextName extends keyof Omit<Context, 'resolve'>>(contextName: ContextName, provider: RequestHandlerContextProvider<Context, ContextName>) => RequestHandlerContextContainer | Register a context provider for a route handler. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registerauth.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registerauth.md deleted file mode 100644 index d209b526afd76..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registerauth.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) > [registerAuth](./kibana-plugin-core-server.httpservicesetup.registerauth.md) - -## HttpServiceSetup.registerAuth property - -To define custom authentication and/or authorization mechanism for incoming requests. - -Signature: - -```typescript -registerAuth: (handler: AuthenticationHandler) => void; -``` - -## Remarks - -A handler should return a state to associate with the incoming request. The state can be retrieved later via http.auth.get(..) Only one AuthenticationHandler can be registered. See [AuthenticationHandler](./kibana-plugin-core-server.authenticationhandler.md). - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpostauth.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpostauth.md deleted file mode 100644 index 41b82f428948a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpostauth.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) > [registerOnPostAuth](./kibana-plugin-core-server.httpservicesetup.registeronpostauth.md) - -## HttpServiceSetup.registerOnPostAuth property - -To define custom logic after Auth interceptor did make sure a user has access to the requested resource. - -Signature: - -```typescript -registerOnPostAuth: (handler: OnPostAuthHandler) => void; -``` - -## Remarks - -The auth state is available at stage via http.auth.get(..) Can register any number of registerOnPostAuth, which are called in sequence (from the first registered to the last). See [OnPostAuthHandler](./kibana-plugin-core-server.onpostauthhandler.md). - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpreauth.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpreauth.md deleted file mode 100644 index 57b1833df5e03..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpreauth.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) > [registerOnPreAuth](./kibana-plugin-core-server.httpservicesetup.registeronpreauth.md) - -## HttpServiceSetup.registerOnPreAuth property - -To define custom logic to perform for incoming requests before the Auth interceptor performs a check that user has access to requested resources. - -Signature: - -```typescript -registerOnPreAuth: (handler: OnPreAuthHandler) => void; -``` - -## Remarks - -Can register any number of registerOnPreAuth, which are called in sequence (from the first registered to the last). See [OnPreAuthHandler](./kibana-plugin-core-server.onpreauthhandler.md). - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpreresponse.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpreresponse.md deleted file mode 100644 index 118bc06cc726c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronpreresponse.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) > [registerOnPreResponse](./kibana-plugin-core-server.httpservicesetup.registeronpreresponse.md) - -## HttpServiceSetup.registerOnPreResponse property - -To define custom logic to perform for the server response. - -Signature: - -```typescript -registerOnPreResponse: (handler: OnPreResponseHandler) => void; -``` - -## Remarks - -Doesn't provide the whole response object. Supports extending response with custom headers. See [OnPreResponseHandler](./kibana-plugin-core-server.onpreresponsehandler.md). - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronprerouting.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronprerouting.md deleted file mode 100644 index bdf5f15828669..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registeronprerouting.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) > [registerOnPreRouting](./kibana-plugin-core-server.httpservicesetup.registeronprerouting.md) - -## HttpServiceSetup.registerOnPreRouting property - -To define custom logic to perform for incoming requests before server performs a route lookup. - -Signature: - -```typescript -registerOnPreRouting: (handler: OnPreRoutingHandler) => void; -``` - -## Remarks - -It's the only place when you can forward a request to another URL right on the server. Can register any number of registerOnPreRouting, which are called in sequence (from the first registered to the last). See [OnPreRoutingHandler](./kibana-plugin-core-server.onpreroutinghandler.md). - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registerroutehandlercontext.md b/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registerroutehandlercontext.md deleted file mode 100644 index 23e009864dcd6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicesetup.registerroutehandlercontext.md +++ /dev/null @@ -1,41 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) > [registerRouteHandlerContext](./kibana-plugin-core-server.httpservicesetup.registerroutehandlercontext.md) - -## HttpServiceSetup.registerRouteHandlerContext property - -Register a context provider for a route handler. - -Signature: - -```typescript -registerRouteHandlerContext: >(contextName: ContextName, provider: RequestHandlerContextProvider) => RequestHandlerContextContainer; -``` - -## Example - - -```ts - // my-plugin.ts - interface MyRequestHandlerContext extends RequestHandlerContext { - myApp: { search(id: string): Promise }; - } - deps.http.registerRouteHandlerContext( - 'myApp', - (context, req) => { - async function search (id: string) { - return await context.elasticsearch.client.asCurrentUser.find(id); - } - return { search }; - } - ); - -// my-route-handler.ts - import type { MyRequestHandlerContext } from './my-plugin.ts'; - const router = createRouter(); - router.get({ path: '/', validate: false }, async (context, req, res) => { - const response = await context.myApp.search(...); - return res.ok(response); - }); -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicestart.auth.md b/docs/development/core/server/kibana-plugin-core-server.httpservicestart.auth.md deleted file mode 100644 index f7dffee2e125c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicestart.auth.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceStart](./kibana-plugin-core-server.httpservicestart.md) > [auth](./kibana-plugin-core-server.httpservicestart.auth.md) - -## HttpServiceStart.auth property - -Auth status. See [HttpAuth](./kibana-plugin-core-server.httpauth.md) - -Signature: - -```typescript -auth: HttpAuth; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicestart.basepath.md b/docs/development/core/server/kibana-plugin-core-server.httpservicestart.basepath.md deleted file mode 100644 index e8b2a0fc2cbaa..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicestart.basepath.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceStart](./kibana-plugin-core-server.httpservicestart.md) > [basePath](./kibana-plugin-core-server.httpservicestart.basepath.md) - -## HttpServiceStart.basePath property - -Access or manipulate the Kibana base path See [IBasePath](./kibana-plugin-core-server.ibasepath.md). - -Signature: - -```typescript -basePath: IBasePath; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicestart.getserverinfo.md b/docs/development/core/server/kibana-plugin-core-server.httpservicestart.getserverinfo.md deleted file mode 100644 index a95c8da64fdb0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicestart.getserverinfo.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceStart](./kibana-plugin-core-server.httpservicestart.md) > [getServerInfo](./kibana-plugin-core-server.httpservicestart.getserverinfo.md) - -## HttpServiceStart.getServerInfo property - -Provides common [information](./kibana-plugin-core-server.httpserverinfo.md) about the running http server. - -Signature: - -```typescript -getServerInfo: () => HttpServerInfo; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.httpservicestart.md b/docs/development/core/server/kibana-plugin-core-server.httpservicestart.md deleted file mode 100644 index de6c259c7f7a5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.httpservicestart.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [HttpServiceStart](./kibana-plugin-core-server.httpservicestart.md) - -## HttpServiceStart interface - - -Signature: - -```typescript -export interface HttpServiceStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [auth](./kibana-plugin-core-server.httpservicestart.auth.md) | HttpAuth | Auth status. See [HttpAuth](./kibana-plugin-core-server.httpauth.md) | -| [basePath](./kibana-plugin-core-server.httpservicestart.basepath.md) | IBasePath | Access or manipulate the Kibana base path See [IBasePath](./kibana-plugin-core-server.ibasepath.md). | -| [getServerInfo](./kibana-plugin-core-server.httpservicestart.getserverinfo.md) | () => HttpServerInfo | Provides common [information](./kibana-plugin-core-server.httpserverinfo.md) about the running http server. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.getlocale.md b/docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.getlocale.md deleted file mode 100644 index fa98f34c6ac5e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.getlocale.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [I18nServiceSetup](./kibana-plugin-core-server.i18nservicesetup.md) > [getLocale](./kibana-plugin-core-server.i18nservicesetup.getlocale.md) - -## I18nServiceSetup.getLocale() method - -Return the locale currently in use. - -Signature: - -```typescript -getLocale(): string; -``` -Returns: - -string - diff --git a/docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.gettranslationfiles.md b/docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.gettranslationfiles.md deleted file mode 100644 index ebdb0babc3af7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.gettranslationfiles.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [I18nServiceSetup](./kibana-plugin-core-server.i18nservicesetup.md) > [getTranslationFiles](./kibana-plugin-core-server.i18nservicesetup.gettranslationfiles.md) - -## I18nServiceSetup.getTranslationFiles() method - -Return the absolute paths to translation files currently in use. - -Signature: - -```typescript -getTranslationFiles(): string[]; -``` -Returns: - -string\[\] - diff --git a/docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.md deleted file mode 100644 index f68b7877953e7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.i18nservicesetup.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [I18nServiceSetup](./kibana-plugin-core-server.i18nservicesetup.md) - -## I18nServiceSetup interface - - -Signature: - -```typescript -export interface I18nServiceSetup -``` - -## Methods - -| Method | Description | -| --- | --- | -| [getLocale()](./kibana-plugin-core-server.i18nservicesetup.getlocale.md) | Return the locale currently in use. | -| [getTranslationFiles()](./kibana-plugin-core-server.i18nservicesetup.gettranslationfiles.md) | Return the absolute paths to translation files currently in use. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.ibasepath.md b/docs/development/core/server/kibana-plugin-core-server.ibasepath.md deleted file mode 100644 index 7f0c551d1da28..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ibasepath.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IBasePath](./kibana-plugin-core-server.ibasepath.md) - -## IBasePath type - -Access or manipulate the Kibana base path - -[BasePath](./kibana-plugin-core-server.basepath.md) - -Signature: - -```typescript -export declare type IBasePath = Pick; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iclusterclient.asinternaluser.md b/docs/development/core/server/kibana-plugin-core-server.iclusterclient.asinternaluser.md deleted file mode 100644 index c7adc345af5a3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iclusterclient.asinternaluser.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IClusterClient](./kibana-plugin-core-server.iclusterclient.md) > [asInternalUser](./kibana-plugin-core-server.iclusterclient.asinternaluser.md) - -## IClusterClient.asInternalUser property - -A [client](./kibana-plugin-core-server.elasticsearchclient.md) to be used to query the ES cluster on behalf of the Kibana internal user - -Signature: - -```typescript -readonly asInternalUser: ElasticsearchClient; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iclusterclient.asscoped.md b/docs/development/core/server/kibana-plugin-core-server.iclusterclient.asscoped.md deleted file mode 100644 index 301fcbfee5858..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iclusterclient.asscoped.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IClusterClient](./kibana-plugin-core-server.iclusterclient.md) > [asScoped](./kibana-plugin-core-server.iclusterclient.asscoped.md) - -## IClusterClient.asScoped property - -Creates a [scoped cluster client](./kibana-plugin-core-server.iscopedclusterclient.md) bound to given [request](./kibana-plugin-core-server.scopeablerequest.md) - -Signature: - -```typescript -asScoped: (request: ScopeableRequest) => IScopedClusterClient; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iclusterclient.md b/docs/development/core/server/kibana-plugin-core-server.iclusterclient.md deleted file mode 100644 index 969a32d96a3a0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iclusterclient.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IClusterClient](./kibana-plugin-core-server.iclusterclient.md) - -## IClusterClient interface - -Represents an Elasticsearch cluster API client created by the platform. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via `asScoped(...)`). - -Signature: - -```typescript -export interface IClusterClient -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [asInternalUser](./kibana-plugin-core-server.iclusterclient.asinternaluser.md) | ElasticsearchClient | A [client](./kibana-plugin-core-server.elasticsearchclient.md) to be used to query the ES cluster on behalf of the Kibana internal user | -| [asScoped](./kibana-plugin-core-server.iclusterclient.asscoped.md) | (request: ScopeableRequest) => IScopedClusterClient | Creates a [scoped cluster client](./kibana-plugin-core-server.iscopedclusterclient.md) bound to given [request](./kibana-plugin-core-server.scopeablerequest.md) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.icontextcontainer.createhandler.md b/docs/development/core/server/kibana-plugin-core-server.icontextcontainer.createhandler.md deleted file mode 100644 index ac13b86295f6d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.icontextcontainer.createhandler.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) > [createHandler](./kibana-plugin-core-server.icontextcontainer.createhandler.md) - -## IContextContainer.createHandler() method - -Create a new handler function pre-wired to context for the plugin. - -Signature: - -```typescript -createHandler(pluginOpaqueId: PluginOpaqueId, handler: RequestHandler): (...rest: HandlerParameters) => ShallowPromise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| pluginOpaqueId | PluginOpaqueId | The plugin opaque ID for the plugin that registers this handler. | -| handler | RequestHandler | Handler function to pass context object to. | - -Returns: - -(...rest: HandlerParameters<RequestHandler>) => ShallowPromise<ReturnType<RequestHandler>> - -A function that takes `RequestHandler` parameters, calls `handler` with a new context, and returns a Promise of the `handler` return value. - diff --git a/docs/development/core/server/kibana-plugin-core-server.icontextcontainer.md b/docs/development/core/server/kibana-plugin-core-server.icontextcontainer.md deleted file mode 100644 index 99cddecb38d43..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.icontextcontainer.md +++ /dev/null @@ -1,79 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) - -## IContextContainer interface - -An object that handles registration of context providers and configuring handlers with context. - -Signature: - -```typescript -export interface IContextContainer -``` - -## Remarks - -A [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) can be used by any Core service or plugin (known as the "service owner") which wishes to expose APIs in a handler function. The container object will manage registering context providers and configuring a handler with all of the contexts that should be exposed to the handler's plugin. This is dependent on the dependencies that the handler's plugin declares. - -Contexts providers are executed in the order they were registered. Each provider gets access to context values provided by any plugins that it depends on. - -In order to configure a handler with context, you must call the [IContextContainer.createHandler()](./kibana-plugin-core-server.icontextcontainer.createhandler.md) function and use the returned handler which will automatically build a context object when called. - -When registering context or creating handlers, the \_calling plugin's opaque id\_ must be provided. This id is passed in via the plugin's initializer and can be accessed from the [PluginInitializerContext.opaqueId](./kibana-plugin-core-server.plugininitializercontext.opaqueid.md) Note this should NOT be the context service owner's id, but the plugin that is actually registering the context or handler. - -```ts -// Correct -class MyPlugin { - private readonly handlers = new Map(); - - setup(core) { - this.contextContainer = core.context.createContextContainer(); - return { - registerContext(pluginOpaqueId, contextName, provider) { - this.contextContainer.registerContext(pluginOpaqueId, contextName, provider); - }, - registerRoute(pluginOpaqueId, path, handler) { - this.handlers.set( - path, - this.contextContainer.createHandler(pluginOpaqueId, handler) - ); - } - } - } -} - -// Incorrect -class MyPlugin { - private readonly handlers = new Map(); - - constructor(private readonly initContext: PluginInitializerContext) {} - - setup(core) { - this.contextContainer = core.context.createContextContainer(); - return { - registerContext(contextName, provider) { - // BUG! - // This would leak this context to all handlers rather that only plugins that depend on the calling plugin. - this.contextContainer.registerContext(this.initContext.opaqueId, contextName, provider); - }, - registerRoute(path, handler) { - this.handlers.set( - path, - // BUG! - // This handler will not receive any contexts provided by other dependencies of the calling plugin. - this.contextContainer.createHandler(this.initContext.opaqueId, handler) - ); - } - } - } -} -``` - -## Methods - -| Method | Description | -| --- | --- | -| [createHandler(pluginOpaqueId, handler)](./kibana-plugin-core-server.icontextcontainer.createhandler.md) | Create a new handler function pre-wired to context for the plugin. | -| [registerContext(pluginOpaqueId, contextName, provider)](./kibana-plugin-core-server.icontextcontainer.registercontext.md) | Register a new context provider. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.icontextcontainer.registercontext.md b/docs/development/core/server/kibana-plugin-core-server.icontextcontainer.registercontext.md deleted file mode 100644 index 32b177df2b2ed..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.icontextcontainer.registercontext.md +++ /dev/null @@ -1,34 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) > [registerContext](./kibana-plugin-core-server.icontextcontainer.registercontext.md) - -## IContextContainer.registerContext() method - -Register a new context provider. - -Signature: - -```typescript -registerContext(pluginOpaqueId: PluginOpaqueId, contextName: ContextName, provider: IContextProvider): this; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| pluginOpaqueId | PluginOpaqueId | The plugin opaque ID for the plugin that registers this context. | -| contextName | ContextName | The key of the TContext object this provider supplies the value for. | -| provider | IContextProvider<Context, ContextName> | A [IContextProvider](./kibana-plugin-core-server.icontextprovider.md) to be called each time a new context is created. | - -Returns: - -this - -The [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) for method chaining. - -## Remarks - -The value (or resolved Promise value) returned by the `provider` function will be attached to the context object on the key specified by `contextName`. - -Throws an exception if more than one provider is registered for the same `contextName`. - diff --git a/docs/development/core/server/kibana-plugin-core-server.icontextprovider.md b/docs/development/core/server/kibana-plugin-core-server.icontextprovider.md deleted file mode 100644 index eb2ec3cbf90b8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.icontextprovider.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IContextProvider](./kibana-plugin-core-server.icontextprovider.md) - -## IContextProvider type - -A function that returns a context value for a specific key of given context type. - -Signature: - -```typescript -export declare type IContextProvider = (context: Omit, ...rest: HandlerParameters) => MaybePromise>; -``` - -## Remarks - -This function will be called each time a new context is built for a handler invocation. - diff --git a/docs/development/core/server/kibana-plugin-core-server.icspconfig.disableembedding.md b/docs/development/core/server/kibana-plugin-core-server.icspconfig.disableembedding.md deleted file mode 100644 index 42b177c348afe..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.icspconfig.disableembedding.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ICspConfig](./kibana-plugin-core-server.icspconfig.md) > [disableEmbedding](./kibana-plugin-core-server.icspconfig.disableembedding.md) - -## ICspConfig.disableEmbedding property - -Whether or not embedding (using iframes) should be allowed by the CSP. If embedding is disabled, a restrictive 'frame-ancestors' rule will be added to the default CSP rules. - -Signature: - -```typescript -readonly disableEmbedding: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.icspconfig.header.md b/docs/development/core/server/kibana-plugin-core-server.icspconfig.header.md deleted file mode 100644 index 779a0184e9fb3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.icspconfig.header.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ICspConfig](./kibana-plugin-core-server.icspconfig.md) > [header](./kibana-plugin-core-server.icspconfig.header.md) - -## ICspConfig.header property - -The CSP rules in a formatted directives string for use in a `Content-Security-Policy` header. - -Signature: - -```typescript -readonly header: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.icspconfig.md b/docs/development/core/server/kibana-plugin-core-server.icspconfig.md deleted file mode 100644 index d5667900a41e2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.icspconfig.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ICspConfig](./kibana-plugin-core-server.icspconfig.md) - -## ICspConfig interface - -CSP configuration for use in Kibana. - -Signature: - -```typescript -export interface ICspConfig -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [disableEmbedding](./kibana-plugin-core-server.icspconfig.disableembedding.md) | boolean | Whether or not embedding (using iframes) should be allowed by the CSP. If embedding is disabled, a restrictive 'frame-ancestors' rule will be added to the default CSP rules. | -| [header](./kibana-plugin-core-server.icspconfig.header.md) | string | The CSP rules in a formatted directives string for use in a Content-Security-Policy header. | -| [strict](./kibana-plugin-core-server.icspconfig.strict.md) | boolean | Specify whether browsers that do not support CSP should be able to use Kibana. Use true to block and false to allow. | -| [warnLegacyBrowsers](./kibana-plugin-core-server.icspconfig.warnlegacybrowsers.md) | boolean | Specify whether users with legacy browsers should be warned about their lack of Kibana security compliance. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.icspconfig.strict.md b/docs/development/core/server/kibana-plugin-core-server.icspconfig.strict.md deleted file mode 100644 index d8ea8ec377831..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.icspconfig.strict.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ICspConfig](./kibana-plugin-core-server.icspconfig.md) > [strict](./kibana-plugin-core-server.icspconfig.strict.md) - -## ICspConfig.strict property - -Specify whether browsers that do not support CSP should be able to use Kibana. Use `true` to block and `false` to allow. - -Signature: - -```typescript -readonly strict: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.icspconfig.warnlegacybrowsers.md b/docs/development/core/server/kibana-plugin-core-server.icspconfig.warnlegacybrowsers.md deleted file mode 100644 index 84286262bcbf2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.icspconfig.warnlegacybrowsers.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ICspConfig](./kibana-plugin-core-server.icspconfig.md) > [warnLegacyBrowsers](./kibana-plugin-core-server.icspconfig.warnlegacybrowsers.md) - -## ICspConfig.warnLegacyBrowsers property - -Specify whether users with legacy browsers should be warned about their lack of Kibana security compliance. - -Signature: - -```typescript -readonly warnLegacyBrowsers: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.icustomclusterclient.close.md b/docs/development/core/server/kibana-plugin-core-server.icustomclusterclient.close.md deleted file mode 100644 index 5fa2e93cca75b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.icustomclusterclient.close.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ICustomClusterClient](./kibana-plugin-core-server.icustomclusterclient.md) > [close](./kibana-plugin-core-server.icustomclusterclient.close.md) - -## ICustomClusterClient.close property - -Closes the cluster client. After that client cannot be used and one should create a new client instance to be able to interact with Elasticsearch API. - -Signature: - -```typescript -close: () => Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.icustomclusterclient.md b/docs/development/core/server/kibana-plugin-core-server.icustomclusterclient.md deleted file mode 100644 index 1c65137d1ddc1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.icustomclusterclient.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ICustomClusterClient](./kibana-plugin-core-server.icustomclusterclient.md) - -## ICustomClusterClient interface - -See [IClusterClient](./kibana-plugin-core-server.iclusterclient.md) - -Signature: - -```typescript -export interface ICustomClusterClient extends IClusterClient -``` -Extends: IClusterClient - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [close](./kibana-plugin-core-server.icustomclusterclient.close.md) | () => Promise<void> | Closes the cluster client. After that client cannot be used and one should create a new client instance to be able to interact with Elasticsearch API. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.md b/docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.md deleted file mode 100644 index 2ab3f52b9b553..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IExecutionContextContainer](./kibana-plugin-core-server.iexecutioncontextcontainer.md) - -## IExecutionContextContainer interface - - -Signature: - -```typescript -export interface IExecutionContextContainer -``` - -## Methods - -| Method | Description | -| --- | --- | -| [toJSON()](./kibana-plugin-core-server.iexecutioncontextcontainer.tojson.md) | | -| [toString()](./kibana-plugin-core-server.iexecutioncontextcontainer.tostring.md) | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.tojson.md b/docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.tojson.md deleted file mode 100644 index a561e6c319408..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.tojson.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IExecutionContextContainer](./kibana-plugin-core-server.iexecutioncontextcontainer.md) > [toJSON](./kibana-plugin-core-server.iexecutioncontextcontainer.tojson.md) - -## IExecutionContextContainer.toJSON() method - -Signature: - -```typescript -toJSON(): Readonly; -``` -Returns: - -Readonly<KibanaExecutionContext> - diff --git a/docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.tostring.md b/docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.tostring.md deleted file mode 100644 index 666da5bef3969..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iexecutioncontextcontainer.tostring.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IExecutionContextContainer](./kibana-plugin-core-server.iexecutioncontextcontainer.md) > [toString](./kibana-plugin-core-server.iexecutioncontextcontainer.tostring.md) - -## IExecutionContextContainer.toString() method - -Signature: - -```typescript -toString(): string; -``` -Returns: - -string - diff --git a/docs/development/core/server/kibana-plugin-core-server.iexternalurlconfig.md b/docs/development/core/server/kibana-plugin-core-server.iexternalurlconfig.md deleted file mode 100644 index b5490a9548dc1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iexternalurlconfig.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IExternalUrlConfig](./kibana-plugin-core-server.iexternalurlconfig.md) - -## IExternalUrlConfig interface - -External Url configuration for use in Kibana. - -Signature: - -```typescript -export interface IExternalUrlConfig -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [policy](./kibana-plugin-core-server.iexternalurlconfig.policy.md) | IExternalUrlPolicy\[\] | A set of policies describing which external urls are allowed. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.iexternalurlconfig.policy.md b/docs/development/core/server/kibana-plugin-core-server.iexternalurlconfig.policy.md deleted file mode 100644 index b5b6f07038076..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iexternalurlconfig.policy.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IExternalUrlConfig](./kibana-plugin-core-server.iexternalurlconfig.md) > [policy](./kibana-plugin-core-server.iexternalurlconfig.policy.md) - -## IExternalUrlConfig.policy property - -A set of policies describing which external urls are allowed. - -Signature: - -```typescript -readonly policy: IExternalUrlPolicy[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.allow.md b/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.allow.md deleted file mode 100644 index 47d3dbf83f2b3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.allow.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IExternalUrlPolicy](./kibana-plugin-core-server.iexternalurlpolicy.md) > [allow](./kibana-plugin-core-server.iexternalurlpolicy.allow.md) - -## IExternalUrlPolicy.allow property - -Indicates if this policy allows or denies access to the described destination. - -Signature: - -```typescript -allow: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.host.md b/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.host.md deleted file mode 100644 index a549f80509474..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.host.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IExternalUrlPolicy](./kibana-plugin-core-server.iexternalurlpolicy.md) > [host](./kibana-plugin-core-server.iexternalurlpolicy.host.md) - -## IExternalUrlPolicy.host property - -Optional host describing the external destination. May be combined with `protocol`. - -Signature: - -```typescript -host?: string; -``` - -## Example - - -```ts -// allows access to all of google.com, using any protocol. -allow: true, -host: 'google.com' -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.md b/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.md deleted file mode 100644 index 45f7798eaf336..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IExternalUrlPolicy](./kibana-plugin-core-server.iexternalurlpolicy.md) - -## IExternalUrlPolicy interface - -A policy describing whether access to an external destination is allowed. - -Signature: - -```typescript -export interface IExternalUrlPolicy -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [allow](./kibana-plugin-core-server.iexternalurlpolicy.allow.md) | boolean | Indicates if this policy allows or denies access to the described destination. | -| [host?](./kibana-plugin-core-server.iexternalurlpolicy.host.md) | string | (Optional) Optional host describing the external destination. May be combined with protocol. | -| [protocol?](./kibana-plugin-core-server.iexternalurlpolicy.protocol.md) | string | (Optional) Optional protocol describing the external destination. May be combined with host. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.protocol.md b/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.protocol.md deleted file mode 100644 index 86f6e6164de4e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iexternalurlpolicy.protocol.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IExternalUrlPolicy](./kibana-plugin-core-server.iexternalurlpolicy.md) > [protocol](./kibana-plugin-core-server.iexternalurlpolicy.protocol.md) - -## IExternalUrlPolicy.protocol property - -Optional protocol describing the external destination. May be combined with `host`. - -Signature: - -```typescript -protocol?: string; -``` - -## Example - - -```ts -// allows access to all destinations over the `https` protocol. -allow: true, -protocol: 'https' -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.md b/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.md deleted file mode 100644 index c71f5360834e8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaResponse](./kibana-plugin-core-server.ikibanaresponse.md) - -## IKibanaResponse interface - -A response data object, expected to returned as a result of [RequestHandler](./kibana-plugin-core-server.requesthandler.md) execution - -Signature: - -```typescript -export interface IKibanaResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [options](./kibana-plugin-core-server.ikibanaresponse.options.md) | HttpResponseOptions | | -| [payload?](./kibana-plugin-core-server.ikibanaresponse.payload.md) | T | (Optional) | -| [status](./kibana-plugin-core-server.ikibanaresponse.status.md) | number | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.options.md b/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.options.md deleted file mode 100644 index a91224a11282d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.options.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaResponse](./kibana-plugin-core-server.ikibanaresponse.md) > [options](./kibana-plugin-core-server.ikibanaresponse.options.md) - -## IKibanaResponse.options property - -Signature: - -```typescript -readonly options: HttpResponseOptions; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.payload.md b/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.payload.md deleted file mode 100644 index 2475402bfb9fc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.payload.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaResponse](./kibana-plugin-core-server.ikibanaresponse.md) > [payload](./kibana-plugin-core-server.ikibanaresponse.payload.md) - -## IKibanaResponse.payload property - -Signature: - -```typescript -readonly payload?: T; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.status.md b/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.status.md deleted file mode 100644 index 2d7494d0e22b5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanaresponse.status.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaResponse](./kibana-plugin-core-server.ikibanaresponse.md) > [status](./kibana-plugin-core-server.ikibanaresponse.status.md) - -## IKibanaResponse.status property - -Signature: - -```typescript -readonly status: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.authorizationerror.md b/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.authorizationerror.md deleted file mode 100644 index 930179acf399a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.authorizationerror.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) > [authorizationError](./kibana-plugin-core-server.ikibanasocket.authorizationerror.md) - -## IKibanaSocket.authorizationError property - -The reason why the peer's certificate has not been verified. This property becomes available only when `authorized` is `false`. - -Signature: - -```typescript -readonly authorizationError?: Error; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.authorized.md b/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.authorized.md deleted file mode 100644 index 5ead5a8556c92..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.authorized.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) > [authorized](./kibana-plugin-core-server.ikibanasocket.authorized.md) - -## IKibanaSocket.authorized property - -Indicates whether or not the peer certificate was signed by one of the specified CAs. When TLS isn't used the value is `undefined`. - -Signature: - -```typescript -readonly authorized?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate.md b/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate.md deleted file mode 100644 index 9f0dce061bcfc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) > [getPeerCertificate](./kibana-plugin-core-server.ikibanasocket.getpeercertificate.md) - -## IKibanaSocket.getPeerCertificate() method - -Signature: - -```typescript -getPeerCertificate(detailed: true): DetailedPeerCertificate | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| detailed | true | | - -Returns: - -DetailedPeerCertificate \| null - diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate_1.md b/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate_1.md deleted file mode 100644 index 363fce50251d8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate_1.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) > [getPeerCertificate](./kibana-plugin-core-server.ikibanasocket.getpeercertificate_1.md) - -## IKibanaSocket.getPeerCertificate() method - -Signature: - -```typescript -getPeerCertificate(detailed: false): PeerCertificate | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| detailed | false | | - -Returns: - -PeerCertificate \| null - diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate_2.md b/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate_2.md deleted file mode 100644 index 24b11b6966000..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getpeercertificate_2.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) > [getPeerCertificate](./kibana-plugin-core-server.ikibanasocket.getpeercertificate_2.md) - -## IKibanaSocket.getPeerCertificate() method - -Returns an object representing the peer's certificate. The returned object has some properties corresponding to the field of the certificate. If detailed argument is true the full chain with issuer property will be returned, if false only the top certificate without issuer property. If the peer does not provide a certificate, it returns null. - -Signature: - -```typescript -getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate | null; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| detailed | boolean | If true; the full chain with issuer property will be returned. | - -Returns: - -PeerCertificate \| DetailedPeerCertificate \| null - -An object representing the peer's certificate. - diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getprotocol.md b/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getprotocol.md deleted file mode 100644 index d605f2fd21bef..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.getprotocol.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) > [getProtocol](./kibana-plugin-core-server.ikibanasocket.getprotocol.md) - -## IKibanaSocket.getProtocol() method - -Returns a string containing the negotiated SSL/TLS protocol version of the current connection. The value 'unknown' will be returned for connected sockets that have not completed the handshaking process. The value null will be returned for server sockets or disconnected client sockets. See https://www.openssl.org/docs/man1.0.2/ssl/SSL\_get\_version.html for more information. - -Signature: - -```typescript -getProtocol(): string | null; -``` -Returns: - -string \| null - diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.md b/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.md deleted file mode 100644 index bc8f59df9d211..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) - -## IKibanaSocket interface - -A tiny abstraction for TCP socket. - -Signature: - -```typescript -export interface IKibanaSocket -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [authorizationError?](./kibana-plugin-core-server.ikibanasocket.authorizationerror.md) | Error | (Optional) The reason why the peer's certificate has not been verified. This property becomes available only when authorized is false. | -| [authorized?](./kibana-plugin-core-server.ikibanasocket.authorized.md) | boolean | (Optional) Indicates whether or not the peer certificate was signed by one of the specified CAs. When TLS isn't used the value is undefined. | - -## Methods - -| Method | Description | -| --- | --- | -| [getPeerCertificate(detailed)](./kibana-plugin-core-server.ikibanasocket.getpeercertificate.md) | | -| [getPeerCertificate(detailed)](./kibana-plugin-core-server.ikibanasocket.getpeercertificate_1.md) | | -| [getPeerCertificate(detailed)](./kibana-plugin-core-server.ikibanasocket.getpeercertificate_2.md) | Returns an object representing the peer's certificate. The returned object has some properties corresponding to the field of the certificate. If detailed argument is true the full chain with issuer property will be returned, if false only the top certificate without issuer property. If the peer does not provide a certificate, it returns null. | -| [getProtocol()](./kibana-plugin-core-server.ikibanasocket.getprotocol.md) | Returns a string containing the negotiated SSL/TLS protocol version of the current connection. The value 'unknown' will be returned for connected sockets that have not completed the handshaking process. The value null will be returned for server sockets or disconnected client sockets. See https://www.openssl.org/docs/man1.0.2/ssl/SSL\_get\_version.html for more information. | -| [renegotiate(options)](./kibana-plugin-core-server.ikibanasocket.renegotiate.md) | Renegotiates a connection to obtain the peer's certificate. This cannot be used when the protocol version is TLSv1.3. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.renegotiate.md b/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.renegotiate.md deleted file mode 100644 index b4addde9b3179..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.ikibanasocket.renegotiate.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) > [renegotiate](./kibana-plugin-core-server.ikibanasocket.renegotiate.md) - -## IKibanaSocket.renegotiate() method - -Renegotiates a connection to obtain the peer's certificate. This cannot be used when the protocol version is TLSv1.3. - -Signature: - -```typescript -renegotiate(options: { - rejectUnauthorized?: boolean; - requestCert?: boolean; - }): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | { rejectUnauthorized?: boolean; requestCert?: boolean; } | The options may contain the following fields: rejectUnauthorized, requestCert (See tls.createServer() for details). | - -Returns: - -Promise<void> - -A Promise that will be resolved if renegotiation succeeded, or will be rejected if renegotiation failed. - diff --git a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.exceeds.md b/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.exceeds.md deleted file mode 100644 index 664bdb8f24d7b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.exceeds.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IntervalHistogram](./kibana-plugin-core-server.intervalhistogram.md) > [exceeds](./kibana-plugin-core-server.intervalhistogram.exceeds.md) - -## IntervalHistogram.exceeds property - -Signature: - -```typescript -exceeds: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.fromtimestamp.md b/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.fromtimestamp.md deleted file mode 100644 index 00fa8dcb84430..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.fromtimestamp.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IntervalHistogram](./kibana-plugin-core-server.intervalhistogram.md) > [fromTimestamp](./kibana-plugin-core-server.intervalhistogram.fromtimestamp.md) - -## IntervalHistogram.fromTimestamp property - -Signature: - -```typescript -fromTimestamp: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.lastupdatedat.md b/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.lastupdatedat.md deleted file mode 100644 index 58e75fc2ba437..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.lastupdatedat.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IntervalHistogram](./kibana-plugin-core-server.intervalhistogram.md) > [lastUpdatedAt](./kibana-plugin-core-server.intervalhistogram.lastupdatedat.md) - -## IntervalHistogram.lastUpdatedAt property - -Signature: - -```typescript -lastUpdatedAt: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.max.md b/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.max.md deleted file mode 100644 index 14d7fe6b68c4b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.max.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IntervalHistogram](./kibana-plugin-core-server.intervalhistogram.md) > [max](./kibana-plugin-core-server.intervalhistogram.max.md) - -## IntervalHistogram.max property - -Signature: - -```typescript -max: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.md b/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.md deleted file mode 100644 index 56a87a1577e98..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IntervalHistogram](./kibana-plugin-core-server.intervalhistogram.md) - -## IntervalHistogram interface - -an IntervalHistogram object that samples and reports the event loop delay over time. The delays will be reported in milliseconds. - -Signature: - -```typescript -export interface IntervalHistogram -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [exceeds](./kibana-plugin-core-server.intervalhistogram.exceeds.md) | number | | -| [fromTimestamp](./kibana-plugin-core-server.intervalhistogram.fromtimestamp.md) | string | | -| [lastUpdatedAt](./kibana-plugin-core-server.intervalhistogram.lastupdatedat.md) | string | | -| [max](./kibana-plugin-core-server.intervalhistogram.max.md) | number | | -| [mean](./kibana-plugin-core-server.intervalhistogram.mean.md) | number | | -| [min](./kibana-plugin-core-server.intervalhistogram.min.md) | number | | -| [percentiles](./kibana-plugin-core-server.intervalhistogram.percentiles.md) | { 50: number; 75: number; 95: number; 99: number; } | | -| [stddev](./kibana-plugin-core-server.intervalhistogram.stddev.md) | number | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.mean.md b/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.mean.md deleted file mode 100644 index e6794bfa5fe52..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.mean.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IntervalHistogram](./kibana-plugin-core-server.intervalhistogram.md) > [mean](./kibana-plugin-core-server.intervalhistogram.mean.md) - -## IntervalHistogram.mean property - -Signature: - -```typescript -mean: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.min.md b/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.min.md deleted file mode 100644 index d0eb929601f18..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.min.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IntervalHistogram](./kibana-plugin-core-server.intervalhistogram.md) > [min](./kibana-plugin-core-server.intervalhistogram.min.md) - -## IntervalHistogram.min property - -Signature: - -```typescript -min: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.percentiles.md b/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.percentiles.md deleted file mode 100644 index b0adc9531c0b1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.percentiles.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IntervalHistogram](./kibana-plugin-core-server.intervalhistogram.md) > [percentiles](./kibana-plugin-core-server.intervalhistogram.percentiles.md) - -## IntervalHistogram.percentiles property - -Signature: - -```typescript -percentiles: { - 50: number; - 75: number; - 95: number; - 99: number; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.stddev.md b/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.stddev.md deleted file mode 100644 index bca5ab56cb237..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.intervalhistogram.stddev.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IntervalHistogram](./kibana-plugin-core-server.intervalhistogram.md) > [stddev](./kibana-plugin-core-server.intervalhistogram.stddev.md) - -## IntervalHistogram.stddev property - -Signature: - -```typescript -stddev: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.irenderoptions.isanonymouspage.md b/docs/development/core/server/kibana-plugin-core-server.irenderoptions.isanonymouspage.md deleted file mode 100644 index dc2af11f9f9d3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.irenderoptions.isanonymouspage.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IRenderOptions](./kibana-plugin-core-server.irenderoptions.md) > [isAnonymousPage](./kibana-plugin-core-server.irenderoptions.isanonymouspage.md) - -## IRenderOptions.isAnonymousPage property - -Set whether the page is anonymous, which determines what plugins are enabled and whether to output user settings in the page metadata. `false` by default. - -Signature: - -```typescript -isAnonymousPage?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.irenderoptions.md b/docs/development/core/server/kibana-plugin-core-server.irenderoptions.md deleted file mode 100644 index 84539a6aa73ca..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.irenderoptions.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IRenderOptions](./kibana-plugin-core-server.irenderoptions.md) - -## IRenderOptions interface - - -Signature: - -```typescript -export interface IRenderOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [isAnonymousPage?](./kibana-plugin-core-server.irenderoptions.isanonymouspage.md) | boolean | (Optional) Set whether the page is anonymous, which determines what plugins are enabled and whether to output user settings in the page metadata. false by default. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.irouter.delete.md b/docs/development/core/server/kibana-plugin-core-server.irouter.delete.md deleted file mode 100644 index a7b6dd5bc294e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.irouter.delete.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IRouter](./kibana-plugin-core-server.irouter.md) > [delete](./kibana-plugin-core-server.irouter.delete.md) - -## IRouter.delete property - -Register a route handler for `DELETE` request. - -Signature: - -```typescript -delete: RouteRegistrar<'delete', Context>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.irouter.get.md b/docs/development/core/server/kibana-plugin-core-server.irouter.get.md deleted file mode 100644 index 7db694b38da47..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.irouter.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IRouter](./kibana-plugin-core-server.irouter.md) > [get](./kibana-plugin-core-server.irouter.get.md) - -## IRouter.get property - -Register a route handler for `GET` request. - -Signature: - -```typescript -get: RouteRegistrar<'get', Context>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.irouter.handlelegacyerrors.md b/docs/development/core/server/kibana-plugin-core-server.irouter.handlelegacyerrors.md deleted file mode 100644 index 35d109975c83a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.irouter.handlelegacyerrors.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IRouter](./kibana-plugin-core-server.irouter.md) > [handleLegacyErrors](./kibana-plugin-core-server.irouter.handlelegacyerrors.md) - -## IRouter.handleLegacyErrors property - -Wrap a router handler to catch and converts legacy boom errors to proper custom errors. - -Signature: - -```typescript -handleLegacyErrors: RequestHandlerWrapper; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.irouter.md b/docs/development/core/server/kibana-plugin-core-server.irouter.md deleted file mode 100644 index a751ea399c5a9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.irouter.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IRouter](./kibana-plugin-core-server.irouter.md) - -## IRouter interface - -Registers route handlers for specified resource path and method. See [RouteConfig](./kibana-plugin-core-server.routeconfig.md) and [RequestHandler](./kibana-plugin-core-server.requesthandler.md) for more information about arguments to route registrations. - -Signature: - -```typescript -export interface IRouter -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [delete](./kibana-plugin-core-server.irouter.delete.md) | RouteRegistrar<'delete', Context> | Register a route handler for DELETE request. | -| [get](./kibana-plugin-core-server.irouter.get.md) | RouteRegistrar<'get', Context> | Register a route handler for GET request. | -| [handleLegacyErrors](./kibana-plugin-core-server.irouter.handlelegacyerrors.md) | RequestHandlerWrapper | Wrap a router handler to catch and converts legacy boom errors to proper custom errors. | -| [patch](./kibana-plugin-core-server.irouter.patch.md) | RouteRegistrar<'patch', Context> | Register a route handler for PATCH request. | -| [post](./kibana-plugin-core-server.irouter.post.md) | RouteRegistrar<'post', Context> | Register a route handler for POST request. | -| [put](./kibana-plugin-core-server.irouter.put.md) | RouteRegistrar<'put', Context> | Register a route handler for PUT request. | -| [routerPath](./kibana-plugin-core-server.irouter.routerpath.md) | string | Resulted path | - diff --git a/docs/development/core/server/kibana-plugin-core-server.irouter.patch.md b/docs/development/core/server/kibana-plugin-core-server.irouter.patch.md deleted file mode 100644 index b353079630ecb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.irouter.patch.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IRouter](./kibana-plugin-core-server.irouter.md) > [patch](./kibana-plugin-core-server.irouter.patch.md) - -## IRouter.patch property - -Register a route handler for `PATCH` request. - -Signature: - -```typescript -patch: RouteRegistrar<'patch', Context>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.irouter.post.md b/docs/development/core/server/kibana-plugin-core-server.irouter.post.md deleted file mode 100644 index 94c703ad6f339..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.irouter.post.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IRouter](./kibana-plugin-core-server.irouter.md) > [post](./kibana-plugin-core-server.irouter.post.md) - -## IRouter.post property - -Register a route handler for `POST` request. - -Signature: - -```typescript -post: RouteRegistrar<'post', Context>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.irouter.put.md b/docs/development/core/server/kibana-plugin-core-server.irouter.put.md deleted file mode 100644 index 702ff3ff61bb6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.irouter.put.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IRouter](./kibana-plugin-core-server.irouter.md) > [put](./kibana-plugin-core-server.irouter.put.md) - -## IRouter.put property - -Register a route handler for `PUT` request. - -Signature: - -```typescript -put: RouteRegistrar<'put', Context>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.irouter.routerpath.md b/docs/development/core/server/kibana-plugin-core-server.irouter.routerpath.md deleted file mode 100644 index c326e33b01f1f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.irouter.routerpath.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IRouter](./kibana-plugin-core-server.irouter.md) > [routerPath](./kibana-plugin-core-server.irouter.routerpath.md) - -## IRouter.routerPath property - -Resulted path - -Signature: - -```typescript -routerPath: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.isauthenticated.md b/docs/development/core/server/kibana-plugin-core-server.isauthenticated.md deleted file mode 100644 index 0c2d7fab8b579..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isauthenticated.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IsAuthenticated](./kibana-plugin-core-server.isauthenticated.md) - -## IsAuthenticated type - -Returns authentication status for a request. - -Signature: - -```typescript -export declare type IsAuthenticated = (request: KibanaRequest) => boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.exportbyobjects.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.exportbyobjects.md deleted file mode 100644 index 826583a85ed8a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.exportbyobjects.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ISavedObjectsExporter](./kibana-plugin-core-server.isavedobjectsexporter.md) > [exportByObjects](./kibana-plugin-core-server.isavedobjectsexporter.exportbyobjects.md) - -## ISavedObjectsExporter.exportByObjects() method - -Generates an export stream for given object references. - -See the [options](./kibana-plugin-core-server.savedobjectsexportbyobjectoptions.md) for more detailed information. - -Signature: - -```typescript -exportByObjects(options: SavedObjectsExportByObjectOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | SavedObjectsExportByObjectOptions | | - -Returns: - -Promise<Readable> - -## Exceptions - -SavedObjectsExportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.exportbytypes.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.exportbytypes.md deleted file mode 100644 index b1f354e7914f7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.exportbytypes.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ISavedObjectsExporter](./kibana-plugin-core-server.isavedobjectsexporter.md) > [exportByTypes](./kibana-plugin-core-server.isavedobjectsexporter.exportbytypes.md) - -## ISavedObjectsExporter.exportByTypes() method - -Generates an export stream for given types. - -See the [options](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.md) for more detailed information. - -Signature: - -```typescript -exportByTypes(options: SavedObjectsExportByTypeOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | SavedObjectsExportByTypeOptions | | - -Returns: - -Promise<Readable> - -## Exceptions - -SavedObjectsExportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.md deleted file mode 100644 index 4e9643ef8261d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsexporter.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ISavedObjectsExporter](./kibana-plugin-core-server.isavedobjectsexporter.md) - -## ISavedObjectsExporter interface - -Utility class used to export savedObjects. - -Signature: - -```typescript -export interface ISavedObjectsExporter -``` - -## Methods - -| Method | Description | -| --- | --- | -| [exportByObjects(options)](./kibana-plugin-core-server.isavedobjectsexporter.exportbyobjects.md) | Generates an export stream for given object references.See the [options](./kibana-plugin-core-server.savedobjectsexportbyobjectoptions.md) for more detailed information. | -| [exportByTypes(options)](./kibana-plugin-core-server.isavedobjectsexporter.exportbytypes.md) | Generates an export stream for given types.See the [options](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.md) for more detailed information. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.import.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.import.md deleted file mode 100644 index 0622bb511eb8c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.import.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ISavedObjectsImporter](./kibana-plugin-core-server.isavedobjectsimporter.md) > [import](./kibana-plugin-core-server.isavedobjectsimporter.import.md) - -## ISavedObjectsImporter.import() method - -Import saved objects from given stream. See the [options](./kibana-plugin-core-server.savedobjectsimportoptions.md) for more detailed information. - -Signature: - -```typescript -import(options: SavedObjectsImportOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | SavedObjectsImportOptions | | - -Returns: - -Promise<SavedObjectsImportResponse> - -## Exceptions - -SavedObjectsImportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.md deleted file mode 100644 index 93e0d5092ebf9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ISavedObjectsImporter](./kibana-plugin-core-server.isavedobjectsimporter.md) - -## ISavedObjectsImporter interface - -Utility class used to import savedObjects. - -Signature: - -```typescript -export interface ISavedObjectsImporter -``` - -## Methods - -| Method | Description | -| --- | --- | -| [import(options)](./kibana-plugin-core-server.isavedobjectsimporter.import.md) | Import saved objects from given stream. See the [options](./kibana-plugin-core-server.savedobjectsimportoptions.md) for more detailed information. | -| [resolveImportErrors(options)](./kibana-plugin-core-server.isavedobjectsimporter.resolveimporterrors.md) | Resolve and return saved object import errors. See the [options](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md) for more detailed information. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.resolveimporterrors.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.resolveimporterrors.md deleted file mode 100644 index 9d25439e61c81..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsimporter.resolveimporterrors.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ISavedObjectsImporter](./kibana-plugin-core-server.isavedobjectsimporter.md) > [resolveImportErrors](./kibana-plugin-core-server.isavedobjectsimporter.resolveimporterrors.md) - -## ISavedObjectsImporter.resolveImportErrors() method - -Resolve and return saved object import errors. See the [options](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md) for more detailed information. - -Signature: - -```typescript -resolveImportErrors(options: SavedObjectsResolveImportErrorsOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | SavedObjectsResolveImportErrorsOptions | | - -Returns: - -Promise<SavedObjectsImportResponse> - -## Exceptions - -SavedObjectsImportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.close.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.close.md deleted file mode 100644 index f7cfab446eeca..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.close.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ISavedObjectsPointInTimeFinder](./kibana-plugin-core-server.isavedobjectspointintimefinder.md) > [close](./kibana-plugin-core-server.isavedobjectspointintimefinder.close.md) - -## ISavedObjectsPointInTimeFinder.close property - -Closes the Point-In-Time associated with this finder instance. - -Once you have retrieved all of the results you need, it is recommended to call `close()` to clean up the PIT and prevent Elasticsearch from consuming resources unnecessarily. This is only required if you are done iterating and have not yet paged through all of the results: the PIT will automatically be closed for you once you reach the last page of results, or if the underlying call to `find` fails for any reason. - -Signature: - -```typescript -close: () => Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.find.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.find.md deleted file mode 100644 index 29d4668becffc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.find.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ISavedObjectsPointInTimeFinder](./kibana-plugin-core-server.isavedobjectspointintimefinder.md) > [find](./kibana-plugin-core-server.isavedobjectspointintimefinder.find.md) - -## ISavedObjectsPointInTimeFinder.find property - -An async generator which wraps calls to `savedObjectsClient.find` and iterates over multiple pages of results using `_pit` and `search_after`. This will open a new Point-In-Time (PIT), and continue paging until a set of results is received that's smaller than the designated `perPage` size. - -Signature: - -```typescript -find: () => AsyncGenerator>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.md deleted file mode 100644 index 748ffbdc3c4e8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectspointintimefinder.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ISavedObjectsPointInTimeFinder](./kibana-plugin-core-server.isavedobjectspointintimefinder.md) - -## ISavedObjectsPointInTimeFinder interface - - -Signature: - -```typescript -export interface ISavedObjectsPointInTimeFinder -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [close](./kibana-plugin-core-server.isavedobjectspointintimefinder.close.md) | () => Promise<void> | Closes the Point-In-Time associated with this finder instance.Once you have retrieved all of the results you need, it is recommended to call close() to clean up the PIT and prevent Elasticsearch from consuming resources unnecessarily. This is only required if you are done iterating and have not yet paged through all of the results: the PIT will automatically be closed for you once you reach the last page of results, or if the underlying call to find fails for any reason. | -| [find](./kibana-plugin-core-server.isavedobjectspointintimefinder.find.md) | () => AsyncGenerator<SavedObjectsFindResponse<T, A>> | An async generator which wraps calls to savedObjectsClient.find and iterates over multiple pages of results using _pit and search_after. This will open a new Point-In-Time (PIT), and continue paging until a set of results is received that's smaller than the designated perPage size. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsrepository.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjectsrepository.md deleted file mode 100644 index 90cd2d605da8c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjectsrepository.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ISavedObjectsRepository](./kibana-plugin-core-server.isavedobjectsrepository.md) - -## ISavedObjectsRepository type - -See [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) - -Signature: - -```typescript -export declare type ISavedObjectsRepository = Pick; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.isavedobjecttyperegistry.md b/docs/development/core/server/kibana-plugin-core-server.isavedobjecttyperegistry.md deleted file mode 100644 index f9c621885c001..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.isavedobjecttyperegistry.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ISavedObjectTypeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) - -## ISavedObjectTypeRegistry type - -See [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) for documentation. - -Signature: - -```typescript -export declare type ISavedObjectTypeRegistry = Omit; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.ascurrentuser.md b/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.ascurrentuser.md deleted file mode 100644 index ddc6357bb8835..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.ascurrentuser.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IScopedClusterClient](./kibana-plugin-core-server.iscopedclusterclient.md) > [asCurrentUser](./kibana-plugin-core-server.iscopedclusterclient.ascurrentuser.md) - -## IScopedClusterClient.asCurrentUser property - -A [client](./kibana-plugin-core-server.elasticsearchclient.md) to be used to query the elasticsearch cluster on behalf of the user that initiated the request to the Kibana server. - -Signature: - -```typescript -readonly asCurrentUser: ElasticsearchClient; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.asinternaluser.md b/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.asinternaluser.md deleted file mode 100644 index f7f308aa13161..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.asinternaluser.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IScopedClusterClient](./kibana-plugin-core-server.iscopedclusterclient.md) > [asInternalUser](./kibana-plugin-core-server.iscopedclusterclient.asinternaluser.md) - -## IScopedClusterClient.asInternalUser property - -A [client](./kibana-plugin-core-server.elasticsearchclient.md) to be used to query the elasticsearch cluster on behalf of the internal Kibana user. - -Signature: - -```typescript -readonly asInternalUser: ElasticsearchClient; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md b/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md deleted file mode 100644 index f0d75f2f08fe4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iscopedclusterclient.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IScopedClusterClient](./kibana-plugin-core-server.iscopedclusterclient.md) - -## IScopedClusterClient interface - -Serves the same purpose as the normal [cluster client](./kibana-plugin-core-server.iclusterclient.md) but exposes an additional `asCurrentUser` method that doesn't use credentials of the Kibana internal user (as `asInternalUser` does) to request Elasticsearch API, but rather passes HTTP headers extracted from the current user request to the API instead. - -Signature: - -```typescript -export interface IScopedClusterClient -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [asCurrentUser](./kibana-plugin-core-server.iscopedclusterclient.ascurrentuser.md) | ElasticsearchClient | A [client](./kibana-plugin-core-server.elasticsearchclient.md) to be used to query the elasticsearch cluster on behalf of the user that initiated the request to the Kibana server. | -| [asInternalUser](./kibana-plugin-core-server.iscopedclusterclient.asinternaluser.md) | ElasticsearchClient | A [client](./kibana-plugin-core-server.elasticsearchclient.md) to be used to query the elasticsearch cluster on behalf of the internal Kibana user. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.get.md b/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.get.md deleted file mode 100644 index 36252e37d2f5e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.get.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) > [get](./kibana-plugin-core-server.iuisettingsclient.get.md) - -## IUiSettingsClient.get property - -Retrieves uiSettings values set by the user with fallbacks to default values if not specified. - -Signature: - -```typescript -get: (key: string) => Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getall.md b/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getall.md deleted file mode 100644 index d1cc06dd83484..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getall.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) > [getAll](./kibana-plugin-core-server.iuisettingsclient.getall.md) - -## IUiSettingsClient.getAll property - -Retrieves a set of all uiSettings values set by the user with fallbacks to default values if not specified. - -Signature: - -```typescript -getAll: () => Promise>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getregistered.md b/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getregistered.md deleted file mode 100644 index 71a2bbf88472e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getregistered.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) > [getRegistered](./kibana-plugin-core-server.iuisettingsclient.getregistered.md) - -## IUiSettingsClient.getRegistered property - -Returns registered uiSettings values [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) - -Signature: - -```typescript -getRegistered: () => Readonly>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getuserprovided.md b/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getuserprovided.md deleted file mode 100644 index 93d5f33709379..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.getuserprovided.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) > [getUserProvided](./kibana-plugin-core-server.iuisettingsclient.getuserprovided.md) - -## IUiSettingsClient.getUserProvided property - -Retrieves a set of all uiSettings values set by the user. - -Signature: - -```typescript -getUserProvided: () => Promise>>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.isoverridden.md b/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.isoverridden.md deleted file mode 100644 index c9af118895f13..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.isoverridden.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) > [isOverridden](./kibana-plugin-core-server.iuisettingsclient.isoverridden.md) - -## IUiSettingsClient.isOverridden property - -Shows whether the uiSettings value set by the user. - -Signature: - -```typescript -isOverridden: (key: string) => boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.issensitive.md b/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.issensitive.md deleted file mode 100644 index a6f263e0b0f55..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.issensitive.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) > [isSensitive](./kibana-plugin-core-server.iuisettingsclient.issensitive.md) - -## IUiSettingsClient.isSensitive property - -Shows whether the uiSetting is a sensitive value. Used by telemetry to not send sensitive values. - -Signature: - -```typescript -isSensitive: (key: string) => boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.md b/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.md deleted file mode 100644 index ad7819719e14a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) - -## IUiSettingsClient interface - -Server-side client that provides access to the advanced settings stored in elasticsearch. The settings provide control over the behavior of the Kibana application. For example, a user can specify how to display numeric or date fields. Users can adjust the settings via Management UI. - -Signature: - -```typescript -export interface IUiSettingsClient -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [get](./kibana-plugin-core-server.iuisettingsclient.get.md) | <T = any>(key: string) => Promise<T> | Retrieves uiSettings values set by the user with fallbacks to default values if not specified. | -| [getAll](./kibana-plugin-core-server.iuisettingsclient.getall.md) | <T = any>() => Promise<Record<string, T>> | Retrieves a set of all uiSettings values set by the user with fallbacks to default values if not specified. | -| [getRegistered](./kibana-plugin-core-server.iuisettingsclient.getregistered.md) | () => Readonly<Record<string, PublicUiSettingsParams>> | Returns registered uiSettings values [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) | -| [getUserProvided](./kibana-plugin-core-server.iuisettingsclient.getuserprovided.md) | <T = any>() => Promise<Record<string, UserProvidedValues<T>>> | Retrieves a set of all uiSettings values set by the user. | -| [isOverridden](./kibana-plugin-core-server.iuisettingsclient.isoverridden.md) | (key: string) => boolean | Shows whether the uiSettings value set by the user. | -| [isSensitive](./kibana-plugin-core-server.iuisettingsclient.issensitive.md) | (key: string) => boolean | Shows whether the uiSetting is a sensitive value. Used by telemetry to not send sensitive values. | -| [remove](./kibana-plugin-core-server.iuisettingsclient.remove.md) | (key: string) => Promise<void> | Removes uiSettings value by key. | -| [removeMany](./kibana-plugin-core-server.iuisettingsclient.removemany.md) | (keys: string\[\]) => Promise<void> | Removes multiple uiSettings values by keys. | -| [set](./kibana-plugin-core-server.iuisettingsclient.set.md) | (key: string, value: any) => Promise<void> | Writes uiSettings value and marks it as set by the user. | -| [setMany](./kibana-plugin-core-server.iuisettingsclient.setmany.md) | (changes: Record<string, any>) => Promise<void> | Writes multiple uiSettings values and marks them as set by the user. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.remove.md b/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.remove.md deleted file mode 100644 index 3496e30470eab..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.remove.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) > [remove](./kibana-plugin-core-server.iuisettingsclient.remove.md) - -## IUiSettingsClient.remove property - -Removes uiSettings value by key. - -Signature: - -```typescript -remove: (key: string) => Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.removemany.md b/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.removemany.md deleted file mode 100644 index 8b76ea5cdec07..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.removemany.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) > [removeMany](./kibana-plugin-core-server.iuisettingsclient.removemany.md) - -## IUiSettingsClient.removeMany property - -Removes multiple uiSettings values by keys. - -Signature: - -```typescript -removeMany: (keys: string[]) => Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.set.md b/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.set.md deleted file mode 100644 index c5254d1df8040..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.set.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) > [set](./kibana-plugin-core-server.iuisettingsclient.set.md) - -## IUiSettingsClient.set property - -Writes uiSettings value and marks it as set by the user. - -Signature: - -```typescript -set: (key: string, value: any) => Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.setmany.md b/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.setmany.md deleted file mode 100644 index cb03889c7f4bf..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.iuisettingsclient.setmany.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) > [setMany](./kibana-plugin-core-server.iuisettingsclient.setmany.md) - -## IUiSettingsClient.setMany property - -Writes multiple uiSettings values and marks them as set by the user. - -Signature: - -```typescript -setMany: (changes: Record) => Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanaexecutioncontext.md b/docs/development/core/server/kibana-plugin-core-server.kibanaexecutioncontext.md deleted file mode 100644 index 792af8f693869..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanaexecutioncontext.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaExecutionContext](./kibana-plugin-core-server.kibanaexecutioncontext.md) - -## KibanaExecutionContext type - -Represents a meta-information about a Kibana entity initiating a search request. - -Signature: - -```typescript -export declare type KibanaExecutionContext = { - readonly type?: string; - readonly name?: string; - readonly page?: string; - readonly id?: string; - readonly description?: string; - readonly url?: string; - child?: KibanaExecutionContext; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest._constructor_.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest._constructor_.md deleted file mode 100644 index 682d6c87629fc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest._constructor_.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [(constructor)](./kibana-plugin-core-server.kibanarequest._constructor_.md) - -## KibanaRequest.(constructor) - -Constructs a new instance of the `KibanaRequest` class - -Signature: - -```typescript -constructor(request: Request, params: Params, query: Query, body: Body, withoutSecretHeaders: boolean); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| request | Request | | -| params | Params | | -| query | Query | | -| body | Body | | -| withoutSecretHeaders | boolean | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.auth.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.auth.md deleted file mode 100644 index 7049c06dfa06c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.auth.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [auth](./kibana-plugin-core-server.kibanarequest.auth.md) - -## KibanaRequest.auth property - -Signature: - -```typescript -readonly auth: { - isAuthenticated: boolean; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.body.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.body.md deleted file mode 100644 index 968395af9a3f6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.body.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [body](./kibana-plugin-core-server.kibanarequest.body.md) - -## KibanaRequest.body property - -Signature: - -```typescript -readonly body: Body; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.events.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.events.md deleted file mode 100644 index 5662348242384..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.events.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [events](./kibana-plugin-core-server.kibanarequest.events.md) - -## KibanaRequest.events property - -Request events [KibanaRequestEvents](./kibana-plugin-core-server.kibanarequestevents.md) - -Signature: - -```typescript -readonly events: KibanaRequestEvents; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.headers.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.headers.md deleted file mode 100644 index 3dfb9b49e83ff..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.headers.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [headers](./kibana-plugin-core-server.kibanarequest.headers.md) - -## KibanaRequest.headers property - -Readonly copy of incoming request headers. - -Signature: - -```typescript -readonly headers: Headers; -``` - -## Remarks - -This property will contain a `filtered` copy of request headers. - diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.id.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.id.md deleted file mode 100644 index 8cad5972cc164..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.id.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [id](./kibana-plugin-core-server.kibanarequest.id.md) - -## KibanaRequest.id property - -A identifier to identify this request. - -Signature: - -```typescript -readonly id: string; -``` - -## Remarks - -Depending on the user's configuration, this value may be sourced from the incoming request's `X-Opaque-Id` header which is not guaranteed to be unique per request. - diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.issystemrequest.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.issystemrequest.md deleted file mode 100644 index e5ac6e23b2116..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.issystemrequest.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [isSystemRequest](./kibana-plugin-core-server.kibanarequest.issystemrequest.md) - -## KibanaRequest.isSystemRequest property - -Whether or not the request is a "system request" rather than an application-level request. Can be set on the client using the `HttpFetchOptions#asSystemRequest` option. - -Signature: - -```typescript -readonly isSystemRequest: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.md deleted file mode 100644 index f4e2dda2d5499..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.md +++ /dev/null @@ -1,38 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) - -## KibanaRequest class - -Kibana specific abstraction for an incoming request. - -Signature: - -```typescript -export declare class KibanaRequest -``` - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(request, params, query, body, withoutSecretHeaders)](./kibana-plugin-core-server.kibanarequest._constructor_.md) | | Constructs a new instance of the KibanaRequest class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [auth](./kibana-plugin-core-server.kibanarequest.auth.md) | | { isAuthenticated: boolean; } | | -| [body](./kibana-plugin-core-server.kibanarequest.body.md) | | Body | | -| [events](./kibana-plugin-core-server.kibanarequest.events.md) | | KibanaRequestEvents | Request events [KibanaRequestEvents](./kibana-plugin-core-server.kibanarequestevents.md) | -| [headers](./kibana-plugin-core-server.kibanarequest.headers.md) | | Headers | Readonly copy of incoming request headers. | -| [id](./kibana-plugin-core-server.kibanarequest.id.md) | | string | A identifier to identify this request. | -| [isSystemRequest](./kibana-plugin-core-server.kibanarequest.issystemrequest.md) | | boolean | Whether or not the request is a "system request" rather than an application-level request. Can be set on the client using the HttpFetchOptions#asSystemRequest option. | -| [params](./kibana-plugin-core-server.kibanarequest.params.md) | | Params | | -| [query](./kibana-plugin-core-server.kibanarequest.query.md) | | Query | | -| [rewrittenUrl?](./kibana-plugin-core-server.kibanarequest.rewrittenurl.md) | | URL | (Optional) URL rewritten in onPreRouting request interceptor. | -| [route](./kibana-plugin-core-server.kibanarequest.route.md) | | RecursiveReadonly<KibanaRequestRoute<Method>> | matched route details | -| [socket](./kibana-plugin-core-server.kibanarequest.socket.md) | | IKibanaSocket | [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) | -| [url](./kibana-plugin-core-server.kibanarequest.url.md) | | URL | a WHATWG URL standard object. | -| [uuid](./kibana-plugin-core-server.kibanarequest.uuid.md) | | string | A UUID to identify this request. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.params.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.params.md deleted file mode 100644 index ff2e4ac2f11eb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.params.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [params](./kibana-plugin-core-server.kibanarequest.params.md) - -## KibanaRequest.params property - -Signature: - -```typescript -readonly params: Params; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.query.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.query.md deleted file mode 100644 index b111aa3d66137..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.query.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [query](./kibana-plugin-core-server.kibanarequest.query.md) - -## KibanaRequest.query property - -Signature: - -```typescript -readonly query: Query; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.rewrittenurl.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.rewrittenurl.md deleted file mode 100644 index fb547330ee6ea..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.rewrittenurl.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [rewrittenUrl](./kibana-plugin-core-server.kibanarequest.rewrittenurl.md) - -## KibanaRequest.rewrittenUrl property - -URL rewritten in onPreRouting request interceptor. - -Signature: - -```typescript -readonly rewrittenUrl?: URL; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.route.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.route.md deleted file mode 100644 index b98844775abcc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.route.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [route](./kibana-plugin-core-server.kibanarequest.route.md) - -## KibanaRequest.route property - -matched route details - -Signature: - -```typescript -readonly route: RecursiveReadonly>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.socket.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.socket.md deleted file mode 100644 index 2e18cc336d222..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.socket.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [socket](./kibana-plugin-core-server.kibanarequest.socket.md) - -## KibanaRequest.socket property - -[IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) - -Signature: - -```typescript -readonly socket: IKibanaSocket; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.url.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.url.md deleted file mode 100644 index b72760e272bb2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.url.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [url](./kibana-plugin-core-server.kibanarequest.url.md) - -## KibanaRequest.url property - -a WHATWG URL standard object. - -Signature: - -```typescript -readonly url: URL; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.uuid.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequest.uuid.md deleted file mode 100644 index 8b980b82d0adb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequest.uuid.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) > [uuid](./kibana-plugin-core-server.kibanarequest.uuid.md) - -## KibanaRequest.uuid property - -A UUID to identify this request. - -Signature: - -```typescript -readonly uuid: string; -``` - -## Remarks - -This value is NOT sourced from the incoming request's `X-Opaque-Id` header. it is always a UUID uniquely identifying the request. - diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.aborted_.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.aborted_.md deleted file mode 100644 index ea16a0529f9f1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.aborted_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequestEvents](./kibana-plugin-core-server.kibanarequestevents.md) > [aborted$](./kibana-plugin-core-server.kibanarequestevents.aborted_.md) - -## KibanaRequestEvents.aborted$ property - -Observable that emits once if and when the request has been aborted. - -Signature: - -```typescript -aborted$: Observable; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.completed_.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.completed_.md deleted file mode 100644 index c9f8ab11f6b12..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.completed_.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequestEvents](./kibana-plugin-core-server.kibanarequestevents.md) > [completed$](./kibana-plugin-core-server.kibanarequestevents.completed_.md) - -## KibanaRequestEvents.completed$ property - -Observable that emits once if and when the request has been completely handled. - -Signature: - -```typescript -completed$: Observable; -``` - -## Remarks - -The request may be considered completed if: - A response has been sent to the client; or - The request was aborted. - diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.md deleted file mode 100644 index c61e4aeec7c85..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequestevents.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequestEvents](./kibana-plugin-core-server.kibanarequestevents.md) - -## KibanaRequestEvents interface - -Request events. - -Signature: - -```typescript -export interface KibanaRequestEvents -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aborted$](./kibana-plugin-core-server.kibanarequestevents.aborted_.md) | Observable<void> | Observable that emits once if and when the request has been aborted. | -| [completed$](./kibana-plugin-core-server.kibanarequestevents.completed_.md) | Observable<void> | Observable that emits once if and when the request has been completely handled. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.md deleted file mode 100644 index 196c352e21f8a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequestRoute](./kibana-plugin-core-server.kibanarequestroute.md) - -## KibanaRequestRoute interface - -Request specific route information exposed to a handler. - -Signature: - -```typescript -export interface KibanaRequestRoute -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [method](./kibana-plugin-core-server.kibanarequestroute.method.md) | Method | | -| [options](./kibana-plugin-core-server.kibanarequestroute.options.md) | KibanaRequestRouteOptions<Method> | | -| [path](./kibana-plugin-core-server.kibanarequestroute.path.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.method.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.method.md deleted file mode 100644 index a1549df34d1b3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.method.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequestRoute](./kibana-plugin-core-server.kibanarequestroute.md) > [method](./kibana-plugin-core-server.kibanarequestroute.method.md) - -## KibanaRequestRoute.method property - -Signature: - -```typescript -method: Method; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.options.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.options.md deleted file mode 100644 index 4d2b4253c69a3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.options.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequestRoute](./kibana-plugin-core-server.kibanarequestroute.md) > [options](./kibana-plugin-core-server.kibanarequestroute.options.md) - -## KibanaRequestRoute.options property - -Signature: - -```typescript -options: KibanaRequestRouteOptions; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.path.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.path.md deleted file mode 100644 index 32357ba4534a6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequestroute.path.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequestRoute](./kibana-plugin-core-server.kibanarequestroute.md) > [path](./kibana-plugin-core-server.kibanarequestroute.path.md) - -## KibanaRequestRoute.path property - -Signature: - -```typescript -path: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanarequestrouteoptions.md b/docs/development/core/server/kibana-plugin-core-server.kibanarequestrouteoptions.md deleted file mode 100644 index f3d77d930cd9f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanarequestrouteoptions.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KibanaRequestRouteOptions](./kibana-plugin-core-server.kibanarequestrouteoptions.md) - -## KibanaRequestRouteOptions type - -Route options: If 'GET' or 'OPTIONS' method, body options won't be returned. - -Signature: - -```typescript -export declare type KibanaRequestRouteOptions = Method extends 'get' | 'options' ? Required, 'body'>> : Required>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.kibanaresponsefactory.md b/docs/development/core/server/kibana-plugin-core-server.kibanaresponsefactory.md deleted file mode 100644 index e02f208ae86ac..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.kibanaresponsefactory.md +++ /dev/null @@ -1,130 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [kibanaResponseFactory](./kibana-plugin-core-server.kibanaresponsefactory.md) - -## kibanaResponseFactory variable - -Set of helpers used to create `KibanaResponse` to form HTTP response on an incoming request. Should be returned as a result of [RequestHandler](./kibana-plugin-core-server.requesthandler.md) execution. - -Signature: - -```typescript -kibanaResponseFactory: { - custom: | Buffer | Error | { - message: string | Error; - attributes?: ResponseErrorAttributes | undefined; - } | Stream | undefined>(options: CustomHttpResponseOptions) => KibanaResponse; - badRequest: (options?: ErrorHttpResponseOptions) => KibanaResponse; - unauthorized: (options?: ErrorHttpResponseOptions) => KibanaResponse; - forbidden: (options?: ErrorHttpResponseOptions) => KibanaResponse; - notFound: (options?: ErrorHttpResponseOptions) => KibanaResponse; - conflict: (options?: ErrorHttpResponseOptions) => KibanaResponse; - customError: (options: CustomHttpResponseOptions) => KibanaResponse; - redirected: (options: RedirectResponseOptions) => KibanaResponse | Buffer | Stream>; - ok: (options?: HttpResponseOptions) => KibanaResponse | Buffer | Stream>; - accepted: (options?: HttpResponseOptions) => KibanaResponse | Buffer | Stream>; - noContent: (options?: HttpResponseOptions) => KibanaResponse; -} -``` - -## Example - -1. Successful response. Supported types of response body are: - `undefined`, no content to send. - `string`, send text - `JSON`, send JSON object, HTTP server will throw if given object is not valid (has circular references, for example) - `Stream` send data stream - `Buffer` send binary stream - -```js -return response.ok(); -return response.ok({ body: 'ack' }); -return response.ok({ body: { id: '1' } }); -return response.ok({ body: Buffer.from(...) }); - -const stream = new Stream.PassThrough(); -fs.createReadStream('./file').pipe(stream); -return res.ok({ body: stream }); -``` -HTTP headers are configurable via response factory parameter `options` [HttpResponseOptions](./kibana-plugin-core-server.httpresponseoptions.md). - -```js -return response.ok({ - body: { id: '1' }, - headers: { - 'content-type': 'application/json' - } -}); -``` -2. Redirection response. Redirection URL is configures via 'Location' header. - -```js -return response.redirected({ - body: 'The document has moved', - headers: { - location: '/new-url', - }, -}); -``` -3. Error response. You may pass an error message to the client, where error message can be: - `string` send message text - `Error` send the message text of given Error object. - `{ message: string | Error, attributes: {data: Record, ...} }` - send message text and attach additional error data. - -```js -return response.unauthorized({ - body: 'User has no access to the requested resource.', - headers: { - 'WWW-Authenticate': 'challenge', - } -}) -return response.badRequest(); -return response.badRequest({ body: 'validation error' }); - -try { - // ... -} catch(error){ - return response.badRequest({ body: error }); -} - -return response.badRequest({ - body:{ - message: 'validation error', - attributes: { - requestBody: request.body, - failedFields: validationResult - } - } -}); - -try { - // ... -} catch(error) { - return response.badRequest({ - body: error - }); -} - -``` -4. Custom response. `ResponseFactory` may not cover your use case, so you can use the `custom` function to customize the response. - -```js -return response.custom({ - body: 'ok', - statusCode: 201, - headers: { - location: '/created-url' - } -}) -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.knownheaders.md b/docs/development/core/server/kibana-plugin-core-server.knownheaders.md deleted file mode 100644 index cc7ca472e5777..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.knownheaders.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [KnownHeaders](./kibana-plugin-core-server.knownheaders.md) - -## KnownHeaders type - -Set of well-known HTTP headers. - -Signature: - -```typescript -export declare type KnownHeaders = KnownKeys; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.lifecycleresponsefactory.md b/docs/development/core/server/kibana-plugin-core-server.lifecycleresponsefactory.md deleted file mode 100644 index c78b998aef9e9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.lifecycleresponsefactory.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [LifecycleResponseFactory](./kibana-plugin-core-server.lifecycleresponsefactory.md) - -## LifecycleResponseFactory type - -Creates an object containing redirection or error response with error details, HTTP headers, and other data transmitted to the client. - -Signature: - -```typescript -export declare type LifecycleResponseFactory = typeof lifecycleResponseFactory; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.makeusagefromschema.md b/docs/development/core/server/kibana-plugin-core-server.makeusagefromschema.md deleted file mode 100644 index f47d01a2d09e8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.makeusagefromschema.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [MakeUsageFromSchema](./kibana-plugin-core-server.makeusagefromschema.md) - -## MakeUsageFromSchema type - -List of configuration values that will be exposed to usage collection. If parent node or actual config path is set to `true` then the actual value of these configs will be reoprted. If parent node or actual config path is set to `false` then the config will be reported as \[redacted\]. - -Signature: - -```typescript -export declare type MakeUsageFromSchema = { - [Key in keyof T]?: T[Key] extends Maybe ? false : T[Key] extends Maybe ? boolean : T[Key] extends Maybe ? MakeUsageFromSchema | boolean : boolean; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.md b/docs/development/core/server/kibana-plugin-core-server.md deleted file mode 100644 index 77d61ff7f373b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.md +++ /dev/null @@ -1,338 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) - -## kibana-plugin-core-server package - -The Kibana Core APIs for server-side plugins. - -A plugin requires a `kibana.json` file at it's root directory that follows [the manfiest schema](./kibana-plugin-core-server.pluginmanifest.md) to define static plugin information required to load the plugin. - -A plugin's `server/index` file must contain a named import, `plugin`, that implements [PluginInitializer](./kibana-plugin-core-server.plugininitializer.md) which returns an object that implements . - -The plugin integrates with the core system via lifecycle events: `setup`, `start`, and `stop`. In each lifecycle method, the plugin will receive the corresponding core services available (either [CoreSetup](./kibana-plugin-core-server.coresetup.md) or [CoreStart](./kibana-plugin-core-server.corestart.md)) and any interfaces returned by dependency plugins' lifecycle method. Anything returned by the plugin's lifecycle method will be exposed to downstream dependencies when their corresponding lifecycle methods are invoked. - -## Classes - -| Class | Description | -| --- | --- | -| [BasePath](./kibana-plugin-core-server.basepath.md) | Access or manipulate the Kibana base path | -| [CspConfig](./kibana-plugin-core-server.cspconfig.md) | CSP configuration for use in Kibana. | -| [ElasticsearchConfig](./kibana-plugin-core-server.elasticsearchconfig.md) | Wrapper of config schema. | -| [EventLoopDelaysMonitor](./kibana-plugin-core-server.eventloopdelaysmonitor.md) | | -| [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) | Kibana specific abstraction for an incoming request. | -| [RouteValidationError](./kibana-plugin-core-server.routevalidationerror.md) | Error to return when the validation is not successful. | -| [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) | | -| [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) | | -| [SavedObjectsExportError](./kibana-plugin-core-server.savedobjectsexporterror.md) | | -| [SavedObjectsImportError](./kibana-plugin-core-server.savedobjectsimporterror.md) | | -| [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) | | -| [SavedObjectsSerializer](./kibana-plugin-core-server.savedobjectsserializer.md) | A serializer that can be used to manually convert [raw](./kibana-plugin-core-server.savedobjectsrawdoc.md) or [sanitized](./kibana-plugin-core-server.savedobjectsanitizeddoc.md) documents to the other kind. | -| [SavedObjectsUtils](./kibana-plugin-core-server.savedobjectsutils.md) | | -| [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) | Registry holding information about all the registered [saved object types](./kibana-plugin-core-server.savedobjectstype.md). | - -## Enumerations - -| Enumeration | Description | -| --- | --- | -| [AuthResultType](./kibana-plugin-core-server.authresulttype.md) | | -| [AuthStatus](./kibana-plugin-core-server.authstatus.md) | Status indicating an outcome of the authentication. | - -## Interfaces - -| Interface | Description | -| --- | --- | -| [AppCategory](./kibana-plugin-core-server.appcategory.md) | A category definition for nav links to know where to sort them in the left hand nav | -| [AsyncPlugin](./kibana-plugin-core-server.asyncplugin.md) | A plugin with asynchronous lifecycle methods. | -| [Authenticated](./kibana-plugin-core-server.authenticated.md) | | -| [AuthNotHandled](./kibana-plugin-core-server.authnothandled.md) | | -| [AuthRedirected](./kibana-plugin-core-server.authredirected.md) | | -| [AuthRedirectedParams](./kibana-plugin-core-server.authredirectedparams.md) | Result of auth redirection. | -| [AuthResultParams](./kibana-plugin-core-server.authresultparams.md) | Result of successful authentication. | -| [AuthToolkit](./kibana-plugin-core-server.authtoolkit.md) | A tool set defining an outcome of Auth interceptor for incoming request. | -| [BaseDeprecationDetails](./kibana-plugin-core-server.basedeprecationdetails.md) | Base properties shared by all types of deprecations | -| [Capabilities](./kibana-plugin-core-server.capabilities.md) | The read-only set of capabilities available for the current UI session. Capabilities are simple key-value pairs of (string, boolean), where the string denotes the capability ID, and the boolean is a flag indicating if the capability is enabled or disabled. | -| [CapabilitiesSetup](./kibana-plugin-core-server.capabilitiessetup.md) | APIs to manage the [Capabilities](./kibana-plugin-core-server.capabilities.md) that will be used by the application.Plugins relying on capabilities to toggle some of their features should register them during the setup phase using the registerProvider method.Plugins having the responsibility to restrict capabilities depending on a given context should register their capabilities switcher using the registerSwitcher method.Refers to the methods documentation for complete description and examples. | -| [CapabilitiesStart](./kibana-plugin-core-server.capabilitiesstart.md) | APIs to access the application [Capabilities](./kibana-plugin-core-server.capabilities.md). | -| [ConfigDeprecationDetails](./kibana-plugin-core-server.configdeprecationdetails.md) | | -| [ContextSetup](./kibana-plugin-core-server.contextsetup.md) | An object that handles registration of context providers and configuring handlers with context. | -| [CorePreboot](./kibana-plugin-core-server.corepreboot.md) | Context passed to the setup method of preboot plugins. | -| [CoreRequestHandlerContext](./kibana-plugin-core-server.corerequesthandlercontext.md) | The core context provided to route handler.Provides the following clients and services: - [savedObjects.client](./kibana-plugin-core-server.savedobjectsclient.md) - Saved Objects client which uses the credentials of the incoming request - [savedObjects.typeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) - Type registry containing all the registered types. - [elasticsearch.client](./kibana-plugin-core-server.iscopedclusterclient.md) - Elasticsearch data client which uses the credentials of the incoming request - [uiSettings.client](./kibana-plugin-core-server.iuisettingsclient.md) - uiSettings client which uses the credentials of the incoming request | -| [CoreSetup](./kibana-plugin-core-server.coresetup.md) | Context passed to the setup method of standard plugins. | -| [CoreStart](./kibana-plugin-core-server.corestart.md) | Context passed to the plugins start method. | -| [CoreStatus](./kibana-plugin-core-server.corestatus.md) | Status of core services. | -| [CountResponse](./kibana-plugin-core-server.countresponse.md) | | -| [CustomHttpResponseOptions](./kibana-plugin-core-server.customhttpresponseoptions.md) | HTTP response parameters for a response with adjustable status code. | -| [DeleteDocumentResponse](./kibana-plugin-core-server.deletedocumentresponse.md) | | -| [DeprecationsClient](./kibana-plugin-core-server.deprecationsclient.md) | Server-side client that provides access to fetch all Kibana deprecations | -| [DeprecationSettings](./kibana-plugin-core-server.deprecationsettings.md) | UiSettings deprecation field options. | -| [DeprecationsServiceSetup](./kibana-plugin-core-server.deprecationsservicesetup.md) | The deprecations service provides a way for the Kibana platform to communicate deprecated features and configs with its users. These deprecations are only communicated if the deployment is using these features. Allowing for a user tailored experience for upgrading the stack version.The Deprecation service is consumed by the upgrade assistant to assist with the upgrade experience.If a deprecated feature can be resolved without manual user intervention. Using correctiveActions.api allows the Upgrade Assistant to use this api to correct the deprecation upon a user trigger. | -| [ElasticsearchConfigPreboot](./kibana-plugin-core-server.elasticsearchconfigpreboot.md) | A limited set of Elasticsearch configuration entries exposed to the preboot plugins at setup. | -| [ElasticsearchErrorDetails](./kibana-plugin-core-server.elasticsearcherrordetails.md) | | -| [ElasticsearchServicePreboot](./kibana-plugin-core-server.elasticsearchservicepreboot.md) | | -| [ElasticsearchServiceSetup](./kibana-plugin-core-server.elasticsearchservicesetup.md) | | -| [ElasticsearchServiceStart](./kibana-plugin-core-server.elasticsearchservicestart.md) | | -| [ElasticsearchStatusMeta](./kibana-plugin-core-server.elasticsearchstatusmeta.md) | | -| [ErrorHttpResponseOptions](./kibana-plugin-core-server.errorhttpresponseoptions.md) | HTTP response parameters | -| [ExecutionContextSetup](./kibana-plugin-core-server.executioncontextsetup.md) | | -| [FakeRequest](./kibana-plugin-core-server.fakerequest.md) | Fake request object created manually by Kibana plugins. | -| [FeatureDeprecationDetails](./kibana-plugin-core-server.featuredeprecationdetails.md) | | -| [GetDeprecationsContext](./kibana-plugin-core-server.getdeprecationscontext.md) | | -| [GetResponse](./kibana-plugin-core-server.getresponse.md) | | -| [HttpAuth](./kibana-plugin-core-server.httpauth.md) | | -| [HttpResources](./kibana-plugin-core-server.httpresources.md) | HttpResources service is responsible for serving static & dynamic assets for Kibana application via HTTP. Provides API allowing plug-ins to respond with: - a pre-configured HTML page bootstrapping Kibana client app - custom HTML page - custom JS script file. | -| [HttpResourcesRenderOptions](./kibana-plugin-core-server.httpresourcesrenderoptions.md) | Allows to configure HTTP response parameters | -| [HttpResourcesServiceToolkit](./kibana-plugin-core-server.httpresourcesservicetoolkit.md) | Extended set of [KibanaResponseFactory](./kibana-plugin-core-server.kibanaresponsefactory.md) helpers used to respond with HTML or JS resource. | -| [HttpResponseOptions](./kibana-plugin-core-server.httpresponseoptions.md) | HTTP response parameters | -| [HttpServerInfo](./kibana-plugin-core-server.httpserverinfo.md) | Information about what hostname, port, and protocol the server process is running on. Note that this may not match the URL that end-users access Kibana at. For the public URL, see [BasePath.publicBaseUrl](./kibana-plugin-core-server.basepath.publicbaseurl.md). | -| [HttpServicePreboot](./kibana-plugin-core-server.httpservicepreboot.md) | Kibana HTTP Service provides an abstraction to work with the HTTP stack at the preboot stage. This functionality allows Kibana to serve user requests even before Kibana becomes fully operational. Only Core and preboot plugins can define HTTP routes at this stage. | -| [HttpServiceSetup](./kibana-plugin-core-server.httpservicesetup.md) | Kibana HTTP Service provides own abstraction for work with HTTP stack. Plugins don't have direct access to hapi server and its primitives anymore. Moreover, plugins shouldn't rely on the fact that HTTP Service uses one or another library under the hood. This gives the platform flexibility to upgrade or changing our internal HTTP stack without breaking plugins. If the HTTP Service lacks functionality you need, we are happy to discuss and support your needs. | -| [HttpServiceStart](./kibana-plugin-core-server.httpservicestart.md) | | -| [I18nServiceSetup](./kibana-plugin-core-server.i18nservicesetup.md) | | -| [IClusterClient](./kibana-plugin-core-server.iclusterclient.md) | Represents an Elasticsearch cluster API client created by the platform. It allows to call API on behalf of the internal Kibana user and the actual user that is derived from the request headers (via asScoped(...)). | -| [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) | An object that handles registration of context providers and configuring handlers with context. | -| [ICspConfig](./kibana-plugin-core-server.icspconfig.md) | CSP configuration for use in Kibana. | -| [ICustomClusterClient](./kibana-plugin-core-server.icustomclusterclient.md) | See [IClusterClient](./kibana-plugin-core-server.iclusterclient.md) | -| [IExecutionContextContainer](./kibana-plugin-core-server.iexecutioncontextcontainer.md) | | -| [IExternalUrlConfig](./kibana-plugin-core-server.iexternalurlconfig.md) | External Url configuration for use in Kibana. | -| [IExternalUrlPolicy](./kibana-plugin-core-server.iexternalurlpolicy.md) | A policy describing whether access to an external destination is allowed. | -| [IKibanaResponse](./kibana-plugin-core-server.ikibanaresponse.md) | A response data object, expected to returned as a result of [RequestHandler](./kibana-plugin-core-server.requesthandler.md) execution | -| [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) | A tiny abstraction for TCP socket. | -| [IntervalHistogram](./kibana-plugin-core-server.intervalhistogram.md) | an IntervalHistogram object that samples and reports the event loop delay over time. The delays will be reported in milliseconds. | -| [IRenderOptions](./kibana-plugin-core-server.irenderoptions.md) | | -| [IRouter](./kibana-plugin-core-server.irouter.md) | Registers route handlers for specified resource path and method. See [RouteConfig](./kibana-plugin-core-server.routeconfig.md) and [RequestHandler](./kibana-plugin-core-server.requesthandler.md) for more information about arguments to route registrations. | -| [ISavedObjectsExporter](./kibana-plugin-core-server.isavedobjectsexporter.md) | Utility class used to export savedObjects. | -| [ISavedObjectsImporter](./kibana-plugin-core-server.isavedobjectsimporter.md) | Utility class used to import savedObjects. | -| [ISavedObjectsPointInTimeFinder](./kibana-plugin-core-server.isavedobjectspointintimefinder.md) | | -| [IScopedClusterClient](./kibana-plugin-core-server.iscopedclusterclient.md) | Serves the same purpose as the normal [cluster client](./kibana-plugin-core-server.iclusterclient.md) but exposes an additional asCurrentUser method that doesn't use credentials of the Kibana internal user (as asInternalUser does) to request Elasticsearch API, but rather passes HTTP headers extracted from the current user request to the API instead. | -| [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) | Server-side client that provides access to the advanced settings stored in elasticsearch. The settings provide control over the behavior of the Kibana application. For example, a user can specify how to display numeric or date fields. Users can adjust the settings via Management UI. | -| [KibanaRequestEvents](./kibana-plugin-core-server.kibanarequestevents.md) | Request events. | -| [KibanaRequestRoute](./kibana-plugin-core-server.kibanarequestroute.md) | Request specific route information exposed to a handler. | -| [MetricsServiceSetup](./kibana-plugin-core-server.metricsservicesetup.md) | APIs to retrieves metrics gathered and exposed by the core platform. | -| [NodesVersionCompatibility](./kibana-plugin-core-server.nodesversioncompatibility.md) | | -| [OnPostAuthToolkit](./kibana-plugin-core-server.onpostauthtoolkit.md) | A tool set defining an outcome of OnPostAuth interceptor for incoming request. | -| [OnPreAuthToolkit](./kibana-plugin-core-server.onpreauthtoolkit.md) | A tool set defining an outcome of OnPreAuth interceptor for incoming request. | -| [OnPreResponseExtensions](./kibana-plugin-core-server.onpreresponseextensions.md) | Additional data to extend a response. | -| [OnPreResponseInfo](./kibana-plugin-core-server.onpreresponseinfo.md) | Response status code. | -| [OnPreResponseRender](./kibana-plugin-core-server.onpreresponserender.md) | Additional data to extend a response when rendering a new body | -| [OnPreResponseToolkit](./kibana-plugin-core-server.onpreresponsetoolkit.md) | A tool set defining an outcome of OnPreResponse interceptor for incoming request. | -| [OnPreRoutingToolkit](./kibana-plugin-core-server.onpreroutingtoolkit.md) | A tool set defining an outcome of OnPreRouting interceptor for incoming request. | -| [OpsMetrics](./kibana-plugin-core-server.opsmetrics.md) | Regroups metrics gathered by all the collectors. This contains metrics about the os/runtime, the kibana process and the http server. | -| [OpsOsMetrics](./kibana-plugin-core-server.opsosmetrics.md) | OS related metrics | -| [OpsProcessMetrics](./kibana-plugin-core-server.opsprocessmetrics.md) | Process related metrics | -| [OpsServerMetrics](./kibana-plugin-core-server.opsservermetrics.md) | server related metrics | -| [Plugin\_2](./kibana-plugin-core-server.plugin_2.md) | The interface that should be returned by a PluginInitializer for a standard plugin. | -| [PluginConfigDescriptor](./kibana-plugin-core-server.pluginconfigdescriptor.md) | Describes a plugin configuration properties. | -| [PluginInitializerContext](./kibana-plugin-core-server.plugininitializercontext.md) | Context that's available to plugins during initialization stage. | -| [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) | Describes the set of required and optional properties plugin can define in its mandatory JSON manifest file. | -| [PollEsNodesVersionOptions](./kibana-plugin-core-server.pollesnodesversionoptions.md) | | -| [PrebootPlugin](./kibana-plugin-core-server.prebootplugin.md) | The interface that should be returned by a PluginInitializer for a preboot plugin. | -| [PrebootServicePreboot](./kibana-plugin-core-server.prebootservicepreboot.md) | Kibana Preboot Service allows to control the boot flow of Kibana. Preboot plugins can use it to hold the boot until certain condition is met. | -| [RegisterDeprecationsConfig](./kibana-plugin-core-server.registerdeprecationsconfig.md) | | -| [RequestHandlerContext](./kibana-plugin-core-server.requesthandlercontext.md) | Base context passed to a route handler. | -| [RequestHandlerContextBase](./kibana-plugin-core-server.requesthandlercontextbase.md) | \* | -| [ResolveCapabilitiesOptions](./kibana-plugin-core-server.resolvecapabilitiesoptions.md) | Defines a set of additional options for the resolveCapabilities method of [CapabilitiesStart](./kibana-plugin-core-server.capabilitiesstart.md). | -| [RouteConfig](./kibana-plugin-core-server.routeconfig.md) | Route specific configuration. | -| [RouteConfigOptions](./kibana-plugin-core-server.routeconfigoptions.md) | Additional route options. | -| [RouteConfigOptionsBody](./kibana-plugin-core-server.routeconfigoptionsbody.md) | Additional body options for a route | -| [RouteValidationResultFactory](./kibana-plugin-core-server.routevalidationresultfactory.md) | Validation result factory to be used in the custom validation function to return the valid data or validation errorsSee [RouteValidationFunction](./kibana-plugin-core-server.routevalidationfunction.md). | -| [RouteValidatorConfig](./kibana-plugin-core-server.routevalidatorconfig.md) | The configuration object to the RouteValidator class. Set params, query and/or body to specify the validation logic to follow for that property. | -| [RouteValidatorOptions](./kibana-plugin-core-server.routevalidatoroptions.md) | Additional options for the RouteValidator class to modify its default behaviour. | -| [SavedObject](./kibana-plugin-core-server.savedobject.md) | | -| [SavedObjectAttributes](./kibana-plugin-core-server.savedobjectattributes.md) | The data for a Saved Object is stored as an object in the attributes property. | -| [SavedObjectExportBaseOptions](./kibana-plugin-core-server.savedobjectexportbaseoptions.md) | | -| [SavedObjectMigrationContext](./kibana-plugin-core-server.savedobjectmigrationcontext.md) | Migration context provided when invoking a [migration handler](./kibana-plugin-core-server.savedobjectmigrationfn.md) | -| [SavedObjectMigrationMap](./kibana-plugin-core-server.savedobjectmigrationmap.md) | A map of [migration functions](./kibana-plugin-core-server.savedobjectmigrationfn.md) to be used for a given type. The map's keys must be valid semver versions, and they cannot exceed the current Kibana version.For a given document, only migrations with a higher version number than that of the document will be applied. Migrations are executed in order, starting from the lowest version and ending with the highest one. | -| [SavedObjectReference](./kibana-plugin-core-server.savedobjectreference.md) | A reference to another saved object. | -| [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) | A returned input object or one of its references, with additional context. | -| [SavedObjectsBaseOptions](./kibana-plugin-core-server.savedobjectsbaseoptions.md) | | -| [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) | | -| [SavedObjectsBulkGetObject](./kibana-plugin-core-server.savedobjectsbulkgetobject.md) | | -| [SavedObjectsBulkResolveObject](./kibana-plugin-core-server.savedobjectsbulkresolveobject.md) | | -| [SavedObjectsBulkResolveResponse](./kibana-plugin-core-server.savedobjectsbulkresolveresponse.md) | | -| [SavedObjectsBulkResponse](./kibana-plugin-core-server.savedobjectsbulkresponse.md) | | -| [SavedObjectsBulkUpdateObject](./kibana-plugin-core-server.savedobjectsbulkupdateobject.md) | | -| [SavedObjectsBulkUpdateOptions](./kibana-plugin-core-server.savedobjectsbulkupdateoptions.md) | | -| [SavedObjectsBulkUpdateResponse](./kibana-plugin-core-server.savedobjectsbulkupdateresponse.md) | | -| [SavedObjectsCheckConflictsObject](./kibana-plugin-core-server.savedobjectscheckconflictsobject.md) | | -| [SavedObjectsCheckConflictsResponse](./kibana-plugin-core-server.savedobjectscheckconflictsresponse.md) | | -| [SavedObjectsClientProviderOptions](./kibana-plugin-core-server.savedobjectsclientprovideroptions.md) | Options to control the creation of the Saved Objects Client. | -| [SavedObjectsClientWrapperOptions](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.md) | Options passed to each SavedObjectsClientWrapperFactory to aid in creating the wrapper instance. | -| [SavedObjectsClosePointInTimeResponse](./kibana-plugin-core-server.savedobjectsclosepointintimeresponse.md) | | -| [SavedObjectsCollectMultiNamespaceReferencesObject](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md) | An object to collect references for. It must be a multi-namespace type (in other words, the object type must be registered with the namespaceType: 'multiple' or namespaceType: 'multiple-isolated' option).Note: if options.purpose is 'updateObjectsSpaces', it must be a shareable type (in other words, the object type must be registered with the namespaceType: 'multiple'). | -| [SavedObjectsCollectMultiNamespaceReferencesOptions](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md) | Options for collecting references. | -| [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md) | The response when object references are collected. | -| [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) | | -| [SavedObjectsCreatePointInTimeFinderDependencies](./kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.md) | | -| [SavedObjectsDeleteByNamespaceOptions](./kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.md) | | -| [SavedObjectsDeleteOptions](./kibana-plugin-core-server.savedobjectsdeleteoptions.md) | | -| [SavedObjectsExportByObjectOptions](./kibana-plugin-core-server.savedobjectsexportbyobjectoptions.md) | Options for the [export by objects API](./kibana-plugin-core-server.isavedobjectsexporter.exportbyobjects.md) | -| [SavedObjectsExportByTypeOptions](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.md) | Options for the [export by type API](./kibana-plugin-core-server.isavedobjectsexporter.exportbytypes.md) | -| [SavedObjectsExportExcludedObject](./kibana-plugin-core-server.savedobjectsexportexcludedobject.md) | | -| [SavedObjectsExportResultDetails](./kibana-plugin-core-server.savedobjectsexportresultdetails.md) | Structure of the export result details entry | -| [SavedObjectsExportTransformContext](./kibana-plugin-core-server.savedobjectsexporttransformcontext.md) | Context passed down to a [export transform function](./kibana-plugin-core-server.savedobjectsexporttransform.md) | -| [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) | | -| [SavedObjectsFindOptionsReference](./kibana-plugin-core-server.savedobjectsfindoptionsreference.md) | | -| [SavedObjectsFindResponse](./kibana-plugin-core-server.savedobjectsfindresponse.md) | Return type of the Saved Objects find() method.\*Note\*: this type is different between the Public and Server Saved Objects clients. | -| [SavedObjectsFindResult](./kibana-plugin-core-server.savedobjectsfindresult.md) | | -| [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md) | A warning meant to notify that a specific user action is required to finalize the import of some type of object. The actionUrl must be a path relative to the basePath, and not include it. | -| [SavedObjectsImportAmbiguousConflictError](./kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.md) | Represents a failure to import due to a conflict, which can be resolved in different ways with an overwrite. | -| [SavedObjectsImportConflictError](./kibana-plugin-core-server.savedobjectsimportconflicterror.md) | Represents a failure to import due to a conflict. | -| [SavedObjectsImportFailure](./kibana-plugin-core-server.savedobjectsimportfailure.md) | Represents a failure to import. | -| [SavedObjectsImportHookResult](./kibana-plugin-core-server.savedobjectsimporthookresult.md) | Result from a [import hook](./kibana-plugin-core-server.savedobjectsimporthook.md) | -| [SavedObjectsImportMissingReferencesError](./kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.md) | Represents a failure to import due to missing references. | -| [SavedObjectsImportOptions](./kibana-plugin-core-server.savedobjectsimportoptions.md) | Options to control the import operation. | -| [SavedObjectsImportResponse](./kibana-plugin-core-server.savedobjectsimportresponse.md) | The response describing the result of an import. | -| [SavedObjectsImportRetry](./kibana-plugin-core-server.savedobjectsimportretry.md) | Describes a retry operation for importing a saved object. | -| [SavedObjectsImportSimpleWarning](./kibana-plugin-core-server.savedobjectsimportsimplewarning.md) | A simple informative warning that will be displayed to the user. | -| [SavedObjectsImportSuccess](./kibana-plugin-core-server.savedobjectsimportsuccess.md) | Represents a successful import. | -| [SavedObjectsImportUnknownError](./kibana-plugin-core-server.savedobjectsimportunknownerror.md) | Represents a failure to import due to an unknown reason. | -| [SavedObjectsImportUnsupportedTypeError](./kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.md) | Represents a failure to import due to having an unsupported saved object type. | -| [SavedObjectsIncrementCounterField](./kibana-plugin-core-server.savedobjectsincrementcounterfield.md) | | -| [SavedObjectsIncrementCounterOptions](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.md) | | -| [SavedObjectsMappingProperties](./kibana-plugin-core-server.savedobjectsmappingproperties.md) | Describe the fields of a [saved object type](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md). | -| [SavedObjectsMigrationLogger](./kibana-plugin-core-server.savedobjectsmigrationlogger.md) | | -| [SavedObjectsMigrationVersion](./kibana-plugin-core-server.savedobjectsmigrationversion.md) | Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. | -| [SavedObjectsOpenPointInTimeOptions](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md) | | -| [SavedObjectsOpenPointInTimeResponse](./kibana-plugin-core-server.savedobjectsopenpointintimeresponse.md) | | -| [SavedObjectsPitParams](./kibana-plugin-core-server.savedobjectspitparams.md) | | -| [SavedObjectsRawDoc](./kibana-plugin-core-server.savedobjectsrawdoc.md) | A raw document as represented directly in the saved object index. | -| [SavedObjectsRawDocParseOptions](./kibana-plugin-core-server.savedobjectsrawdocparseoptions.md) | Options that can be specified when using the saved objects serializer to parse a raw document. | -| [SavedObjectsRemoveReferencesToOptions](./kibana-plugin-core-server.savedobjectsremovereferencestooptions.md) | | -| [SavedObjectsRemoveReferencesToResponse](./kibana-plugin-core-server.savedobjectsremovereferencestoresponse.md) | | -| [SavedObjectsRepositoryFactory](./kibana-plugin-core-server.savedobjectsrepositoryfactory.md) | Factory provided when invoking a [client factory provider](./kibana-plugin-core-server.savedobjectsclientfactoryprovider.md) See [SavedObjectsServiceSetup.setClientFactoryProvider](./kibana-plugin-core-server.savedobjectsservicesetup.setclientfactoryprovider.md) | -| [SavedObjectsResolveImportErrorsOptions](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md) | Options to control the "resolve import" operation. | -| [SavedObjectsResolveResponse](./kibana-plugin-core-server.savedobjectsresolveresponse.md) | | -| [SavedObjectsServiceSetup](./kibana-plugin-core-server.savedobjectsservicesetup.md) | Saved Objects is Kibana's data persistence mechanism allowing plugins to use Elasticsearch for storing and querying state. The SavedObjectsServiceSetup API exposes methods for registering Saved Object types, creating and registering Saved Object client wrappers and factories. | -| [SavedObjectsServiceStart](./kibana-plugin-core-server.savedobjectsservicestart.md) | Saved Objects is Kibana's data persisentence mechanism allowing plugins to use Elasticsearch for storing and querying state. The SavedObjectsServiceStart API provides a scoped Saved Objects client for interacting with Saved Objects. | -| [SavedObjectStatusMeta](./kibana-plugin-core-server.savedobjectstatusmeta.md) | Meta information about the SavedObjectService's status. Available to plugins via [CoreSetup.status](./kibana-plugin-core-server.coresetup.status.md). | -| [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) | | -| [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) | Configuration options for the [type](./kibana-plugin-core-server.savedobjectstype.md)'s management section. | -| [SavedObjectsTypeMappingDefinition](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md) | Describe a saved object type mapping. | -| [SavedObjectsUpdateObjectsSpacesObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md) | An object that should have its spaces updated. | -| [SavedObjectsUpdateObjectsSpacesOptions](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md) | Options for the update operation. | -| [SavedObjectsUpdateObjectsSpacesResponse](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md) | The response when objects' spaces are updated. | -| [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) | Details about a specific object's update result. | -| [SavedObjectsUpdateOptions](./kibana-plugin-core-server.savedobjectsupdateoptions.md) | | -| [SavedObjectsUpdateResponse](./kibana-plugin-core-server.savedobjectsupdateresponse.md) | | -| [SavedObjectsValidationMap](./kibana-plugin-core-server.savedobjectsvalidationmap.md) | A map of [validation specs](./kibana-plugin-core-server.savedobjectsvalidationspec.md) to be used for a given type. The map's keys must be valid semver versions.Any time you change the schema of a [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md), you should add a new entry to this map for the Kibana version the change was introduced in. | -| [SearchResponse](./kibana-plugin-core-server.searchresponse.md) | | -| [ServiceStatus](./kibana-plugin-core-server.servicestatus.md) | The current status of a service at a point in time. | -| [SessionCookieValidationResult](./kibana-plugin-core-server.sessioncookievalidationresult.md) | Return type from a function to validate cookie contents. | -| [SessionStorage](./kibana-plugin-core-server.sessionstorage.md) | Provides an interface to store and retrieve data across requests. | -| [SessionStorageCookieOptions](./kibana-plugin-core-server.sessionstoragecookieoptions.md) | Configuration used to create HTTP session storage based on top of cookie mechanism. | -| [SessionStorageFactory](./kibana-plugin-core-server.sessionstoragefactory.md) | SessionStorage factory to bind one to an incoming request | -| [ShardsInfo](./kibana-plugin-core-server.shardsinfo.md) | | -| [ShardsResponse](./kibana-plugin-core-server.shardsresponse.md) | | -| [StatusServiceSetup](./kibana-plugin-core-server.statusservicesetup.md) | API for accessing status of Core and this plugin's dependencies as well as for customizing this plugin's status. | -| [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) | UiSettings parameters defined by the plugins. | -| [UiSettingsServiceSetup](./kibana-plugin-core-server.uisettingsservicesetup.md) | | -| [UiSettingsServiceStart](./kibana-plugin-core-server.uisettingsservicestart.md) | | -| [UnauthorizedErrorHandlerNotHandledResult](./kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.md) | | -| [UnauthorizedErrorHandlerOptions](./kibana-plugin-core-server.unauthorizederrorhandleroptions.md) | | -| [UnauthorizedErrorHandlerResultRetryParams](./kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.md) | | -| [UnauthorizedErrorHandlerRetryResult](./kibana-plugin-core-server.unauthorizederrorhandlerretryresult.md) | | -| [UnauthorizedErrorHandlerToolkit](./kibana-plugin-core-server.unauthorizederrorhandlertoolkit.md) | Toolkit passed to a [UnauthorizedErrorHandler](./kibana-plugin-core-server.unauthorizederrorhandler.md) used to generate responses from the handler | -| [UserProvidedValues](./kibana-plugin-core-server.userprovidedvalues.md) | Describes the values explicitly set by user. | - -## Variables - -| Variable | Description | -| --- | --- | -| [APP\_WRAPPER\_CLASS](./kibana-plugin-core-server.app_wrapper_class.md) | The class name for top level \*and\* nested application wrappers to ensure proper layout | -| [kibanaResponseFactory](./kibana-plugin-core-server.kibanaresponsefactory.md) | Set of helpers used to create KibanaResponse to form HTTP response on an incoming request. Should be returned as a result of [RequestHandler](./kibana-plugin-core-server.requesthandler.md) execution. | -| [mergeSavedObjectMigrationMaps](./kibana-plugin-core-server.mergesavedobjectmigrationmaps.md) | Merges two saved object migration maps.If there is a migration for a given version on only one of the maps, that migration function will be used:mergeSavedObjectMigrationMaps({ '1.2.3': f }, { '4.5.6': g }) -> { '1.2.3': f, '4.5.6': g }If there is a migration for a given version on both maps, the migrations will be composed:mergeSavedObjectMigrationMaps({ '1.2.3': f }, { '1.2.3': g }) -> { '1.2.3': (doc, context) => f(g(doc, context), context) } | -| [pollEsNodesVersion](./kibana-plugin-core-server.pollesnodesversion.md) | | -| [ServiceStatusLevels](./kibana-plugin-core-server.servicestatuslevels.md) | The current "level" of availability of a service. | -| [validBodyOutput](./kibana-plugin-core-server.validbodyoutput.md) | The set of valid body.output | - -## Type Aliases - -| Type Alias | Description | -| --- | --- | -| [AnalyticsServicePreboot](./kibana-plugin-core-server.analyticsservicepreboot.md) | Exposes the public APIs of the AnalyticsClient during the preboot phase | -| [AnalyticsServiceSetup](./kibana-plugin-core-server.analyticsservicesetup.md) | Exposes the public APIs of the AnalyticsClient during the setup phase. | -| [AnalyticsServiceStart](./kibana-plugin-core-server.analyticsservicestart.md) | Exposes the public APIs of the AnalyticsClient during the start phase | -| [AuthenticationHandler](./kibana-plugin-core-server.authenticationhandler.md) | See [AuthToolkit](./kibana-plugin-core-server.authtoolkit.md). | -| [AuthHeaders](./kibana-plugin-core-server.authheaders.md) | Auth Headers map | -| [AuthResult](./kibana-plugin-core-server.authresult.md) | | -| [CapabilitiesProvider](./kibana-plugin-core-server.capabilitiesprovider.md) | See [CapabilitiesSetup](./kibana-plugin-core-server.capabilitiessetup.md) | -| [CapabilitiesSwitcher](./kibana-plugin-core-server.capabilitiesswitcher.md) | See [CapabilitiesSetup](./kibana-plugin-core-server.capabilitiessetup.md) | -| [CustomRequestHandlerContext](./kibana-plugin-core-server.customrequesthandlercontext.md) | | -| [DeprecationsDetails](./kibana-plugin-core-server.deprecationsdetails.md) | | -| [DestructiveRouteMethod](./kibana-plugin-core-server.destructiveroutemethod.md) | Set of HTTP methods changing the state of the server. | -| [ElasticsearchClient](./kibana-plugin-core-server.elasticsearchclient.md) | Client used to query the elasticsearch cluster. | -| [ElasticsearchClientConfig](./kibana-plugin-core-server.elasticsearchclientconfig.md) | Configuration options to be used to create a [cluster client](./kibana-plugin-core-server.iclusterclient.md) using the [createClient API](./kibana-plugin-core-server.elasticsearchservicestart.createclient.md) | -| [ExecutionContextStart](./kibana-plugin-core-server.executioncontextstart.md) | | -| [ExposedToBrowserDescriptor](./kibana-plugin-core-server.exposedtobrowserdescriptor.md) | Type defining the list of configuration properties that will be exposed on the client-side Object properties can either be fully exposed | -| [GetAuthHeaders](./kibana-plugin-core-server.getauthheaders.md) | Get headers to authenticate a user against Elasticsearch. | -| [GetAuthState](./kibana-plugin-core-server.getauthstate.md) | Gets authentication state for a request. Returned by auth interceptor. | -| [HandlerContextType](./kibana-plugin-core-server.handlercontexttype.md) | Extracts the type of the first argument of a [HandlerFunction](./kibana-plugin-core-server.handlerfunction.md) to represent the type of the context. | -| [HandlerFunction](./kibana-plugin-core-server.handlerfunction.md) | A function that accepts a context object and an optional number of additional arguments. Used for the generic types in [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) | -| [HandlerParameters](./kibana-plugin-core-server.handlerparameters.md) | Extracts the types of the additional arguments of a [HandlerFunction](./kibana-plugin-core-server.handlerfunction.md), excluding the [HandlerContextType](./kibana-plugin-core-server.handlercontexttype.md). | -| [Headers\_2](./kibana-plugin-core-server.headers_2.md) | Http request headers to read. | -| [HttpResourcesRequestHandler](./kibana-plugin-core-server.httpresourcesrequesthandler.md) | Extended version of [RequestHandler](./kibana-plugin-core-server.requesthandler.md) having access to [HttpResourcesServiceToolkit](./kibana-plugin-core-server.httpresourcesservicetoolkit.md) to respond with HTML or JS resources. | -| [HttpResourcesResponseOptions](./kibana-plugin-core-server.httpresourcesresponseoptions.md) | HTTP Resources response parameters | -| [HttpResponsePayload](./kibana-plugin-core-server.httpresponsepayload.md) | Data send to the client as a response payload. | -| [IBasePath](./kibana-plugin-core-server.ibasepath.md) | Access or manipulate the Kibana base path[BasePath](./kibana-plugin-core-server.basepath.md) | -| [IContextProvider](./kibana-plugin-core-server.icontextprovider.md) | A function that returns a context value for a specific key of given context type. | -| [IsAuthenticated](./kibana-plugin-core-server.isauthenticated.md) | Returns authentication status for a request. | -| [ISavedObjectsRepository](./kibana-plugin-core-server.isavedobjectsrepository.md) | See [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) | -| [ISavedObjectTypeRegistry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) | See [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) for documentation. | -| [KibanaExecutionContext](./kibana-plugin-core-server.kibanaexecutioncontext.md) | Represents a meta-information about a Kibana entity initiating a search request. | -| [KibanaRequestRouteOptions](./kibana-plugin-core-server.kibanarequestrouteoptions.md) | Route options: If 'GET' or 'OPTIONS' method, body options won't be returned. | -| [KibanaResponseFactory](./kibana-plugin-core-server.kibanaresponsefactory.md) | Creates an object containing request response payload, HTTP headers, error details, and other data transmitted to the client. | -| [KnownHeaders](./kibana-plugin-core-server.knownheaders.md) | Set of well-known HTTP headers. | -| [LifecycleResponseFactory](./kibana-plugin-core-server.lifecycleresponsefactory.md) | Creates an object containing redirection or error response with error details, HTTP headers, and other data transmitted to the client. | -| [MakeUsageFromSchema](./kibana-plugin-core-server.makeusagefromschema.md) | List of configuration values that will be exposed to usage collection. If parent node or actual config path is set to true then the actual value of these configs will be reoprted. If parent node or actual config path is set to false then the config will be reported as \[redacted\]. | -| [MetricsServiceStart](./kibana-plugin-core-server.metricsservicestart.md) | APIs to retrieves metrics gathered and exposed by the core platform. | -| [MutatingOperationRefreshSetting](./kibana-plugin-core-server.mutatingoperationrefreshsetting.md) | Elasticsearch Refresh setting for mutating operation | -| [OnPostAuthHandler](./kibana-plugin-core-server.onpostauthhandler.md) | See [OnPostAuthToolkit](./kibana-plugin-core-server.onpostauthtoolkit.md). | -| [OnPreAuthHandler](./kibana-plugin-core-server.onpreauthhandler.md) | See [OnPreAuthToolkit](./kibana-plugin-core-server.onpreauthtoolkit.md). | -| [OnPreResponseHandler](./kibana-plugin-core-server.onpreresponsehandler.md) | See [OnPreRoutingToolkit](./kibana-plugin-core-server.onpreroutingtoolkit.md). | -| [OnPreRoutingHandler](./kibana-plugin-core-server.onpreroutinghandler.md) | See [OnPreRoutingToolkit](./kibana-plugin-core-server.onpreroutingtoolkit.md). | -| [PluginConfigSchema](./kibana-plugin-core-server.pluginconfigschema.md) | Dedicated type for plugin configuration schema. | -| [PluginInitializer](./kibana-plugin-core-server.plugininitializer.md) | The plugin export at the root of a plugin's server directory should conform to this interface. | -| [PublicUiSettingsParams](./kibana-plugin-core-server.publicuisettingsparams.md) | A sub-set of [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) exposed to the client-side. | -| [RedirectResponseOptions](./kibana-plugin-core-server.redirectresponseoptions.md) | HTTP response parameters for redirection response | -| [RequestHandler](./kibana-plugin-core-server.requesthandler.md) | A function executed when route path matched requested resource path. Request handler is expected to return a result of one of [KibanaResponseFactory](./kibana-plugin-core-server.kibanaresponsefactory.md) functions. If anything else is returned, or an error is thrown, the HTTP service will automatically log the error and respond 500 - Internal Server Error. | -| [RequestHandlerContextContainer](./kibana-plugin-core-server.requesthandlercontextcontainer.md) | An object that handles registration of http request context providers. | -| [RequestHandlerContextProvider](./kibana-plugin-core-server.requesthandlercontextprovider.md) | Context provider for request handler. Extends request context object with provided functionality or data. | -| [RequestHandlerWrapper](./kibana-plugin-core-server.requesthandlerwrapper.md) | Type-safe wrapper for [RequestHandler](./kibana-plugin-core-server.requesthandler.md) function. | -| [ResponseError](./kibana-plugin-core-server.responseerror.md) | Error message and optional data send to the client in case of error. | -| [ResponseErrorAttributes](./kibana-plugin-core-server.responseerrorattributes.md) | Additional data to provide error details. | -| [ResponseHeaders](./kibana-plugin-core-server.responseheaders.md) | Http response headers to set. | -| [RouteContentType](./kibana-plugin-core-server.routecontenttype.md) | The set of supported parseable Content-Types | -| [RouteMethod](./kibana-plugin-core-server.routemethod.md) | The set of common HTTP methods supported by Kibana routing. | -| [RouteRegistrar](./kibana-plugin-core-server.routeregistrar.md) | Route handler common definition | -| [RouteValidationFunction](./kibana-plugin-core-server.routevalidationfunction.md) | The custom validation function if @kbn/config-schema is not a valid solution for your specific plugin requirements. | -| [RouteValidationSpec](./kibana-plugin-core-server.routevalidationspec.md) | Allowed property validation options: either @kbn/config-schema validations or custom validation functionsSee [RouteValidationFunction](./kibana-plugin-core-server.routevalidationfunction.md) for custom validation. | -| [RouteValidatorFullConfig](./kibana-plugin-core-server.routevalidatorfullconfig.md) | Route validations config and options merged into one object | -| [SafeRouteMethod](./kibana-plugin-core-server.saferoutemethod.md) | Set of HTTP methods not changing the state of the server. | -| [SavedObjectAttribute](./kibana-plugin-core-server.savedobjectattribute.md) | Type definition for a Saved Object attribute value | -| [SavedObjectAttributeSingle](./kibana-plugin-core-server.savedobjectattributesingle.md) | Don't use this type, it's simply a helper type for [SavedObjectAttribute](./kibana-plugin-core-server.savedobjectattribute.md) | -| [SavedObjectMigrationFn](./kibana-plugin-core-server.savedobjectmigrationfn.md) | A migration function for a [saved object type](./kibana-plugin-core-server.savedobjectstype.md) used to migrate it to a given version | -| [SavedObjectSanitizedDoc](./kibana-plugin-core-server.savedobjectsanitizeddoc.md) | Describes Saved Object documents that have passed through the migration framework and are guaranteed to have a references root property. | -| [SavedObjectsClientContract](./kibana-plugin-core-server.savedobjectsclientcontract.md) | Saved Objects is Kibana's data persisentence mechanism allowing plugins to use Elasticsearch for storing plugin state.\#\# SavedObjectsClient errorsSince the SavedObjectsClient has its hands in everything we are a little paranoid about the way we present errors back to to application code. Ideally, all errors will be either:1. Caused by bad implementation (ie. undefined is not a function) and as such unpredictable 2. An error that has been classified and decorated appropriately by the decorators in [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md)Type 1 errors are inevitable, but since all expected/handle-able errors should be Type 2 the isXYZError() helpers exposed at SavedObjectsErrorHelpers should be used to understand and manage error responses from the SavedObjectsClient.Type 2 errors are decorated versions of the source error, so if the elasticsearch client threw an error it will be decorated based on its type. That means that rather than looking for error.body.error.type or doing substring checks on error.body.error.reason, just use the helpers to understand the meaning of the error:\`\`\`js if (SavedObjectsErrorHelpers.isNotFoundError(error)) { // handle 404 }if (SavedObjectsErrorHelpers.isNotAuthorizedError(error)) { // 401 handling should be automatic, but in case you wanted to know }// always rethrow the error unless you handle it throw error; \`\`\`\#\#\# 404s from missing indexFrom the perspective of application code and APIs the SavedObjectsClient is a black box that persists objects. One of the internal details that users have no control over is that we use an elasticsearch index for persistence and that index might be missing.At the time of writing we are in the process of transitioning away from the operating assumption that the SavedObjects index is always available. Part of this transition is handling errors resulting from an index missing. These used to trigger a 500 error in most cases, and in others cause 404s with different error messages.From my (Spencer) perspective, a 404 from the SavedObjectsApi is a 404; The object the request/call was targeting could not be found. This is why \#14141 takes special care to ensure that 404 errors are generic and don't distinguish between index missing or document missing.See [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) See [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) | -| [SavedObjectsClientFactory](./kibana-plugin-core-server.savedobjectsclientfactory.md) | Describes the factory used to create instances of the Saved Objects Client. | -| [SavedObjectsClientFactoryProvider](./kibana-plugin-core-server.savedobjectsclientfactoryprovider.md) | Provider to invoke to retrieve a [SavedObjectsClientFactory](./kibana-plugin-core-server.savedobjectsclientfactory.md). | -| [SavedObjectsClientWrapperFactory](./kibana-plugin-core-server.savedobjectsclientwrapperfactory.md) | Describes the factory used to create instances of Saved Objects Client Wrappers. | -| [SavedObjectsClosePointInTimeOptions](./kibana-plugin-core-server.savedobjectsclosepointintimeoptions.md) | | -| [SavedObjectsCreatePointInTimeFinderOptions](./kibana-plugin-core-server.savedobjectscreatepointintimefinderoptions.md) | | -| [SavedObjectsExportTransform](./kibana-plugin-core-server.savedobjectsexporttransform.md) | Transformation function used to mutate the exported objects of the associated type.A type's export transform function will be executed once per user-initiated export, for all objects of that type. | -| [SavedObjectsFieldMapping](./kibana-plugin-core-server.savedobjectsfieldmapping.md) | Describe a [saved object type mapping](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md) field.Please refer to [elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html) For the mapping documentation | -| [SavedObjectsImportHook](./kibana-plugin-core-server.savedobjectsimporthook.md) | A hook associated with a specific saved object type, that will be invoked during the import process. The hook will have access to the objects of the registered type.Currently, the only supported feature for import hooks is to return warnings to be displayed in the UI when the import succeeds. The only interactions the hook can have with the import process is via the hook's response. Mutating the objects inside the hook's code will have no effect. | -| [SavedObjectsImportWarning](./kibana-plugin-core-server.savedobjectsimportwarning.md) | Composite type of all the possible types of import warnings.See [SavedObjectsImportSimpleWarning](./kibana-plugin-core-server.savedobjectsimportsimplewarning.md) and [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md) for more details. | -| [SavedObjectsNamespaceType](./kibana-plugin-core-server.savedobjectsnamespacetype.md) | The namespace type dictates how a saved object can be interacted in relation to namespaces. Each type is mutually exclusive: \* single (default): This type of saved object is namespace-isolated, e.g., it exists in only one namespace. \* multiple: This type of saved object is shareable, e.g., it can exist in one or more namespaces. \* multiple-isolated: This type of saved object is namespace-isolated, e.g., it exists in only one namespace, but object IDs must be unique across all namespaces. This is intended to be an intermediate step when objects with a "single" namespace type are being converted to a "multiple" namespace type. In other words, objects with a "multiple-isolated" namespace type will be \*share-capable\*, but will not actually be shareable until the namespace type is changed to "multiple". \* agnostic: This type of saved object is global. | -| [SavedObjectsValidationSpec](./kibana-plugin-core-server.savedobjectsvalidationspec.md) | Allows for validating properties using @kbn/config-schema validations. | -| [SavedObjectTypeExcludeFromUpgradeFilterHook](./kibana-plugin-core-server.savedobjecttypeexcludefromupgradefilterhook.md) | If defined, allows a type to run a search query and return a query filter that may match any documents which may be excluded from the next migration upgrade process. Useful for cleaning up large numbers of old documents which are no longer needed and may slow the migration process.If this hook fails, the migration will proceed without these documents having been filtered out, so this should not be used as a guarantee that these documents have been deleted.Experimental and subject to change | -| [SavedObjectUnsanitizedDoc](./kibana-plugin-core-server.savedobjectunsanitizeddoc.md) | Describes Saved Object documents from Kibana < 7.0.0 which don't have a references root property defined. This type should only be used in migrations. | -| [ScopeableRequest](./kibana-plugin-core-server.scopeablerequest.md) | A user credentials container. It accommodates the necessary auth credentials to impersonate the current user.See [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md). | -| [ServiceStatusLevel](./kibana-plugin-core-server.servicestatuslevel.md) | A convenience type that represents the union of each value in [ServiceStatusLevels](./kibana-plugin-core-server.servicestatuslevels.md). | -| [SharedGlobalConfig](./kibana-plugin-core-server.sharedglobalconfig.md) | | -| [StartServicesAccessor](./kibana-plugin-core-server.startservicesaccessor.md) | Allows plugins to get access to APIs available in start inside async handlers. Promise will not resolve until Core and plugin dependencies have completed start. This should only be used inside handlers registered during setup that will only be executed after start lifecycle. | -| [UiSettingsType](./kibana-plugin-core-server.uisettingstype.md) | UI element type to represent the settings. | -| [UnauthorizedError](./kibana-plugin-core-server.unauthorizederror.md) | | -| [UnauthorizedErrorHandler](./kibana-plugin-core-server.unauthorizederrorhandler.md) | A handler used to handle unauthorized error returned by elasticsearch | -| [UnauthorizedErrorHandlerResult](./kibana-plugin-core-server.unauthorizederrorhandlerresult.md) | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.mergesavedobjectmigrationmaps.md b/docs/development/core/server/kibana-plugin-core-server.mergesavedobjectmigrationmaps.md deleted file mode 100644 index 68cd580b57882..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.mergesavedobjectmigrationmaps.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [mergeSavedObjectMigrationMaps](./kibana-plugin-core-server.mergesavedobjectmigrationmaps.md) - -## mergeSavedObjectMigrationMaps variable - -Merges two saved object migration maps. - -If there is a migration for a given version on only one of the maps, that migration function will be used: - -mergeSavedObjectMigrationMaps({ '1.2.3': f }, { '4.5.6': g }) -> { '1.2.3': f, '4.5.6': g } - -If there is a migration for a given version on both maps, the migrations will be composed: - -mergeSavedObjectMigrationMaps({ '1.2.3': f }, { '1.2.3': g }) -> { '1.2.3': (doc, context) => f(g(doc, context), context) } - -Signature: - -```typescript -mergeSavedObjectMigrationMaps: (map1: SavedObjectMigrationMap, map2: SavedObjectMigrationMap) => SavedObjectMigrationMap -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.collectioninterval.md b/docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.collectioninterval.md deleted file mode 100644 index 6f05526b66c83..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.collectioninterval.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [MetricsServiceSetup](./kibana-plugin-core-server.metricsservicesetup.md) > [collectionInterval](./kibana-plugin-core-server.metricsservicesetup.collectioninterval.md) - -## MetricsServiceSetup.collectionInterval property - -Interval metrics are collected in milliseconds - -Signature: - -```typescript -readonly collectionInterval: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.getopsmetrics_.md b/docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.getopsmetrics_.md deleted file mode 100644 index 0db06b231f60e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.getopsmetrics_.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [MetricsServiceSetup](./kibana-plugin-core-server.metricsservicesetup.md) > [getOpsMetrics$](./kibana-plugin-core-server.metricsservicesetup.getopsmetrics_.md) - -## MetricsServiceSetup.getOpsMetrics$ property - -Retrieve an observable emitting the [OpsMetrics](./kibana-plugin-core-server.opsmetrics.md) gathered. The observable will emit an initial value during core's `start` phase, and a new value every fixed interval of time, based on the `opts.interval` configuration property. - -Signature: - -```typescript -getOpsMetrics$: () => Observable; -``` - -## Example - - -```ts -core.metrics.getOpsMetrics$().subscribe(metrics => { - // do something with the metrics -}) -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.md deleted file mode 100644 index d9b05589ab6a7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.metricsservicesetup.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [MetricsServiceSetup](./kibana-plugin-core-server.metricsservicesetup.md) - -## MetricsServiceSetup interface - -APIs to retrieves metrics gathered and exposed by the core platform. - -Signature: - -```typescript -export interface MetricsServiceSetup -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [collectionInterval](./kibana-plugin-core-server.metricsservicesetup.collectioninterval.md) | number | Interval metrics are collected in milliseconds | -| [getOpsMetrics$](./kibana-plugin-core-server.metricsservicesetup.getopsmetrics_.md) | () => Observable<OpsMetrics> | Retrieve an observable emitting the [OpsMetrics](./kibana-plugin-core-server.opsmetrics.md) gathered. The observable will emit an initial value during core's start phase, and a new value every fixed interval of time, based on the opts.interval configuration property. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.metricsservicestart.md b/docs/development/core/server/kibana-plugin-core-server.metricsservicestart.md deleted file mode 100644 index 8b3280d528c18..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.metricsservicestart.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [MetricsServiceStart](./kibana-plugin-core-server.metricsservicestart.md) - -## MetricsServiceStart type - -APIs to retrieves metrics gathered and exposed by the core platform. - -Signature: - -```typescript -export declare type MetricsServiceStart = MetricsServiceSetup; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.mutatingoperationrefreshsetting.md b/docs/development/core/server/kibana-plugin-core-server.mutatingoperationrefreshsetting.md deleted file mode 100644 index 6fb93e39c9805..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.mutatingoperationrefreshsetting.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [MutatingOperationRefreshSetting](./kibana-plugin-core-server.mutatingoperationrefreshsetting.md) - -## MutatingOperationRefreshSetting type - -Elasticsearch Refresh setting for mutating operation - -Signature: - -```typescript -export declare type MutatingOperationRefreshSetting = boolean | 'wait_for'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.incompatiblenodes.md b/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.incompatiblenodes.md deleted file mode 100644 index 8e7298d28801c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.incompatiblenodes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [NodesVersionCompatibility](./kibana-plugin-core-server.nodesversioncompatibility.md) > [incompatibleNodes](./kibana-plugin-core-server.nodesversioncompatibility.incompatiblenodes.md) - -## NodesVersionCompatibility.incompatibleNodes property - -Signature: - -```typescript -incompatibleNodes: NodeInfo[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.iscompatible.md b/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.iscompatible.md deleted file mode 100644 index 82a4800a3b4b6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.iscompatible.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [NodesVersionCompatibility](./kibana-plugin-core-server.nodesversioncompatibility.md) > [isCompatible](./kibana-plugin-core-server.nodesversioncompatibility.iscompatible.md) - -## NodesVersionCompatibility.isCompatible property - -Signature: - -```typescript -isCompatible: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.kibanaversion.md b/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.kibanaversion.md deleted file mode 100644 index 347f2d3474b11..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.kibanaversion.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [NodesVersionCompatibility](./kibana-plugin-core-server.nodesversioncompatibility.md) > [kibanaVersion](./kibana-plugin-core-server.nodesversioncompatibility.kibanaversion.md) - -## NodesVersionCompatibility.kibanaVersion property - -Signature: - -```typescript -kibanaVersion: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.md b/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.md deleted file mode 100644 index a282bf4b7b4b6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [NodesVersionCompatibility](./kibana-plugin-core-server.nodesversioncompatibility.md) - -## NodesVersionCompatibility interface - -Signature: - -```typescript -export interface NodesVersionCompatibility -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [incompatibleNodes](./kibana-plugin-core-server.nodesversioncompatibility.incompatiblenodes.md) | NodeInfo\[\] | | -| [isCompatible](./kibana-plugin-core-server.nodesversioncompatibility.iscompatible.md) | boolean | | -| [kibanaVersion](./kibana-plugin-core-server.nodesversioncompatibility.kibanaversion.md) | string | | -| [message?](./kibana-plugin-core-server.nodesversioncompatibility.message.md) | string | (Optional) | -| [nodesInfoRequestError?](./kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md) | Error | (Optional) | -| [warningNodes](./kibana-plugin-core-server.nodesversioncompatibility.warningnodes.md) | NodeInfo\[\] | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.message.md b/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.message.md deleted file mode 100644 index 415a7825ee2bf..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.message.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [NodesVersionCompatibility](./kibana-plugin-core-server.nodesversioncompatibility.md) > [message](./kibana-plugin-core-server.nodesversioncompatibility.message.md) - -## NodesVersionCompatibility.message property - -Signature: - -```typescript -message?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md b/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md deleted file mode 100644 index aa9421afed6e8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [NodesVersionCompatibility](./kibana-plugin-core-server.nodesversioncompatibility.md) > [nodesInfoRequestError](./kibana-plugin-core-server.nodesversioncompatibility.nodesinforequesterror.md) - -## NodesVersionCompatibility.nodesInfoRequestError property - -Signature: - -```typescript -nodesInfoRequestError?: Error; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.warningnodes.md b/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.warningnodes.md deleted file mode 100644 index 6c017e9fc800c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.nodesversioncompatibility.warningnodes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [NodesVersionCompatibility](./kibana-plugin-core-server.nodesversioncompatibility.md) > [warningNodes](./kibana-plugin-core-server.nodesversioncompatibility.warningnodes.md) - -## NodesVersionCompatibility.warningNodes property - -Signature: - -```typescript -warningNodes: NodeInfo[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpostauthhandler.md b/docs/development/core/server/kibana-plugin-core-server.onpostauthhandler.md deleted file mode 100644 index 2bc48928f57c4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpostauthhandler.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPostAuthHandler](./kibana-plugin-core-server.onpostauthhandler.md) - -## OnPostAuthHandler type - -See [OnPostAuthToolkit](./kibana-plugin-core-server.onpostauthtoolkit.md). - -Signature: - -```typescript -export declare type OnPostAuthHandler = (request: KibanaRequest, response: LifecycleResponseFactory, toolkit: OnPostAuthToolkit) => OnPostAuthResult | KibanaResponse | Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpostauthtoolkit.md b/docs/development/core/server/kibana-plugin-core-server.onpostauthtoolkit.md deleted file mode 100644 index 069f63fe01b77..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpostauthtoolkit.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPostAuthToolkit](./kibana-plugin-core-server.onpostauthtoolkit.md) - -## OnPostAuthToolkit interface - -A tool set defining an outcome of OnPostAuth interceptor for incoming request. - -Signature: - -```typescript -export interface OnPostAuthToolkit -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [next](./kibana-plugin-core-server.onpostauthtoolkit.next.md) | () => OnPostAuthResult | To pass request to the next handler | - diff --git a/docs/development/core/server/kibana-plugin-core-server.onpostauthtoolkit.next.md b/docs/development/core/server/kibana-plugin-core-server.onpostauthtoolkit.next.md deleted file mode 100644 index a633942cb030f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpostauthtoolkit.next.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPostAuthToolkit](./kibana-plugin-core-server.onpostauthtoolkit.md) > [next](./kibana-plugin-core-server.onpostauthtoolkit.next.md) - -## OnPostAuthToolkit.next property - -To pass request to the next handler - -Signature: - -```typescript -next: () => OnPostAuthResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreauthhandler.md b/docs/development/core/server/kibana-plugin-core-server.onpreauthhandler.md deleted file mode 100644 index b2997a29f6826..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreauthhandler.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreAuthHandler](./kibana-plugin-core-server.onpreauthhandler.md) - -## OnPreAuthHandler type - -See [OnPreAuthToolkit](./kibana-plugin-core-server.onpreauthtoolkit.md). - -Signature: - -```typescript -export declare type OnPreAuthHandler = (request: KibanaRequest, response: LifecycleResponseFactory, toolkit: OnPreAuthToolkit) => OnPreAuthResult | KibanaResponse | Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreauthtoolkit.md b/docs/development/core/server/kibana-plugin-core-server.onpreauthtoolkit.md deleted file mode 100644 index 44eed5818c610..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreauthtoolkit.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreAuthToolkit](./kibana-plugin-core-server.onpreauthtoolkit.md) - -## OnPreAuthToolkit interface - -A tool set defining an outcome of OnPreAuth interceptor for incoming request. - -Signature: - -```typescript -export interface OnPreAuthToolkit -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [next](./kibana-plugin-core-server.onpreauthtoolkit.next.md) | () => OnPreAuthResult | To pass request to the next handler | - diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreauthtoolkit.next.md b/docs/development/core/server/kibana-plugin-core-server.onpreauthtoolkit.next.md deleted file mode 100644 index 96776b374cb84..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreauthtoolkit.next.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreAuthToolkit](./kibana-plugin-core-server.onpreauthtoolkit.md) > [next](./kibana-plugin-core-server.onpreauthtoolkit.next.md) - -## OnPreAuthToolkit.next property - -To pass request to the next handler - -Signature: - -```typescript -next: () => OnPreAuthResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreresponseextensions.headers.md b/docs/development/core/server/kibana-plugin-core-server.onpreresponseextensions.headers.md deleted file mode 100644 index f05976b029f9d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreresponseextensions.headers.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreResponseExtensions](./kibana-plugin-core-server.onpreresponseextensions.md) > [headers](./kibana-plugin-core-server.onpreresponseextensions.headers.md) - -## OnPreResponseExtensions.headers property - -additional headers to attach to the response - -Signature: - -```typescript -headers?: ResponseHeaders; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreresponseextensions.md b/docs/development/core/server/kibana-plugin-core-server.onpreresponseextensions.md deleted file mode 100644 index 078ccc38a70c1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreresponseextensions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreResponseExtensions](./kibana-plugin-core-server.onpreresponseextensions.md) - -## OnPreResponseExtensions interface - -Additional data to extend a response. - -Signature: - -```typescript -export interface OnPreResponseExtensions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [headers?](./kibana-plugin-core-server.onpreresponseextensions.headers.md) | ResponseHeaders | (Optional) additional headers to attach to the response | - diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreresponsehandler.md b/docs/development/core/server/kibana-plugin-core-server.onpreresponsehandler.md deleted file mode 100644 index 10696fb79a2f6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreresponsehandler.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreResponseHandler](./kibana-plugin-core-server.onpreresponsehandler.md) - -## OnPreResponseHandler type - -See [OnPreRoutingToolkit](./kibana-plugin-core-server.onpreroutingtoolkit.md). - -Signature: - -```typescript -export declare type OnPreResponseHandler = (request: KibanaRequest, preResponse: OnPreResponseInfo, toolkit: OnPreResponseToolkit) => OnPreResponseResult | Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreresponseinfo.md b/docs/development/core/server/kibana-plugin-core-server.onpreresponseinfo.md deleted file mode 100644 index 60f7f39ed30a6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreresponseinfo.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreResponseInfo](./kibana-plugin-core-server.onpreresponseinfo.md) - -## OnPreResponseInfo interface - -Response status code. - -Signature: - -```typescript -export interface OnPreResponseInfo -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [statusCode](./kibana-plugin-core-server.onpreresponseinfo.statuscode.md) | number | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreresponseinfo.statuscode.md b/docs/development/core/server/kibana-plugin-core-server.onpreresponseinfo.statuscode.md deleted file mode 100644 index fb2ced48e8961..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreresponseinfo.statuscode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreResponseInfo](./kibana-plugin-core-server.onpreresponseinfo.md) > [statusCode](./kibana-plugin-core-server.onpreresponseinfo.statuscode.md) - -## OnPreResponseInfo.statusCode property - -Signature: - -```typescript -statusCode: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreresponserender.body.md b/docs/development/core/server/kibana-plugin-core-server.onpreresponserender.body.md deleted file mode 100644 index ab5b5e7a4f272..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreresponserender.body.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreResponseRender](./kibana-plugin-core-server.onpreresponserender.md) > [body](./kibana-plugin-core-server.onpreresponserender.body.md) - -## OnPreResponseRender.body property - -the body to use in the response - -Signature: - -```typescript -body: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreresponserender.headers.md b/docs/development/core/server/kibana-plugin-core-server.onpreresponserender.headers.md deleted file mode 100644 index 100d12f63d165..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreresponserender.headers.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreResponseRender](./kibana-plugin-core-server.onpreresponserender.md) > [headers](./kibana-plugin-core-server.onpreresponserender.headers.md) - -## OnPreResponseRender.headers property - -additional headers to attach to the response - -Signature: - -```typescript -headers?: ResponseHeaders; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreresponserender.md b/docs/development/core/server/kibana-plugin-core-server.onpreresponserender.md deleted file mode 100644 index a5afa1a709326..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreresponserender.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreResponseRender](./kibana-plugin-core-server.onpreresponserender.md) - -## OnPreResponseRender interface - -Additional data to extend a response when rendering a new body - -Signature: - -```typescript -export interface OnPreResponseRender -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [body](./kibana-plugin-core-server.onpreresponserender.body.md) | string | the body to use in the response | -| [headers?](./kibana-plugin-core-server.onpreresponserender.headers.md) | ResponseHeaders | (Optional) additional headers to attach to the response | - diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.md b/docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.md deleted file mode 100644 index 197b7b692e734..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreResponseToolkit](./kibana-plugin-core-server.onpreresponsetoolkit.md) - -## OnPreResponseToolkit interface - -A tool set defining an outcome of OnPreResponse interceptor for incoming request. - -Signature: - -```typescript -export interface OnPreResponseToolkit -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [next](./kibana-plugin-core-server.onpreresponsetoolkit.next.md) | (responseExtensions?: OnPreResponseExtensions) => OnPreResponseResult | To pass request to the next handler | -| [render](./kibana-plugin-core-server.onpreresponsetoolkit.render.md) | (responseRender: OnPreResponseRender) => OnPreResponseResult | To override the response with a different body | - diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.next.md b/docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.next.md deleted file mode 100644 index 236c3f9bb7419..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.next.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreResponseToolkit](./kibana-plugin-core-server.onpreresponsetoolkit.md) > [next](./kibana-plugin-core-server.onpreresponsetoolkit.next.md) - -## OnPreResponseToolkit.next property - -To pass request to the next handler - -Signature: - -```typescript -next: (responseExtensions?: OnPreResponseExtensions) => OnPreResponseResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.render.md b/docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.render.md deleted file mode 100644 index 7dced7fe8deee..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreresponsetoolkit.render.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreResponseToolkit](./kibana-plugin-core-server.onpreresponsetoolkit.md) > [render](./kibana-plugin-core-server.onpreresponsetoolkit.render.md) - -## OnPreResponseToolkit.render property - -To override the response with a different body - -Signature: - -```typescript -render: (responseRender: OnPreResponseRender) => OnPreResponseResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreroutinghandler.md b/docs/development/core/server/kibana-plugin-core-server.onpreroutinghandler.md deleted file mode 100644 index 46016bcd5476a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreroutinghandler.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreRoutingHandler](./kibana-plugin-core-server.onpreroutinghandler.md) - -## OnPreRoutingHandler type - -See [OnPreRoutingToolkit](./kibana-plugin-core-server.onpreroutingtoolkit.md). - -Signature: - -```typescript -export declare type OnPreRoutingHandler = (request: KibanaRequest, response: LifecycleResponseFactory, toolkit: OnPreRoutingToolkit) => OnPreRoutingResult | KibanaResponse | Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.md b/docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.md deleted file mode 100644 index e3bdeb3c451c4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreRoutingToolkit](./kibana-plugin-core-server.onpreroutingtoolkit.md) - -## OnPreRoutingToolkit interface - -A tool set defining an outcome of OnPreRouting interceptor for incoming request. - -Signature: - -```typescript -export interface OnPreRoutingToolkit -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [next](./kibana-plugin-core-server.onpreroutingtoolkit.next.md) | () => OnPreRoutingResult | To pass request to the next handler | -| [rewriteUrl](./kibana-plugin-core-server.onpreroutingtoolkit.rewriteurl.md) | (url: string) => OnPreRoutingResult | Rewrite requested resources url before is was authenticated and routed to a handler | - diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.next.md b/docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.next.md deleted file mode 100644 index 7fb0b2ce67ba5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.next.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreRoutingToolkit](./kibana-plugin-core-server.onpreroutingtoolkit.md) > [next](./kibana-plugin-core-server.onpreroutingtoolkit.next.md) - -## OnPreRoutingToolkit.next property - -To pass request to the next handler - -Signature: - -```typescript -next: () => OnPreRoutingResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.rewriteurl.md b/docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.rewriteurl.md deleted file mode 100644 index 346a12711c723..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.onpreroutingtoolkit.rewriteurl.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OnPreRoutingToolkit](./kibana-plugin-core-server.onpreroutingtoolkit.md) > [rewriteUrl](./kibana-plugin-core-server.onpreroutingtoolkit.rewriteurl.md) - -## OnPreRoutingToolkit.rewriteUrl property - -Rewrite requested resources url before is was authenticated and routed to a handler - -Signature: - -```typescript -rewriteUrl: (url: string) => OnPreRoutingResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.collected_at.md b/docs/development/core/server/kibana-plugin-core-server.opsmetrics.collected_at.md deleted file mode 100644 index 25125569b7b38..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.collected_at.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsMetrics](./kibana-plugin-core-server.opsmetrics.md) > [collected\_at](./kibana-plugin-core-server.opsmetrics.collected_at.md) - -## OpsMetrics.collected\_at property - -Time metrics were recorded at. - -Signature: - -```typescript -collected_at: Date; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.concurrent_connections.md b/docs/development/core/server/kibana-plugin-core-server.opsmetrics.concurrent_connections.md deleted file mode 100644 index 18d1dc7d13ece..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.concurrent_connections.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsMetrics](./kibana-plugin-core-server.opsmetrics.md) > [concurrent\_connections](./kibana-plugin-core-server.opsmetrics.concurrent_connections.md) - -## OpsMetrics.concurrent\_connections property - -number of current concurrent connections to the server - -Signature: - -```typescript -concurrent_connections: OpsServerMetrics['concurrent_connections']; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.md b/docs/development/core/server/kibana-plugin-core-server.opsmetrics.md deleted file mode 100644 index dcecfd35a8d2d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsMetrics](./kibana-plugin-core-server.opsmetrics.md) - -## OpsMetrics interface - -Regroups metrics gathered by all the collectors. This contains metrics about the os/runtime, the kibana process and the http server. - -Signature: - -```typescript -export interface OpsMetrics -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [collected\_at](./kibana-plugin-core-server.opsmetrics.collected_at.md) | Date | Time metrics were recorded at. | -| [concurrent\_connections](./kibana-plugin-core-server.opsmetrics.concurrent_connections.md) | OpsServerMetrics\['concurrent\_connections'\] | number of current concurrent connections to the server | -| [os](./kibana-plugin-core-server.opsmetrics.os.md) | OpsOsMetrics | OS related metrics | -| [process](./kibana-plugin-core-server.opsmetrics.process.md) | OpsProcessMetrics | Process related metrics. | -| [processes](./kibana-plugin-core-server.opsmetrics.processes.md) | OpsProcessMetrics\[\] | Process related metrics. Reports an array of objects for each kibana pid. | -| [requests](./kibana-plugin-core-server.opsmetrics.requests.md) | OpsServerMetrics\['requests'\] | server requests stats | -| [response\_times](./kibana-plugin-core-server.opsmetrics.response_times.md) | OpsServerMetrics\['response\_times'\] | server response time stats | - diff --git a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.os.md b/docs/development/core/server/kibana-plugin-core-server.opsmetrics.os.md deleted file mode 100644 index a893c847f48be..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.os.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsMetrics](./kibana-plugin-core-server.opsmetrics.md) > [os](./kibana-plugin-core-server.opsmetrics.os.md) - -## OpsMetrics.os property - -OS related metrics - -Signature: - -```typescript -os: OpsOsMetrics; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.process.md b/docs/development/core/server/kibana-plugin-core-server.opsmetrics.process.md deleted file mode 100644 index fa91e8b295b6e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.process.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsMetrics](./kibana-plugin-core-server.opsmetrics.md) > [process](./kibana-plugin-core-server.opsmetrics.process.md) - -## OpsMetrics.process property - -> Warning: This API is now obsolete. -> -> use the processes field instead. 8.8.0 -> - -Process related metrics. - -Signature: - -```typescript -process: OpsProcessMetrics; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.processes.md b/docs/development/core/server/kibana-plugin-core-server.opsmetrics.processes.md deleted file mode 100644 index cf1f0a7c54475..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.processes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsMetrics](./kibana-plugin-core-server.opsmetrics.md) > [processes](./kibana-plugin-core-server.opsmetrics.processes.md) - -## OpsMetrics.processes property - -Process related metrics. Reports an array of objects for each kibana pid. - -Signature: - -```typescript -processes: OpsProcessMetrics[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.requests.md b/docs/development/core/server/kibana-plugin-core-server.opsmetrics.requests.md deleted file mode 100644 index 36d0f445fa8b9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.requests.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsMetrics](./kibana-plugin-core-server.opsmetrics.md) > [requests](./kibana-plugin-core-server.opsmetrics.requests.md) - -## OpsMetrics.requests property - -server requests stats - -Signature: - -```typescript -requests: OpsServerMetrics['requests']; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.response_times.md b/docs/development/core/server/kibana-plugin-core-server.opsmetrics.response_times.md deleted file mode 100644 index 6eeef7f607615..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsmetrics.response_times.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsMetrics](./kibana-plugin-core-server.opsmetrics.md) > [response\_times](./kibana-plugin-core-server.opsmetrics.response_times.md) - -## OpsMetrics.response\_times property - -server response time stats - -Signature: - -```typescript -response_times: OpsServerMetrics['response_times']; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.cpu.md b/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.cpu.md deleted file mode 100644 index 095c45266a251..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.cpu.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsOsMetrics](./kibana-plugin-core-server.opsosmetrics.md) > [cpu](./kibana-plugin-core-server.opsosmetrics.cpu.md) - -## OpsOsMetrics.cpu property - -cpu cgroup metrics, undefined when not running in a cgroup - -Signature: - -```typescript -cpu?: { - control_group: string; - cfs_period_micros: number; - cfs_quota_micros: number; - stat: { - number_of_elapsed_periods: number; - number_of_times_throttled: number; - time_throttled_nanos: number; - }; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.cpuacct.md b/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.cpuacct.md deleted file mode 100644 index 140646a0d1a35..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.cpuacct.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsOsMetrics](./kibana-plugin-core-server.opsosmetrics.md) > [cpuacct](./kibana-plugin-core-server.opsosmetrics.cpuacct.md) - -## OpsOsMetrics.cpuacct property - -cpu accounting metrics, undefined when not running in a cgroup - -Signature: - -```typescript -cpuacct?: { - control_group: string; - usage_nanos: number; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.distro.md b/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.distro.md deleted file mode 100644 index ef0f46cc220c4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.distro.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsOsMetrics](./kibana-plugin-core-server.opsosmetrics.md) > [distro](./kibana-plugin-core-server.opsosmetrics.distro.md) - -## OpsOsMetrics.distro property - -The os distrib. Only present for linux platforms - -Signature: - -```typescript -distro?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.distrorelease.md b/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.distrorelease.md deleted file mode 100644 index 88bf59888a55e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.distrorelease.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsOsMetrics](./kibana-plugin-core-server.opsosmetrics.md) > [distroRelease](./kibana-plugin-core-server.opsosmetrics.distrorelease.md) - -## OpsOsMetrics.distroRelease property - -The os distrib release, prefixed by the os distrib. Only present for linux platforms - -Signature: - -```typescript -distroRelease?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.load.md b/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.load.md deleted file mode 100644 index 060086cc26def..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.load.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsOsMetrics](./kibana-plugin-core-server.opsosmetrics.md) > [load](./kibana-plugin-core-server.opsosmetrics.load.md) - -## OpsOsMetrics.load property - -cpu load metrics - -Signature: - -```typescript -load: { - '1m': number; - '5m': number; - '15m': number; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.md b/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.md deleted file mode 100644 index 08f205d48dd09..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsOsMetrics](./kibana-plugin-core-server.opsosmetrics.md) - -## OpsOsMetrics interface - -OS related metrics - -Signature: - -```typescript -export interface OpsOsMetrics -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [cpu?](./kibana-plugin-core-server.opsosmetrics.cpu.md) | { control\_group: string; cfs\_period\_micros: number; cfs\_quota\_micros: number; stat: { number\_of\_elapsed\_periods: number; number\_of\_times\_throttled: number; time\_throttled\_nanos: number; }; } | (Optional) cpu cgroup metrics, undefined when not running in a cgroup | -| [cpuacct?](./kibana-plugin-core-server.opsosmetrics.cpuacct.md) | { control\_group: string; usage\_nanos: number; } | (Optional) cpu accounting metrics, undefined when not running in a cgroup | -| [distro?](./kibana-plugin-core-server.opsosmetrics.distro.md) | string | (Optional) The os distrib. Only present for linux platforms | -| [distroRelease?](./kibana-plugin-core-server.opsosmetrics.distrorelease.md) | string | (Optional) The os distrib release, prefixed by the os distrib. Only present for linux platforms | -| [load](./kibana-plugin-core-server.opsosmetrics.load.md) | { '1m': number; '5m': number; '15m': number; } | cpu load metrics | -| [memory](./kibana-plugin-core-server.opsosmetrics.memory.md) | { total\_in\_bytes: number; free\_in\_bytes: number; used\_in\_bytes: number; } | system memory usage metrics | -| [platform](./kibana-plugin-core-server.opsosmetrics.platform.md) | NodeJS.Platform | The os platform | -| [platformRelease](./kibana-plugin-core-server.opsosmetrics.platformrelease.md) | string | The os platform release, prefixed by the platform name | -| [uptime\_in\_millis](./kibana-plugin-core-server.opsosmetrics.uptime_in_millis.md) | number | the OS uptime | - diff --git a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.memory.md b/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.memory.md deleted file mode 100644 index 10ff674cbda87..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.memory.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsOsMetrics](./kibana-plugin-core-server.opsosmetrics.md) > [memory](./kibana-plugin-core-server.opsosmetrics.memory.md) - -## OpsOsMetrics.memory property - -system memory usage metrics - -Signature: - -```typescript -memory: { - total_in_bytes: number; - free_in_bytes: number; - used_in_bytes: number; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.platform.md b/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.platform.md deleted file mode 100644 index 0f4bbf81e2514..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.platform.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsOsMetrics](./kibana-plugin-core-server.opsosmetrics.md) > [platform](./kibana-plugin-core-server.opsosmetrics.platform.md) - -## OpsOsMetrics.platform property - -The os platform - -Signature: - -```typescript -platform: NodeJS.Platform; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.platformrelease.md b/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.platformrelease.md deleted file mode 100644 index b82898ddda632..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.platformrelease.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsOsMetrics](./kibana-plugin-core-server.opsosmetrics.md) > [platformRelease](./kibana-plugin-core-server.opsosmetrics.platformrelease.md) - -## OpsOsMetrics.platformRelease property - -The os platform release, prefixed by the platform name - -Signature: - -```typescript -platformRelease: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.uptime_in_millis.md b/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.uptime_in_millis.md deleted file mode 100644 index fcae35f02cb80..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsosmetrics.uptime_in_millis.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsOsMetrics](./kibana-plugin-core-server.opsosmetrics.md) > [uptime\_in\_millis](./kibana-plugin-core-server.opsosmetrics.uptime_in_millis.md) - -## OpsOsMetrics.uptime\_in\_millis property - -the OS uptime - -Signature: - -```typescript -uptime_in_millis: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.event_loop_delay.md b/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.event_loop_delay.md deleted file mode 100644 index d626b9cf8f98c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.event_loop_delay.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsProcessMetrics](./kibana-plugin-core-server.opsprocessmetrics.md) > [event\_loop\_delay](./kibana-plugin-core-server.opsprocessmetrics.event_loop_delay.md) - -## OpsProcessMetrics.event\_loop\_delay property - -mean event loop delay since last collection - -Signature: - -```typescript -event_loop_delay: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.event_loop_delay_histogram.md b/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.event_loop_delay_histogram.md deleted file mode 100644 index 1d870b19f2d1f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.event_loop_delay_histogram.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsProcessMetrics](./kibana-plugin-core-server.opsprocessmetrics.md) > [event\_loop\_delay\_histogram](./kibana-plugin-core-server.opsprocessmetrics.event_loop_delay_histogram.md) - -## OpsProcessMetrics.event\_loop\_delay\_histogram property - -node event loop delay histogram since last collection - -Signature: - -```typescript -event_loop_delay_histogram: IntervalHistogram; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.md b/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.md deleted file mode 100644 index 43a4333d7bd2c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsProcessMetrics](./kibana-plugin-core-server.opsprocessmetrics.md) - -## OpsProcessMetrics interface - -Process related metrics - -Signature: - -```typescript -export interface OpsProcessMetrics -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [event\_loop\_delay\_histogram](./kibana-plugin-core-server.opsprocessmetrics.event_loop_delay_histogram.md) | IntervalHistogram | node event loop delay histogram since last collection | -| [event\_loop\_delay](./kibana-plugin-core-server.opsprocessmetrics.event_loop_delay.md) | number | mean event loop delay since last collection | -| [memory](./kibana-plugin-core-server.opsprocessmetrics.memory.md) | { heap: { total\_in\_bytes: number; used\_in\_bytes: number; size\_limit: number; }; resident\_set\_size\_in\_bytes: number; } | process memory usage | -| [pid](./kibana-plugin-core-server.opsprocessmetrics.pid.md) | number | pid of the kibana process | -| [uptime\_in\_millis](./kibana-plugin-core-server.opsprocessmetrics.uptime_in_millis.md) | number | uptime of the kibana process | - diff --git a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.memory.md b/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.memory.md deleted file mode 100644 index 3bb4aee9f27d1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.memory.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsProcessMetrics](./kibana-plugin-core-server.opsprocessmetrics.md) > [memory](./kibana-plugin-core-server.opsprocessmetrics.memory.md) - -## OpsProcessMetrics.memory property - -process memory usage - -Signature: - -```typescript -memory: { - heap: { - total_in_bytes: number; - used_in_bytes: number; - size_limit: number; - }; - resident_set_size_in_bytes: number; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.pid.md b/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.pid.md deleted file mode 100644 index a324d758d08cf..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.pid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsProcessMetrics](./kibana-plugin-core-server.opsprocessmetrics.md) > [pid](./kibana-plugin-core-server.opsprocessmetrics.pid.md) - -## OpsProcessMetrics.pid property - -pid of the kibana process - -Signature: - -```typescript -pid: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.uptime_in_millis.md b/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.uptime_in_millis.md deleted file mode 100644 index 9879ce44bce1e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsprocessmetrics.uptime_in_millis.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsProcessMetrics](./kibana-plugin-core-server.opsprocessmetrics.md) > [uptime\_in\_millis](./kibana-plugin-core-server.opsprocessmetrics.uptime_in_millis.md) - -## OpsProcessMetrics.uptime\_in\_millis property - -uptime of the kibana process - -Signature: - -```typescript -uptime_in_millis: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.concurrent_connections.md b/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.concurrent_connections.md deleted file mode 100644 index 30fdee9b958e4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.concurrent_connections.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsServerMetrics](./kibana-plugin-core-server.opsservermetrics.md) > [concurrent\_connections](./kibana-plugin-core-server.opsservermetrics.concurrent_connections.md) - -## OpsServerMetrics.concurrent\_connections property - -number of current concurrent connections to the server - -Signature: - -```typescript -concurrent_connections: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.md b/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.md deleted file mode 100644 index ddabbd124627b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsServerMetrics](./kibana-plugin-core-server.opsservermetrics.md) - -## OpsServerMetrics interface - -server related metrics - -Signature: - -```typescript -export interface OpsServerMetrics -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [concurrent\_connections](./kibana-plugin-core-server.opsservermetrics.concurrent_connections.md) | number | number of current concurrent connections to the server | -| [requests](./kibana-plugin-core-server.opsservermetrics.requests.md) | { disconnects: number; total: number; statusCodes: Record<number, number>; } | server requests stats | -| [response\_times](./kibana-plugin-core-server.opsservermetrics.response_times.md) | { avg\_in\_millis: number; max\_in\_millis: number; } | server response time stats | - diff --git a/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.requests.md b/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.requests.md deleted file mode 100644 index 7439b1017e72c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.requests.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsServerMetrics](./kibana-plugin-core-server.opsservermetrics.md) > [requests](./kibana-plugin-core-server.opsservermetrics.requests.md) - -## OpsServerMetrics.requests property - -server requests stats - -Signature: - -```typescript -requests: { - disconnects: number; - total: number; - statusCodes: Record; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.response_times.md b/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.response_times.md deleted file mode 100644 index be66b0b1c1c79..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.opsservermetrics.response_times.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [OpsServerMetrics](./kibana-plugin-core-server.opsservermetrics.md) > [response\_times](./kibana-plugin-core-server.opsservermetrics.response_times.md) - -## OpsServerMetrics.response\_times property - -server response time stats - -Signature: - -```typescript -response_times: { - avg_in_millis: number; - max_in_millis: number; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.plugin_2.md b/docs/development/core/server/kibana-plugin-core-server.plugin_2.md deleted file mode 100644 index 79dbbb56c86fd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.plugin_2.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [Plugin\_2](./kibana-plugin-core-server.plugin_2.md) - -## Plugin\_2 interface - -The interface that should be returned by a `PluginInitializer` for a `standard` plugin. - -Signature: - -```typescript -export interface Plugin -``` - -## Methods - -| Method | Description | -| --- | --- | -| [setup(core, plugins)](./kibana-plugin-core-server.plugin_2.setup.md) | | -| [start(core, plugins)](./kibana-plugin-core-server.plugin_2.start.md) | | -| [stop()?](./kibana-plugin-core-server.plugin_2.stop.md) | (Optional) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.plugin_2.setup.md b/docs/development/core/server/kibana-plugin-core-server.plugin_2.setup.md deleted file mode 100644 index cedce40b58000..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.plugin_2.setup.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [Plugin\_2](./kibana-plugin-core-server.plugin_2.md) > [setup](./kibana-plugin-core-server.plugin_2.setup.md) - -## Plugin\_2.setup() method - -Signature: - -```typescript -setup(core: CoreSetup, plugins: TPluginsSetup): TSetup; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreSetup | | -| plugins | TPluginsSetup | | - -Returns: - -TSetup - diff --git a/docs/development/core/server/kibana-plugin-core-server.plugin_2.start.md b/docs/development/core/server/kibana-plugin-core-server.plugin_2.start.md deleted file mode 100644 index 08eb5431a2cf2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.plugin_2.start.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [Plugin\_2](./kibana-plugin-core-server.plugin_2.md) > [start](./kibana-plugin-core-server.plugin_2.start.md) - -## Plugin\_2.start() method - -Signature: - -```typescript -start(core: CoreStart, plugins: TPluginsStart): TStart; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CoreStart | | -| plugins | TPluginsStart | | - -Returns: - -TStart - diff --git a/docs/development/core/server/kibana-plugin-core-server.plugin_2.stop.md b/docs/development/core/server/kibana-plugin-core-server.plugin_2.stop.md deleted file mode 100644 index 5b62a5e82b2ed..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.plugin_2.stop.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [Plugin\_2](./kibana-plugin-core-server.plugin_2.md) > [stop](./kibana-plugin-core-server.plugin_2.stop.md) - -## Plugin\_2.stop() method - -Signature: - -```typescript -stop?(): void; -``` -Returns: - -void - diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.deprecations.md b/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.deprecations.md deleted file mode 100644 index d06b3cb9fa64a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.deprecations.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginConfigDescriptor](./kibana-plugin-core-server.pluginconfigdescriptor.md) > [deprecations](./kibana-plugin-core-server.pluginconfigdescriptor.deprecations.md) - -## PluginConfigDescriptor.deprecations property - -Provider for the to apply to the plugin configuration. - -Signature: - -```typescript -deprecations?: ConfigDeprecationProvider; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.exposetobrowser.md b/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.exposetobrowser.md deleted file mode 100644 index 212a0d1c9a26b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.exposetobrowser.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginConfigDescriptor](./kibana-plugin-core-server.pluginconfigdescriptor.md) > [exposeToBrowser](./kibana-plugin-core-server.pluginconfigdescriptor.exposetobrowser.md) - -## PluginConfigDescriptor.exposeToBrowser property - -List of configuration properties that will be available on the client-side plugin. - -Signature: - -```typescript -exposeToBrowser?: ExposedToBrowserDescriptor; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.exposetousage.md b/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.exposetousage.md deleted file mode 100644 index 8c50c2e339426..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.exposetousage.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginConfigDescriptor](./kibana-plugin-core-server.pluginconfigdescriptor.md) > [exposeToUsage](./kibana-plugin-core-server.pluginconfigdescriptor.exposetousage.md) - -## PluginConfigDescriptor.exposeToUsage property - -Expose non-default configs to usage collection to be sent via telemetry. set a config to `true` to report the actual changed config value. set a config to `false` to report the changed config value as \[redacted\]. - -All changed configs except booleans and numbers will be reported as \[redacted\] unless otherwise specified. - -[MakeUsageFromSchema](./kibana-plugin-core-server.makeusagefromschema.md) - -Signature: - -```typescript -exposeToUsage?: MakeUsageFromSchema; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.md b/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.md deleted file mode 100644 index f5d18c9f40f4d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.md +++ /dev/null @@ -1,50 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginConfigDescriptor](./kibana-plugin-core-server.pluginconfigdescriptor.md) - -## PluginConfigDescriptor interface - -Describes a plugin configuration properties. - -Signature: - -```typescript -export interface PluginConfigDescriptor -``` - -## Example - - -```typescript -// my_plugin/server/index.ts -import { schema, TypeOf } from '@kbn/config-schema'; -import { PluginConfigDescriptor } from 'kibana/server'; - -const configSchema = schema.object({ - secret: schema.string({ defaultValue: 'Only on server' }), - uiProp: schema.string({ defaultValue: 'Accessible from client' }), -}); - -type ConfigType = TypeOf; - -export const config: PluginConfigDescriptor = { - exposeToBrowser: { - uiProp: true, - }, - schema: configSchema, - deprecations: ({ rename, unused }) => [ - rename('securityKey', 'secret'), - unused('deprecatedProperty'), - ], -}; -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [deprecations?](./kibana-plugin-core-server.pluginconfigdescriptor.deprecations.md) | ConfigDeprecationProvider | (Optional) Provider for the to apply to the plugin configuration. | -| [exposeToBrowser?](./kibana-plugin-core-server.pluginconfigdescriptor.exposetobrowser.md) | ExposedToBrowserDescriptor<T> | (Optional) List of configuration properties that will be available on the client-side plugin. | -| [exposeToUsage?](./kibana-plugin-core-server.pluginconfigdescriptor.exposetousage.md) | MakeUsageFromSchema<T> | (Optional) Expose non-default configs to usage collection to be sent via telemetry. set a config to true to report the actual changed config value. set a config to false to report the changed config value as \[redacted\].All changed configs except booleans and numbers will be reported as \[redacted\] unless otherwise specified.[MakeUsageFromSchema](./kibana-plugin-core-server.makeusagefromschema.md) | -| [schema](./kibana-plugin-core-server.pluginconfigdescriptor.schema.md) | PluginConfigSchema<T> | Schema to use to validate the plugin configuration.[PluginConfigSchema](./kibana-plugin-core-server.pluginconfigschema.md) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.schema.md b/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.schema.md deleted file mode 100644 index 700b311d941a8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginconfigdescriptor.schema.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginConfigDescriptor](./kibana-plugin-core-server.pluginconfigdescriptor.md) > [schema](./kibana-plugin-core-server.pluginconfigdescriptor.schema.md) - -## PluginConfigDescriptor.schema property - -Schema to use to validate the plugin configuration. - -[PluginConfigSchema](./kibana-plugin-core-server.pluginconfigschema.md) - -Signature: - -```typescript -schema: PluginConfigSchema; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginconfigschema.md b/docs/development/core/server/kibana-plugin-core-server.pluginconfigschema.md deleted file mode 100644 index 6f4c60975b48c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginconfigschema.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginConfigSchema](./kibana-plugin-core-server.pluginconfigschema.md) - -## PluginConfigSchema type - -Dedicated type for plugin configuration schema. - -Signature: - -```typescript -export declare type PluginConfigSchema = Type; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.plugininitializer.md b/docs/development/core/server/kibana-plugin-core-server.plugininitializer.md deleted file mode 100644 index 9b4d1b022db2a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.plugininitializer.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginInitializer](./kibana-plugin-core-server.plugininitializer.md) - -## PluginInitializer type - -The `plugin` export at the root of a plugin's `server` directory should conform to this interface. - -Signature: - -```typescript -export declare type PluginInitializer = (core: PluginInitializerContext) => Plugin | PrebootPlugin | AsyncPlugin; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.config.md b/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.config.md deleted file mode 100644 index 3b5754eb4fa39..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.config.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginInitializerContext](./kibana-plugin-core-server.plugininitializercontext.md) > [config](./kibana-plugin-core-server.plugininitializercontext.config.md) - -## PluginInitializerContext.config property - -Accessors for the plugin's configuration - -Signature: - -```typescript -config: { - legacy: { - globalConfig$: Observable; - get: () => SharedGlobalConfig; - }; - create: () => Observable; - get: () => T; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.env.md b/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.env.md deleted file mode 100644 index 534f532850587..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.env.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginInitializerContext](./kibana-plugin-core-server.plugininitializercontext.md) > [env](./kibana-plugin-core-server.plugininitializercontext.env.md) - -## PluginInitializerContext.env property - -Signature: - -```typescript -env: { - mode: EnvironmentMode; - packageInfo: Readonly; - instanceUuid: string; - configs: readonly string[]; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.logger.md b/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.logger.md deleted file mode 100644 index 74bf5b0c1384c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.logger.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginInitializerContext](./kibana-plugin-core-server.plugininitializercontext.md) > [logger](./kibana-plugin-core-server.plugininitializercontext.logger.md) - -## PluginInitializerContext.logger property - - instance already bound to the plugin's logging context - -Signature: - -```typescript -logger: LoggerFactory; -``` - -## Example - - -```typescript -// plugins/my-plugin/server/plugin.ts -// "id: myPlugin" in `plugins/my-plugin/kibana.yaml` - -export class MyPlugin implements Plugin { - constructor(private readonly initContext: PluginInitializerContext) { - this.logger = initContext.logger.get(); - // `logger` context: `plugins.myPlugin` - this.mySubLogger = initContext.logger.get('sub'); // or this.logger.get('sub'); - // `mySubLogger` context: `plugins.myPlugin.sub` - } -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.md b/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.md deleted file mode 100644 index e2d115578d7c1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginInitializerContext](./kibana-plugin-core-server.plugininitializercontext.md) - -## PluginInitializerContext interface - -Context that's available to plugins during initialization stage. - -Signature: - -```typescript -export interface PluginInitializerContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [config](./kibana-plugin-core-server.plugininitializercontext.config.md) | { legacy: { globalConfig$: Observable<SharedGlobalConfig>; get: () => SharedGlobalConfig; }; create: <T = ConfigSchema>() => Observable<T>; get: <T = ConfigSchema>() => T; } | Accessors for the plugin's configuration | -| [env](./kibana-plugin-core-server.plugininitializercontext.env.md) | { mode: EnvironmentMode; packageInfo: Readonly<PackageInfo>; instanceUuid: string; configs: readonly string\[\]; } | | -| [logger](./kibana-plugin-core-server.plugininitializercontext.logger.md) | LoggerFactory | instance already bound to the plugin's logging context | -| [opaqueId](./kibana-plugin-core-server.plugininitializercontext.opaqueid.md) | PluginOpaqueId | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.opaqueid.md b/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.opaqueid.md deleted file mode 100644 index 6e2ef10114687..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.plugininitializercontext.opaqueid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginInitializerContext](./kibana-plugin-core-server.plugininitializercontext.md) > [opaqueId](./kibana-plugin-core-server.plugininitializercontext.opaqueid.md) - -## PluginInitializerContext.opaqueId property - -Signature: - -```typescript -opaqueId: PluginOpaqueId; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.configpath.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.configpath.md deleted file mode 100644 index 8aa603242df8e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.configpath.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [configPath](./kibana-plugin-core-server.pluginmanifest.configpath.md) - -## PluginManifest.configPath property - -Root used by the plugin, defaults to "id" in snake\_case format. - -Signature: - -```typescript -readonly configPath: ConfigPath; -``` - -## Example - -id: myPlugin configPath: my\_plugin - diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.description.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.description.md deleted file mode 100644 index b6bba3b5e356c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.description.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [description](./kibana-plugin-core-server.pluginmanifest.description.md) - -## PluginManifest.description property - -TODO: make required once all plugins specify this. A brief description of what this plugin does and any capabilities it provides. - -Signature: - -```typescript -readonly description?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.enabledonanonymouspages.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.enabledonanonymouspages.md deleted file mode 100644 index 359e84c67cac2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.enabledonanonymouspages.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [enabledOnAnonymousPages](./kibana-plugin-core-server.pluginmanifest.enabledonanonymouspages.md) - -## PluginManifest.enabledOnAnonymousPages property - -Specifies whether this plugin - and its required dependencies - will be enabled for anonymous pages (login page, status page when configured, etc.) Default is false. - -Signature: - -```typescript -readonly enabledOnAnonymousPages?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.extrapublicdirs.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.extrapublicdirs.md deleted file mode 100644 index fc1b3a800720d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.extrapublicdirs.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [extraPublicDirs](./kibana-plugin-core-server.pluginmanifest.extrapublicdirs.md) - -## PluginManifest.extraPublicDirs property - -> Warning: This API is now obsolete. -> -> To be deleted when https://github.com/elastic/kibana/issues/101948 is done. -> - -Specifies directory names that can be imported by other ui-plugins built using the same instance of the @kbn/optimizer. A temporary measure we plan to replace with better mechanisms for sharing static code between plugins - -Signature: - -```typescript -readonly extraPublicDirs?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.id.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.id.md deleted file mode 100644 index 7a846f99c0bbb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [id](./kibana-plugin-core-server.pluginmanifest.id.md) - -## PluginManifest.id property - -Identifier of the plugin. Must be a string in camelCase. Part of a plugin public contract. Other plugins leverage it to access plugin API, navigate to the plugin, etc. - -Signature: - -```typescript -readonly id: PluginName; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.kibanaversion.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.kibanaversion.md deleted file mode 100644 index 822e280172138..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.kibanaversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [kibanaVersion](./kibana-plugin-core-server.pluginmanifest.kibanaversion.md) - -## PluginManifest.kibanaVersion property - -The version of Kibana the plugin is compatible with, defaults to "version". - -Signature: - -```typescript -readonly kibanaVersion: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md deleted file mode 100644 index eb3ba06c311c9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.md +++ /dev/null @@ -1,38 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) - -## PluginManifest interface - -Describes the set of required and optional properties plugin can define in its mandatory JSON manifest file. - -Signature: - -```typescript -export interface PluginManifest -``` - -## Remarks - -Should never be used in code outside of Core but is exported for documentation purposes. - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [configPath](./kibana-plugin-core-server.pluginmanifest.configpath.md) | ConfigPath | Root used by the plugin, defaults to "id" in snake\_case format. | -| [description?](./kibana-plugin-core-server.pluginmanifest.description.md) | string | (Optional) TODO: make required once all plugins specify this. A brief description of what this plugin does and any capabilities it provides. | -| [enabledOnAnonymousPages?](./kibana-plugin-core-server.pluginmanifest.enabledonanonymouspages.md) | boolean | (Optional) Specifies whether this plugin - and its required dependencies - will be enabled for anonymous pages (login page, status page when configured, etc.) Default is false. | -| [extraPublicDirs?](./kibana-plugin-core-server.pluginmanifest.extrapublicdirs.md) | string\[\] | (Optional) Specifies directory names that can be imported by other ui-plugins built using the same instance of the @kbn/optimizer. A temporary measure we plan to replace with better mechanisms for sharing static code between plugins | -| [id](./kibana-plugin-core-server.pluginmanifest.id.md) | PluginName | Identifier of the plugin. Must be a string in camelCase. Part of a plugin public contract. Other plugins leverage it to access plugin API, navigate to the plugin, etc. | -| [kibanaVersion](./kibana-plugin-core-server.pluginmanifest.kibanaversion.md) | string | The version of Kibana the plugin is compatible with, defaults to "version". | -| [optionalPlugins](./kibana-plugin-core-server.pluginmanifest.optionalplugins.md) | readonly PluginName\[\] | An optional list of the other plugins that if installed and enabled \*\*may be\*\* leveraged by this plugin for some additional functionality but otherwise are not required for this plugin to work properly. | -| [owner](./kibana-plugin-core-server.pluginmanifest.owner.md) | { readonly name: string; readonly githubTeam?: string; } | | -| [requiredBundles](./kibana-plugin-core-server.pluginmanifest.requiredbundles.md) | readonly string\[\] | List of plugin ids that this plugin's UI code imports modules from that are not in requiredPlugins. | -| [requiredPlugins](./kibana-plugin-core-server.pluginmanifest.requiredplugins.md) | readonly PluginName\[\] | An optional list of the other plugins that \*\*must be\*\* installed and enabled for this plugin to function properly. | -| [server](./kibana-plugin-core-server.pluginmanifest.server.md) | boolean | Specifies whether plugin includes some server-side specific functionality. | -| [serviceFolders?](./kibana-plugin-core-server.pluginmanifest.servicefolders.md) | readonly string\[\] | (Optional) Only used for the automatically generated API documentation. Specifying service folders will cause your plugin API reference to be broken up into sub sections. | -| [type](./kibana-plugin-core-server.pluginmanifest.type.md) | PluginType | Type of the plugin, defaults to standard. | -| [ui](./kibana-plugin-core-server.pluginmanifest.ui.md) | boolean | Specifies whether plugin includes some client/browser specific functionality that should be included into client bundle via public/ui_plugin.js file. | -| [version](./kibana-plugin-core-server.pluginmanifest.version.md) | string | Version of the plugin. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.optionalplugins.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.optionalplugins.md deleted file mode 100644 index 5b75b559dfb7e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.optionalplugins.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [optionalPlugins](./kibana-plugin-core-server.pluginmanifest.optionalplugins.md) - -## PluginManifest.optionalPlugins property - -An optional list of the other plugins that if installed and enabled \*\*may be\*\* leveraged by this plugin for some additional functionality but otherwise are not required for this plugin to work properly. - -Signature: - -```typescript -readonly optionalPlugins: readonly PluginName[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.owner.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.owner.md deleted file mode 100644 index 06b97a0313de5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.owner.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [owner](./kibana-plugin-core-server.pluginmanifest.owner.md) - -## PluginManifest.owner property - -Signature: - -```typescript -readonly owner: { - readonly name: string; - readonly githubTeam?: string; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.requiredbundles.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.requiredbundles.md deleted file mode 100644 index 98505d07101fe..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.requiredbundles.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [requiredBundles](./kibana-plugin-core-server.pluginmanifest.requiredbundles.md) - -## PluginManifest.requiredBundles property - -List of plugin ids that this plugin's UI code imports modules from that are not in `requiredPlugins`. - -Signature: - -```typescript -readonly requiredBundles: readonly string[]; -``` - -## Remarks - -The plugins listed here will be loaded in the browser, even if the plugin is disabled. Required by `@kbn/optimizer` to support cross-plugin imports. "core" and plugins already listed in `requiredPlugins` do not need to be duplicated here. - diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.requiredplugins.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.requiredplugins.md deleted file mode 100644 index 6cab4b537261b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.requiredplugins.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [requiredPlugins](./kibana-plugin-core-server.pluginmanifest.requiredplugins.md) - -## PluginManifest.requiredPlugins property - -An optional list of the other plugins that \*\*must be\*\* installed and enabled for this plugin to function properly. - -Signature: - -```typescript -readonly requiredPlugins: readonly PluginName[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.server.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.server.md deleted file mode 100644 index 823871bdb1435..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.server.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [server](./kibana-plugin-core-server.pluginmanifest.server.md) - -## PluginManifest.server property - -Specifies whether plugin includes some server-side specific functionality. - -Signature: - -```typescript -readonly server: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.servicefolders.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.servicefolders.md deleted file mode 100644 index 8ee33bdfa0f3f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.servicefolders.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [serviceFolders](./kibana-plugin-core-server.pluginmanifest.servicefolders.md) - -## PluginManifest.serviceFolders property - -Only used for the automatically generated API documentation. Specifying service folders will cause your plugin API reference to be broken up into sub sections. - -Signature: - -```typescript -readonly serviceFolders?: readonly string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.type.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.type.md deleted file mode 100644 index 6e82132919f6d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [type](./kibana-plugin-core-server.pluginmanifest.type.md) - -## PluginManifest.type property - -Type of the plugin, defaults to `standard`. - -Signature: - -```typescript -readonly type: PluginType; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.ui.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.ui.md deleted file mode 100644 index c3fa5009b94f8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.ui.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [ui](./kibana-plugin-core-server.pluginmanifest.ui.md) - -## PluginManifest.ui property - -Specifies whether plugin includes some client/browser specific functionality that should be included into client bundle via `public/ui_plugin.js` file. - -Signature: - -```typescript -readonly ui: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.version.md b/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.version.md deleted file mode 100644 index 1cd6051a59a10..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pluginmanifest.version.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PluginManifest](./kibana-plugin-core-server.pluginmanifest.md) > [version](./kibana-plugin-core-server.pluginmanifest.version.md) - -## PluginManifest.version property - -Version of the plugin. - -Signature: - -```typescript -readonly version: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversion.md b/docs/development/core/server/kibana-plugin-core-server.pollesnodesversion.md deleted file mode 100644 index 78094c5556f31..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversion.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [pollEsNodesVersion](./kibana-plugin-core-server.pollesnodesversion.md) - -## pollEsNodesVersion variable - - -Signature: - -```typescript -pollEsNodesVersion: ({ internalClient, log, kibanaVersion, ignoreVersionMismatch, esVersionCheckInterval: healthCheckInterval, }: PollEsNodesVersionOptions) => Observable -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.esversioncheckinterval.md b/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.esversioncheckinterval.md deleted file mode 100644 index 74ad0abb0ed4f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.esversioncheckinterval.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PollEsNodesVersionOptions](./kibana-plugin-core-server.pollesnodesversionoptions.md) > [esVersionCheckInterval](./kibana-plugin-core-server.pollesnodesversionoptions.esversioncheckinterval.md) - -## PollEsNodesVersionOptions.esVersionCheckInterval property - -Signature: - -```typescript -esVersionCheckInterval: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.ignoreversionmismatch.md b/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.ignoreversionmismatch.md deleted file mode 100644 index 5ec1c7e527814..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.ignoreversionmismatch.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PollEsNodesVersionOptions](./kibana-plugin-core-server.pollesnodesversionoptions.md) > [ignoreVersionMismatch](./kibana-plugin-core-server.pollesnodesversionoptions.ignoreversionmismatch.md) - -## PollEsNodesVersionOptions.ignoreVersionMismatch property - -Signature: - -```typescript -ignoreVersionMismatch: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.internalclient.md b/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.internalclient.md deleted file mode 100644 index 50880bc510dfc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.internalclient.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PollEsNodesVersionOptions](./kibana-plugin-core-server.pollesnodesversionoptions.md) > [internalClient](./kibana-plugin-core-server.pollesnodesversionoptions.internalclient.md) - -## PollEsNodesVersionOptions.internalClient property - -Signature: - -```typescript -internalClient: ElasticsearchClient; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.kibanaversion.md b/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.kibanaversion.md deleted file mode 100644 index 4a4d25ec606d4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.kibanaversion.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PollEsNodesVersionOptions](./kibana-plugin-core-server.pollesnodesversionoptions.md) > [kibanaVersion](./kibana-plugin-core-server.pollesnodesversionoptions.kibanaversion.md) - -## PollEsNodesVersionOptions.kibanaVersion property - -Signature: - -```typescript -kibanaVersion: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.log.md b/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.log.md deleted file mode 100644 index 180b6ee91953b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.log.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PollEsNodesVersionOptions](./kibana-plugin-core-server.pollesnodesversionoptions.md) > [log](./kibana-plugin-core-server.pollesnodesversionoptions.log.md) - -## PollEsNodesVersionOptions.log property - -Signature: - -```typescript -log: Logger; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.md b/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.md deleted file mode 100644 index 130898889c66a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.pollesnodesversionoptions.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PollEsNodesVersionOptions](./kibana-plugin-core-server.pollesnodesversionoptions.md) - -## PollEsNodesVersionOptions interface - - -Signature: - -```typescript -export interface PollEsNodesVersionOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [esVersionCheckInterval](./kibana-plugin-core-server.pollesnodesversionoptions.esversioncheckinterval.md) | number | | -| [ignoreVersionMismatch](./kibana-plugin-core-server.pollesnodesversionoptions.ignoreversionmismatch.md) | boolean | | -| [internalClient](./kibana-plugin-core-server.pollesnodesversionoptions.internalclient.md) | ElasticsearchClient | | -| [kibanaVersion](./kibana-plugin-core-server.pollesnodesversionoptions.kibanaversion.md) | string | | -| [log](./kibana-plugin-core-server.pollesnodesversionoptions.log.md) | Logger | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.prebootplugin.md b/docs/development/core/server/kibana-plugin-core-server.prebootplugin.md deleted file mode 100644 index 8bbb042965dde..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.prebootplugin.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PrebootPlugin](./kibana-plugin-core-server.prebootplugin.md) - -## PrebootPlugin interface - -The interface that should be returned by a `PluginInitializer` for a `preboot` plugin. - -Signature: - -```typescript -export interface PrebootPlugin -``` - -## Methods - -| Method | Description | -| --- | --- | -| [setup(core, plugins)](./kibana-plugin-core-server.prebootplugin.setup.md) | | -| [stop()?](./kibana-plugin-core-server.prebootplugin.stop.md) | (Optional) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.prebootplugin.setup.md b/docs/development/core/server/kibana-plugin-core-server.prebootplugin.setup.md deleted file mode 100644 index f55819eeaca57..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.prebootplugin.setup.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PrebootPlugin](./kibana-plugin-core-server.prebootplugin.md) > [setup](./kibana-plugin-core-server.prebootplugin.setup.md) - -## PrebootPlugin.setup() method - -Signature: - -```typescript -setup(core: CorePreboot, plugins: TPluginsSetup): TSetup; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| core | CorePreboot | | -| plugins | TPluginsSetup | | - -Returns: - -TSetup - diff --git a/docs/development/core/server/kibana-plugin-core-server.prebootplugin.stop.md b/docs/development/core/server/kibana-plugin-core-server.prebootplugin.stop.md deleted file mode 100644 index c93dcb7709a11..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.prebootplugin.stop.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PrebootPlugin](./kibana-plugin-core-server.prebootplugin.md) > [stop](./kibana-plugin-core-server.prebootplugin.stop.md) - -## PrebootPlugin.stop() method - -Signature: - -```typescript -stop?(): void; -``` -Returns: - -void - diff --git a/docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.holdsetupuntilresolved.md b/docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.holdsetupuntilresolved.md deleted file mode 100644 index 7f158b46d1f06..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.holdsetupuntilresolved.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PrebootServicePreboot](./kibana-plugin-core-server.prebootservicepreboot.md) > [holdSetupUntilResolved](./kibana-plugin-core-server.prebootservicepreboot.holdsetupuntilresolved.md) - -## PrebootServicePreboot.holdSetupUntilResolved property - -Registers a `Promise` as a precondition before Kibana can proceed to `setup`. This method can be invoked multiple times and from multiple `preboot` plugins. Kibana will proceed to `setup` only when all registered `Promises` instances are resolved, or it will shut down if any of them is rejected. - -Signature: - -```typescript -readonly holdSetupUntilResolved: (reason: string, promise: Promise<{ - shouldReloadConfig: boolean; - } | undefined>) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.issetuponhold.md b/docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.issetuponhold.md deleted file mode 100644 index 1ba079da03208..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.issetuponhold.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PrebootServicePreboot](./kibana-plugin-core-server.prebootservicepreboot.md) > [isSetupOnHold](./kibana-plugin-core-server.prebootservicepreboot.issetuponhold.md) - -## PrebootServicePreboot.isSetupOnHold property - -Indicates whether Kibana is currently on hold and cannot proceed to `setup` yet. - -Signature: - -```typescript -readonly isSetupOnHold: () => boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.md b/docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.md deleted file mode 100644 index c9c7c15ac3275..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.prebootservicepreboot.md +++ /dev/null @@ -1,43 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PrebootServicePreboot](./kibana-plugin-core-server.prebootservicepreboot.md) - -## PrebootServicePreboot interface - -Kibana Preboot Service allows to control the boot flow of Kibana. Preboot plugins can use it to hold the boot until certain condition is met. - -Signature: - -```typescript -export interface PrebootServicePreboot -``` - -## Example - -A plugin can supply a `Promise` to a `holdSetupUntilResolved` method to signal Kibana to initialize and start `standard` plugins only after this `Promise` is resolved. If `Promise` is rejected, Kibana will shut down. - -```ts -core.preboot.holdSetupUntilResolved('Just waiting for 5 seconds', - new Promise((resolve) => { - setTimeout(resolve, 5000); - }) -); -``` -If the supplied `Promise` resolves to an object with the `shouldReloadConfig` property set to `true`, Kibana will also reload its configuration from disk. - -```ts -let completeSetup: (result: { shouldReloadConfig: boolean }) => void; -core.preboot.holdSetupUntilResolved('Just waiting for 5 seconds before reloading configuration', - new Promise<{ shouldReloadConfig: boolean }>((resolve) => { - setTimeout(() => resolve({ shouldReloadConfig: true }), 5000); - }) -); -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [holdSetupUntilResolved](./kibana-plugin-core-server.prebootservicepreboot.holdsetupuntilresolved.md) | (reason: string, promise: Promise<{ shouldReloadConfig: boolean; } \| undefined>) => void | Registers a Promise as a precondition before Kibana can proceed to setup. This method can be invoked multiple times and from multiple preboot plugins. Kibana will proceed to setup only when all registered Promises instances are resolved, or it will shut down if any of them is rejected. | -| [isSetupOnHold](./kibana-plugin-core-server.prebootservicepreboot.issetuponhold.md) | () => boolean | Indicates whether Kibana is currently on hold and cannot proceed to setup yet. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.publicuisettingsparams.md b/docs/development/core/server/kibana-plugin-core-server.publicuisettingsparams.md deleted file mode 100644 index 4ccc91fbe1f74..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.publicuisettingsparams.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [PublicUiSettingsParams](./kibana-plugin-core-server.publicuisettingsparams.md) - -## PublicUiSettingsParams type - -A sub-set of [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) exposed to the client-side. - -Signature: - -```typescript -export declare type PublicUiSettingsParams = Omit; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.redirectresponseoptions.md b/docs/development/core/server/kibana-plugin-core-server.redirectresponseoptions.md deleted file mode 100644 index cd5c326c1b9ed..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.redirectresponseoptions.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RedirectResponseOptions](./kibana-plugin-core-server.redirectresponseoptions.md) - -## RedirectResponseOptions type - -HTTP response parameters for redirection response - -Signature: - -```typescript -export declare type RedirectResponseOptions = HttpResponseOptions & { - headers: { - location: string; - }; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.registerdeprecationsconfig.getdeprecations.md b/docs/development/core/server/kibana-plugin-core-server.registerdeprecationsconfig.getdeprecations.md deleted file mode 100644 index cf008725ff15b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.registerdeprecationsconfig.getdeprecations.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RegisterDeprecationsConfig](./kibana-plugin-core-server.registerdeprecationsconfig.md) > [getDeprecations](./kibana-plugin-core-server.registerdeprecationsconfig.getdeprecations.md) - -## RegisterDeprecationsConfig.getDeprecations property - -Signature: - -```typescript -getDeprecations: (context: GetDeprecationsContext) => MaybePromise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.registerdeprecationsconfig.md b/docs/development/core/server/kibana-plugin-core-server.registerdeprecationsconfig.md deleted file mode 100644 index b7787a1406319..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.registerdeprecationsconfig.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RegisterDeprecationsConfig](./kibana-plugin-core-server.registerdeprecationsconfig.md) - -## RegisterDeprecationsConfig interface - - -Signature: - -```typescript -export interface RegisterDeprecationsConfig -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [getDeprecations](./kibana-plugin-core-server.registerdeprecationsconfig.getdeprecations.md) | (context: GetDeprecationsContext) => MaybePromise<DeprecationsDetails\[\]> | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.requesthandler.md b/docs/development/core/server/kibana-plugin-core-server.requesthandler.md deleted file mode 100644 index 0ba0f72d7ab2f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.requesthandler.md +++ /dev/null @@ -1,41 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RequestHandler](./kibana-plugin-core-server.requesthandler.md) - -## RequestHandler type - -A function executed when route path matched requested resource path. Request handler is expected to return a result of one of [KibanaResponseFactory](./kibana-plugin-core-server.kibanaresponsefactory.md) functions. If anything else is returned, or an error is thrown, the HTTP service will automatically log the error and respond `500 - Internal Server Error`. - -Signature: - -```typescript -export declare type RequestHandler

= (context: Context, request: KibanaRequest, response: ResponseFactory) => IKibanaResponse | Promise>; -``` - -## Example - - -```ts -const router = httpSetup.createRouter(); -// creates a route handler for GET request on 'my-app/path/{id}' path -router.get( - { - path: 'path/{id}', - // defines a validation schema for a named segment of the route path - validate: { - params: schema.object({ - id: schema.string(), - }), - }, - }, - // function to execute to create a responses - async (context, request, response) => { - const data = await context.findObject(request.params.id); - // creates a command to respond with 'not found' error - if (!data) return response.notFound(); - // creates a command to send found data to the client - return response.ok(data); - } -); -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.core.md b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.core.md deleted file mode 100644 index 8d0b715fdef7b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.core.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RequestHandlerContext](./kibana-plugin-core-server.requesthandlercontext.md) > [core](./kibana-plugin-core-server.requesthandlercontext.core.md) - -## RequestHandlerContext.core property - -Signature: - -```typescript -core: Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md deleted file mode 100644 index 214f8a6f6ba5c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontext.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RequestHandlerContext](./kibana-plugin-core-server.requesthandlercontext.md) - -## RequestHandlerContext interface - -Base context passed to a route handler. - -Signature: - -```typescript -export interface RequestHandlerContext extends RequestHandlerContextBase -``` -Extends: RequestHandlerContextBase - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [core](./kibana-plugin-core-server.requesthandlercontext.core.md) | Promise<CoreRequestHandlerContext> | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextbase.md b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextbase.md deleted file mode 100644 index 33a123eefae63..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextbase.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RequestHandlerContextBase](./kibana-plugin-core-server.requesthandlercontextbase.md) - -## RequestHandlerContextBase interface - -\* - -Signature: - -```typescript -export interface RequestHandlerContextBase -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [resolve](./kibana-plugin-core-server.requesthandlercontextbase.resolve.md) | <T extends keyof Omit<this, 'resolve'>>(parts: T\[\]) => Promise<AwaitedProperties<Pick<this, T>>> | Await all the specified context parts and return them. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextbase.resolve.md b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextbase.resolve.md deleted file mode 100644 index 74192c0e1aee8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextbase.resolve.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RequestHandlerContextBase](./kibana-plugin-core-server.requesthandlercontextbase.md) > [resolve](./kibana-plugin-core-server.requesthandlercontextbase.resolve.md) - -## RequestHandlerContextBase.resolve property - -Await all the specified context parts and return them. - -Signature: - -```typescript -resolve: >(parts: T[]) => Promise>>; -``` - -## Example - - -```ts -const resolved = await context.resolve(['core', 'pluginA']); -const esClient = resolved.core.elasticsearch.client; -const pluginAService = resolved.pluginA.someService; -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextcontainer.md b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextcontainer.md deleted file mode 100644 index 09e7ff261b795..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextcontainer.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RequestHandlerContextContainer](./kibana-plugin-core-server.requesthandlercontextcontainer.md) - -## RequestHandlerContextContainer type - -An object that handles registration of http request context providers. - -Signature: - -```typescript -export declare type RequestHandlerContextContainer = IContextContainer; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextprovider.md b/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextprovider.md deleted file mode 100644 index d94facd849eff..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.requesthandlercontextprovider.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RequestHandlerContextProvider](./kibana-plugin-core-server.requesthandlercontextprovider.md) - -## RequestHandlerContextProvider type - -Context provider for request handler. Extends request context object with provided functionality or data. - -Signature: - -```typescript -export declare type RequestHandlerContextProvider = IContextProvider; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.requesthandlerwrapper.md b/docs/development/core/server/kibana-plugin-core-server.requesthandlerwrapper.md deleted file mode 100644 index 6ae585b4eeb04..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.requesthandlerwrapper.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RequestHandlerWrapper](./kibana-plugin-core-server.requesthandlerwrapper.md) - -## RequestHandlerWrapper type - -Type-safe wrapper for [RequestHandler](./kibana-plugin-core-server.requesthandler.md) function. - -Signature: - -```typescript -export declare type RequestHandlerWrapper = (handler: RequestHandler) => RequestHandler; -``` - -## Example - - -```typescript -export const wrapper: RequestHandlerWrapper = handler => { - return async (context, request, response) => { - // do some logic - ... - }; -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.resolvecapabilitiesoptions.md b/docs/development/core/server/kibana-plugin-core-server.resolvecapabilitiesoptions.md deleted file mode 100644 index e23d07d7683de..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.resolvecapabilitiesoptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ResolveCapabilitiesOptions](./kibana-plugin-core-server.resolvecapabilitiesoptions.md) - -## ResolveCapabilitiesOptions interface - -Defines a set of additional options for the `resolveCapabilities` method of [CapabilitiesStart](./kibana-plugin-core-server.capabilitiesstart.md). - -Signature: - -```typescript -export interface ResolveCapabilitiesOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [useDefaultCapabilities](./kibana-plugin-core-server.resolvecapabilitiesoptions.usedefaultcapabilities.md) | boolean | Indicates if capability switchers are supposed to return a default set of capabilities. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.resolvecapabilitiesoptions.usedefaultcapabilities.md b/docs/development/core/server/kibana-plugin-core-server.resolvecapabilitiesoptions.usedefaultcapabilities.md deleted file mode 100644 index 792893a3fc096..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.resolvecapabilitiesoptions.usedefaultcapabilities.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ResolveCapabilitiesOptions](./kibana-plugin-core-server.resolvecapabilitiesoptions.md) > [useDefaultCapabilities](./kibana-plugin-core-server.resolvecapabilitiesoptions.usedefaultcapabilities.md) - -## ResolveCapabilitiesOptions.useDefaultCapabilities property - -Indicates if capability switchers are supposed to return a default set of capabilities. - -Signature: - -```typescript -useDefaultCapabilities: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.responseerror.md b/docs/development/core/server/kibana-plugin-core-server.responseerror.md deleted file mode 100644 index 2d37fa841f273..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.responseerror.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ResponseError](./kibana-plugin-core-server.responseerror.md) - -## ResponseError type - -Error message and optional data send to the client in case of error. - -Signature: - -```typescript -export declare type ResponseError = string | Error | { - message: string | Error; - attributes?: ResponseErrorAttributes; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.responseerrorattributes.md b/docs/development/core/server/kibana-plugin-core-server.responseerrorattributes.md deleted file mode 100644 index cc85b05f7154e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.responseerrorattributes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ResponseErrorAttributes](./kibana-plugin-core-server.responseerrorattributes.md) - -## ResponseErrorAttributes type - -Additional data to provide error details. - -Signature: - -```typescript -export declare type ResponseErrorAttributes = Record; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.responseheaders.md b/docs/development/core/server/kibana-plugin-core-server.responseheaders.md deleted file mode 100644 index fb7d6a10c6b6c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.responseheaders.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ResponseHeaders](./kibana-plugin-core-server.responseheaders.md) - -## ResponseHeaders type - -Http response headers to set. - -Signature: - -```typescript -export declare type ResponseHeaders = Record | Record; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfig.md b/docs/development/core/server/kibana-plugin-core-server.routeconfig.md deleted file mode 100644 index 6297e2745cd31..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfig.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfig](./kibana-plugin-core-server.routeconfig.md) - -## RouteConfig interface - -Route specific configuration. - -Signature: - -```typescript -export interface RouteConfig -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [options?](./kibana-plugin-core-server.routeconfig.options.md) | RouteConfigOptions<Method> | (Optional) Additional route options [RouteConfigOptions](./kibana-plugin-core-server.routeconfigoptions.md). | -| [path](./kibana-plugin-core-server.routeconfig.path.md) | string | The endpoint \_within\_ the router path to register the route. | -| [validate](./kibana-plugin-core-server.routeconfig.validate.md) | RouteValidatorFullConfig<P, Q, B> \| false | A schema created with @kbn/config-schema that every request will be validated against. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfig.options.md b/docs/development/core/server/kibana-plugin-core-server.routeconfig.options.md deleted file mode 100644 index 668e293e71827..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfig.options.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfig](./kibana-plugin-core-server.routeconfig.md) > [options](./kibana-plugin-core-server.routeconfig.options.md) - -## RouteConfig.options property - -Additional route options [RouteConfigOptions](./kibana-plugin-core-server.routeconfigoptions.md). - -Signature: - -```typescript -options?: RouteConfigOptions; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfig.path.md b/docs/development/core/server/kibana-plugin-core-server.routeconfig.path.md deleted file mode 100644 index 6d173322442a1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfig.path.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfig](./kibana-plugin-core-server.routeconfig.md) > [path](./kibana-plugin-core-server.routeconfig.path.md) - -## RouteConfig.path property - -The endpoint \_within\_ the router path to register the route. - -Signature: - -```typescript -path: string; -``` - -## Remarks - -E.g. if the router is registered at `/elasticsearch` and the route path is `/search`, the full path for the route is `/elasticsearch/search`. Supports: - named path segments `path/{name}`. - optional path segments `path/{position?}`. - multi-segments `path/{coordinates*2}`. Segments are accessible within a handler function as `params` property of [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md) object. To have read access to `params` you \*must\* specify validation schema with [RouteConfig.validate](./kibana-plugin-core-server.routeconfig.validate.md). - diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfig.validate.md b/docs/development/core/server/kibana-plugin-core-server.routeconfig.validate.md deleted file mode 100644 index 1f9cc216cad35..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfig.validate.md +++ /dev/null @@ -1,61 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfig](./kibana-plugin-core-server.routeconfig.md) > [validate](./kibana-plugin-core-server.routeconfig.validate.md) - -## RouteConfig.validate property - -A schema created with `@kbn/config-schema` that every request will be validated against. - -Signature: - -```typescript -validate: RouteValidatorFullConfig | false; -``` - -## Remarks - -You \*must\* specify a validation schema to be able to read: - url path segments - request query - request body To opt out of validating the request, specify `validate: false`. In this case request params, query, and body will be \*\*empty\*\* objects and have no access to raw values. In some cases you may want to use another validation library. To do this, you need to instruct the `@kbn/config-schema` library to output \*\*non-validated values\*\* with setting schema as `schema.object({}, { unknowns: 'allow' })`; - -## Example - - -```ts - import { schema } from '@kbn/config-schema'; - router.get({ - path: 'path/{id}', - validate: { - params: schema.object({ - id: schema.string(), - }), - query: schema.object({...}), - body: schema.object({...}), - }, -}, -(context, req, res,) { - req.params; // type Readonly<{id: string}> - console.log(req.params.id); // value -}); - -router.get({ - path: 'path/{id}', - validate: false, // handler has no access to params, query, body values. -}, -(context, req, res,) { - req.params; // type Readonly<{}>; - console.log(req.params.id); // undefined -}); - -router.get({ - path: 'path/{id}', - validate: { - // handler has access to raw non-validated params in runtime - params: schema.object({}, { unknowns: 'allow' }) - }, -}, -(context, req, res,) { - req.params; // type Readonly<{}>; - console.log(req.params.id); // value - myValidationLibrary.validate({ params: req.params }); -}); -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.authrequired.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.authrequired.md deleted file mode 100644 index 28f712316bc36..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.authrequired.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfigOptions](./kibana-plugin-core-server.routeconfigoptions.md) > [authRequired](./kibana-plugin-core-server.routeconfigoptions.authrequired.md) - -## RouteConfigOptions.authRequired property - -Defines authentication mode for a route: - true. A user has to have valid credentials to access a resource - false. A user can access a resource without any credentials. - 'optional'. A user can access a resource, and will be authenticated if provided credentials are valid. Can be useful when we grant access to a resource but want to identify a user if possible. - -Defaults to `true` if an auth mechanism is registered. - -Signature: - -```typescript -authRequired?: boolean | 'optional'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.body.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.body.md deleted file mode 100644 index a243eb1d91d5b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.body.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfigOptions](./kibana-plugin-core-server.routeconfigoptions.md) > [body](./kibana-plugin-core-server.routeconfigoptions.body.md) - -## RouteConfigOptions.body property - -Additional body options [RouteConfigOptionsBody](./kibana-plugin-core-server.routeconfigoptionsbody.md). - -Signature: - -```typescript -body?: Method extends 'get' | 'options' ? undefined : RouteConfigOptionsBody; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.md deleted file mode 100644 index 2dcd8ee5420ab..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfigOptions](./kibana-plugin-core-server.routeconfigoptions.md) - -## RouteConfigOptions interface - -Additional route options. - -Signature: - -```typescript -export interface RouteConfigOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [authRequired?](./kibana-plugin-core-server.routeconfigoptions.authrequired.md) | boolean \| 'optional' | (Optional) Defines authentication mode for a route: - true. A user has to have valid credentials to access a resource - false. A user can access a resource without any credentials. - 'optional'. A user can access a resource, and will be authenticated if provided credentials are valid. Can be useful when we grant access to a resource but want to identify a user if possible.Defaults to true if an auth mechanism is registered. | -| [body?](./kibana-plugin-core-server.routeconfigoptions.body.md) | Method extends 'get' \| 'options' ? undefined : RouteConfigOptionsBody | (Optional) Additional body options [RouteConfigOptionsBody](./kibana-plugin-core-server.routeconfigoptionsbody.md). | -| [tags?](./kibana-plugin-core-server.routeconfigoptions.tags.md) | readonly string\[\] | (Optional) Additional metadata tag strings to attach to the route. | -| [timeout?](./kibana-plugin-core-server.routeconfigoptions.timeout.md) | { payload?: Method extends 'get' \| 'options' ? undefined : number; idleSocket?: number; } | (Optional) Defines per-route timeouts. | -| [xsrfRequired?](./kibana-plugin-core-server.routeconfigoptions.xsrfrequired.md) | Method extends 'get' ? never : boolean | (Optional) Defines xsrf protection requirements for a route: - true. Requires an incoming POST/PUT/DELETE request to contain kbn-xsrf header. - false. Disables xsrf protection.Set to true by default | - diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.tags.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.tags.md deleted file mode 100644 index f279a414d021f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.tags.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfigOptions](./kibana-plugin-core-server.routeconfigoptions.md) > [tags](./kibana-plugin-core-server.routeconfigoptions.tags.md) - -## RouteConfigOptions.tags property - -Additional metadata tag strings to attach to the route. - -Signature: - -```typescript -tags?: readonly string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.timeout.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.timeout.md deleted file mode 100644 index f602a8913964f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.timeout.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfigOptions](./kibana-plugin-core-server.routeconfigoptions.md) > [timeout](./kibana-plugin-core-server.routeconfigoptions.timeout.md) - -## RouteConfigOptions.timeout property - -Defines per-route timeouts. - -Signature: - -```typescript -timeout?: { - payload?: Method extends 'get' | 'options' ? undefined : number; - idleSocket?: number; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.xsrfrequired.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.xsrfrequired.md deleted file mode 100644 index 1b6a43332e87f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptions.xsrfrequired.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfigOptions](./kibana-plugin-core-server.routeconfigoptions.md) > [xsrfRequired](./kibana-plugin-core-server.routeconfigoptions.xsrfrequired.md) - -## RouteConfigOptions.xsrfRequired property - -Defines xsrf protection requirements for a route: - true. Requires an incoming POST/PUT/DELETE request to contain `kbn-xsrf` header. - false. Disables xsrf protection. - -Set to true by default - -Signature: - -```typescript -xsrfRequired?: Method extends 'get' ? never : boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.accepts.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.accepts.md deleted file mode 100644 index 1e98e33cec00f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.accepts.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfigOptionsBody](./kibana-plugin-core-server.routeconfigoptionsbody.md) > [accepts](./kibana-plugin-core-server.routeconfigoptionsbody.accepts.md) - -## RouteConfigOptionsBody.accepts property - -A string or an array of strings with the allowed mime types for the endpoint. Use this settings to limit the set of allowed mime types. Note that allowing additional mime types not listed above will not enable them to be parsed, and if parse is true, the request will result in an error response. - -Default value: allows parsing of the following mime types: \* application/json \* application/\*+json \* application/octet-stream \* application/x-www-form-urlencoded \* multipart/form-data \* text/\* - -Signature: - -```typescript -accepts?: RouteContentType | RouteContentType[] | string | string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md deleted file mode 100644 index 4d2641255adb4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfigOptionsBody](./kibana-plugin-core-server.routeconfigoptionsbody.md) > [maxBytes](./kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md) - -## RouteConfigOptionsBody.maxBytes property - -Limits the size of incoming payloads to the specified byte count. Allowing very large payloads may cause the server to run out of memory. - -Default value: The one set in the kibana.yml config file under the parameter `server.maxPayload`. - -Signature: - -```typescript -maxBytes?: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.md deleted file mode 100644 index fdae03f7cd7c9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfigOptionsBody](./kibana-plugin-core-server.routeconfigoptionsbody.md) - -## RouteConfigOptionsBody interface - -Additional body options for a route - -Signature: - -```typescript -export interface RouteConfigOptionsBody -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [accepts?](./kibana-plugin-core-server.routeconfigoptionsbody.accepts.md) | RouteContentType \| RouteContentType\[\] \| string \| string\[\] | (Optional) A string or an array of strings with the allowed mime types for the endpoint. Use this settings to limit the set of allowed mime types. Note that allowing additional mime types not listed above will not enable them to be parsed, and if parse is true, the request will result in an error response.Default value: allows parsing of the following mime types: \* application/json \* application/\*+json \* application/octet-stream \* application/x-www-form-urlencoded \* multipart/form-data \* text/\* | -| [maxBytes?](./kibana-plugin-core-server.routeconfigoptionsbody.maxbytes.md) | number | (Optional) Limits the size of incoming payloads to the specified byte count. Allowing very large payloads may cause the server to run out of memory.Default value: The one set in the kibana.yml config file under the parameter server.maxPayload. | -| [output?](./kibana-plugin-core-server.routeconfigoptionsbody.output.md) | typeof validBodyOutput\[number\] | (Optional) The processed payload format. The value must be one of: \* 'data' - the incoming payload is read fully into memory. If parse is true, the payload is parsed (JSON, form-decoded, multipart) based on the 'Content-Type' header. If parse is false, a raw Buffer is returned. \* 'stream' - the incoming payload is made available via a Stream.Readable interface. If the payload is 'multipart/form-data' and parse is true, field values are presented as text while files are provided as streams. File streams from a 'multipart/form-data' upload will also have a hapi property containing the filename and headers properties. Note that payload streams for multipart payloads are a synthetic interface created on top of the entire multipart content loaded into memory. To avoid loading large multipart payloads into memory, set parse to false and handle the multipart payload in the handler using a streaming parser (e.g. pez).Default value: 'data', unless no validation.body is provided in the route definition. In that case the default is 'stream' to alleviate memory pressure. | -| [parse?](./kibana-plugin-core-server.routeconfigoptionsbody.parse.md) | boolean \| 'gunzip' | (Optional) Determines if the incoming payload is processed or presented raw. Available values: \* true - if the request 'Content-Type' matches the allowed mime types set by allow (for the whole payload as well as parts), the payload is converted into an object when possible. If the format is unknown, a Bad Request (400) error response is sent. Any known content encoding is decoded. \* false - the raw payload is returned unmodified. \* 'gunzip' - the raw payload is returned unmodified after any known content encoding is decoded.Default value: true, unless no validation.body is provided in the route definition. In that case the default is false to alleviate memory pressure. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.output.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.output.md deleted file mode 100644 index a7d712a39e808..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.output.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfigOptionsBody](./kibana-plugin-core-server.routeconfigoptionsbody.md) > [output](./kibana-plugin-core-server.routeconfigoptionsbody.output.md) - -## RouteConfigOptionsBody.output property - -The processed payload format. The value must be one of: \* 'data' - the incoming payload is read fully into memory. If parse is true, the payload is parsed (JSON, form-decoded, multipart) based on the 'Content-Type' header. If parse is false, a raw Buffer is returned. \* 'stream' - the incoming payload is made available via a Stream.Readable interface. If the payload is 'multipart/form-data' and parse is true, field values are presented as text while files are provided as streams. File streams from a 'multipart/form-data' upload will also have a hapi property containing the filename and headers properties. Note that payload streams for multipart payloads are a synthetic interface created on top of the entire multipart content loaded into memory. To avoid loading large multipart payloads into memory, set parse to false and handle the multipart payload in the handler using a streaming parser (e.g. pez). - -Default value: 'data', unless no validation.body is provided in the route definition. In that case the default is 'stream' to alleviate memory pressure. - -Signature: - -```typescript -output?: typeof validBodyOutput[number]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.parse.md b/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.parse.md deleted file mode 100644 index 80c8d470598e6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeconfigoptionsbody.parse.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteConfigOptionsBody](./kibana-plugin-core-server.routeconfigoptionsbody.md) > [parse](./kibana-plugin-core-server.routeconfigoptionsbody.parse.md) - -## RouteConfigOptionsBody.parse property - -Determines if the incoming payload is processed or presented raw. Available values: \* true - if the request 'Content-Type' matches the allowed mime types set by allow (for the whole payload as well as parts), the payload is converted into an object when possible. If the format is unknown, a Bad Request (400) error response is sent. Any known content encoding is decoded. \* false - the raw payload is returned unmodified. \* 'gunzip' - the raw payload is returned unmodified after any known content encoding is decoded. - -Default value: true, unless no validation.body is provided in the route definition. In that case the default is false to alleviate memory pressure. - -Signature: - -```typescript -parse?: boolean | 'gunzip'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routecontenttype.md b/docs/development/core/server/kibana-plugin-core-server.routecontenttype.md deleted file mode 100644 index 8d8b041f3c722..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routecontenttype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteContentType](./kibana-plugin-core-server.routecontenttype.md) - -## RouteContentType type - -The set of supported parseable Content-Types - -Signature: - -```typescript -export declare type RouteContentType = 'application/json' | 'application/*+json' | 'application/octet-stream' | 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/*'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routemethod.md b/docs/development/core/server/kibana-plugin-core-server.routemethod.md deleted file mode 100644 index 297ed5ce25cee..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routemethod.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteMethod](./kibana-plugin-core-server.routemethod.md) - -## RouteMethod type - -The set of common HTTP methods supported by Kibana routing. - -Signature: - -```typescript -export declare type RouteMethod = SafeRouteMethod | DestructiveRouteMethod; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routeregistrar.md b/docs/development/core/server/kibana-plugin-core-server.routeregistrar.md deleted file mode 100644 index 3ddb350a38b6f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routeregistrar.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteRegistrar](./kibana-plugin-core-server.routeregistrar.md) - -## RouteRegistrar type - -Route handler common definition - -Signature: - -```typescript -export declare type RouteRegistrar = (route: RouteConfig, handler: RequestHandler) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidationerror._constructor_.md b/docs/development/core/server/kibana-plugin-core-server.routevalidationerror._constructor_.md deleted file mode 100644 index ad1a4bae0dab1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidationerror._constructor_.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidationError](./kibana-plugin-core-server.routevalidationerror.md) > [(constructor)](./kibana-plugin-core-server.routevalidationerror._constructor_.md) - -## RouteValidationError.(constructor) - -Constructs a new instance of the `RouteValidationError` class - -Signature: - -```typescript -constructor(error: Error | string, path?: string[]); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| string | | -| path | string\[\] | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidationerror.md b/docs/development/core/server/kibana-plugin-core-server.routevalidationerror.md deleted file mode 100644 index 60a47236b4be5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidationerror.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidationError](./kibana-plugin-core-server.routevalidationerror.md) - -## RouteValidationError class - -Error to return when the validation is not successful. - -Signature: - -```typescript -export declare class RouteValidationError extends SchemaTypeError -``` -Extends: SchemaTypeError - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(error, path)](./kibana-plugin-core-server.routevalidationerror._constructor_.md) | | Constructs a new instance of the RouteValidationError class | - diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidationfunction.md b/docs/development/core/server/kibana-plugin-core-server.routevalidationfunction.md deleted file mode 100644 index e3fd33552f7df..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidationfunction.md +++ /dev/null @@ -1,41 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidationFunction](./kibana-plugin-core-server.routevalidationfunction.md) - -## RouteValidationFunction type - -The custom validation function if @kbn/config-schema is not a valid solution for your specific plugin requirements. - -Signature: - -```typescript -export declare type RouteValidationFunction = (data: any, validationResult: RouteValidationResultFactory) => { - value: T; - error?: never; -} | { - value?: never; - error: RouteValidationError; -}; -``` - -## Example - -The validation should look something like: - -```typescript -interface MyExpectedBody { - bar: string; - baz: number; -} - -const myBodyValidation: RouteValidationFunction = (data, validationResult) => { - const { ok, badRequest } = validationResult; - const { bar, baz } = data || {}; - if (typeof bar === 'string' && typeof baz === 'number') { - return ok({ bar, baz }); - } else { - return badRequest('Wrong payload', ['body']); - } -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.badrequest.md b/docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.badrequest.md deleted file mode 100644 index d02ce47a84d50..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.badrequest.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidationResultFactory](./kibana-plugin-core-server.routevalidationresultfactory.md) > [badRequest](./kibana-plugin-core-server.routevalidationresultfactory.badrequest.md) - -## RouteValidationResultFactory.badRequest property - -Signature: - -```typescript -badRequest: (error: Error | string, path?: string[]) => { - error: RouteValidationError; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.md b/docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.md deleted file mode 100644 index 69e8b5e73136e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidationResultFactory](./kibana-plugin-core-server.routevalidationresultfactory.md) - -## RouteValidationResultFactory interface - -Validation result factory to be used in the custom validation function to return the valid data or validation errors - -See [RouteValidationFunction](./kibana-plugin-core-server.routevalidationfunction.md). - -Signature: - -```typescript -export interface RouteValidationResultFactory -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [badRequest](./kibana-plugin-core-server.routevalidationresultfactory.badrequest.md) | (error: Error \| string, path?: string\[\]) => { error: RouteValidationError; } | | -| [ok](./kibana-plugin-core-server.routevalidationresultfactory.ok.md) | <T>(value: T) => { value: T; } | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.ok.md b/docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.ok.md deleted file mode 100644 index 42e7a055cd021..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidationresultfactory.ok.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidationResultFactory](./kibana-plugin-core-server.routevalidationresultfactory.md) > [ok](./kibana-plugin-core-server.routevalidationresultfactory.ok.md) - -## RouteValidationResultFactory.ok property - -Signature: - -```typescript -ok: (value: T) => { - value: T; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidationspec.md b/docs/development/core/server/kibana-plugin-core-server.routevalidationspec.md deleted file mode 100644 index 193e047efcfe0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidationspec.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidationSpec](./kibana-plugin-core-server.routevalidationspec.md) - -## RouteValidationSpec type - -Allowed property validation options: either @kbn/config-schema validations or custom validation functions - -See [RouteValidationFunction](./kibana-plugin-core-server.routevalidationfunction.md) for custom validation. - -Signature: - -```typescript -export declare type RouteValidationSpec = ObjectType | Type | RouteValidationFunction; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.body.md b/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.body.md deleted file mode 100644 index 922a475b432fa..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.body.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidatorConfig](./kibana-plugin-core-server.routevalidatorconfig.md) > [body](./kibana-plugin-core-server.routevalidatorconfig.body.md) - -## RouteValidatorConfig.body property - -Validation logic for the body payload - -Signature: - -```typescript -body?: RouteValidationSpec; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.md b/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.md deleted file mode 100644 index 848bf6aa4b15e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidatorConfig](./kibana-plugin-core-server.routevalidatorconfig.md) - -## RouteValidatorConfig interface - -The configuration object to the RouteValidator class. Set `params`, `query` and/or `body` to specify the validation logic to follow for that property. - -Signature: - -```typescript -export interface RouteValidatorConfig -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [body?](./kibana-plugin-core-server.routevalidatorconfig.body.md) | RouteValidationSpec<B> | (Optional) Validation logic for the body payload | -| [params?](./kibana-plugin-core-server.routevalidatorconfig.params.md) | RouteValidationSpec<P> | (Optional) Validation logic for the URL params | -| [query?](./kibana-plugin-core-server.routevalidatorconfig.query.md) | RouteValidationSpec<Q> | (Optional) Validation logic for the Query params | - diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.params.md b/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.params.md deleted file mode 100644 index 1281d4ab78f6f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.params.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidatorConfig](./kibana-plugin-core-server.routevalidatorconfig.md) > [params](./kibana-plugin-core-server.routevalidatorconfig.params.md) - -## RouteValidatorConfig.params property - -Validation logic for the URL params - -Signature: - -```typescript -params?: RouteValidationSpec

; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.query.md b/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.query.md deleted file mode 100644 index 9bda00954c02f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidatorconfig.query.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidatorConfig](./kibana-plugin-core-server.routevalidatorconfig.md) > [query](./kibana-plugin-core-server.routevalidatorconfig.query.md) - -## RouteValidatorConfig.query property - -Validation logic for the Query params - -Signature: - -```typescript -query?: RouteValidationSpec; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidatorfullconfig.md b/docs/development/core/server/kibana-plugin-core-server.routevalidatorfullconfig.md deleted file mode 100644 index 4ed91aee6b8a6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidatorfullconfig.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidatorFullConfig](./kibana-plugin-core-server.routevalidatorfullconfig.md) - -## RouteValidatorFullConfig type - -Route validations config and options merged into one object - -Signature: - -```typescript -export declare type RouteValidatorFullConfig = RouteValidatorConfig & RouteValidatorOptions; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidatoroptions.md b/docs/development/core/server/kibana-plugin-core-server.routevalidatoroptions.md deleted file mode 100644 index f054ca388762a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidatoroptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidatorOptions](./kibana-plugin-core-server.routevalidatoroptions.md) - -## RouteValidatorOptions interface - -Additional options for the RouteValidator class to modify its default behaviour. - -Signature: - -```typescript -export interface RouteValidatorOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [unsafe?](./kibana-plugin-core-server.routevalidatoroptions.unsafe.md) | { params?: boolean; query?: boolean; body?: boolean; } | (Optional) Set the unsafe config to avoid running some additional internal \*safe\* validations on top of your custom validation | - diff --git a/docs/development/core/server/kibana-plugin-core-server.routevalidatoroptions.unsafe.md b/docs/development/core/server/kibana-plugin-core-server.routevalidatoroptions.unsafe.md deleted file mode 100644 index ca66ccbb55a36..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.routevalidatoroptions.unsafe.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [RouteValidatorOptions](./kibana-plugin-core-server.routevalidatoroptions.md) > [unsafe](./kibana-plugin-core-server.routevalidatoroptions.unsafe.md) - -## RouteValidatorOptions.unsafe property - -Set the `unsafe` config to avoid running some additional internal \*safe\* validations on top of your custom validation - -Signature: - -```typescript -unsafe?: { - params?: boolean; - query?: boolean; - body?: boolean; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.saferoutemethod.md b/docs/development/core/server/kibana-plugin-core-server.saferoutemethod.md deleted file mode 100644 index 93a8d8de358be..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.saferoutemethod.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SafeRouteMethod](./kibana-plugin-core-server.saferoutemethod.md) - -## SafeRouteMethod type - -Set of HTTP methods not changing the state of the server. - -Signature: - -```typescript -export declare type SafeRouteMethod = 'get' | 'options'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.attributes.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.attributes.md deleted file mode 100644 index 3bc0900bb4005..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.attributes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) > [attributes](./kibana-plugin-core-server.savedobject.attributes.md) - -## SavedObject.attributes property - -The data for a Saved Object is stored as an object in the `attributes` property. - -Signature: - -```typescript -attributes: T; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.coremigrationversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.coremigrationversion.md deleted file mode 100644 index b4d1f3c769451..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.coremigrationversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) > [coreMigrationVersion](./kibana-plugin-core-server.savedobject.coremigrationversion.md) - -## SavedObject.coreMigrationVersion property - -A semver value that is used when upgrading objects between Kibana versions. - -Signature: - -```typescript -coreMigrationVersion?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.error.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.error.md deleted file mode 100644 index ef42053e38626..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) > [error](./kibana-plugin-core-server.savedobject.error.md) - -## SavedObject.error property - -Signature: - -```typescript -error?: SavedObjectError; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.id.md deleted file mode 100644 index 86adacdc4c41a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) > [id](./kibana-plugin-core-server.savedobject.id.md) - -## SavedObject.id property - -The ID of this Saved Object, guaranteed to be unique for all objects of the same `type` - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.md deleted file mode 100644 index cffb47659dc23..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) - -## SavedObject interface - -Signature: - -```typescript -export interface SavedObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [attributes](./kibana-plugin-core-server.savedobject.attributes.md) | T | The data for a Saved Object is stored as an object in the attributes property. | -| [coreMigrationVersion?](./kibana-plugin-core-server.savedobject.coremigrationversion.md) | string | (Optional) A semver value that is used when upgrading objects between Kibana versions. | -| [error?](./kibana-plugin-core-server.savedobject.error.md) | SavedObjectError | (Optional) | -| [id](./kibana-plugin-core-server.savedobject.id.md) | string | The ID of this Saved Object, guaranteed to be unique for all objects of the same type | -| [migrationVersion?](./kibana-plugin-core-server.savedobject.migrationversion.md) | SavedObjectsMigrationVersion | (Optional) Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. | -| [namespaces?](./kibana-plugin-core-server.savedobject.namespaces.md) | string\[\] | (Optional) Space(s) that this saved object exists in. This attribute is not used for "global" saved object types which are registered with namespaceType: 'agnostic'. | -| [originId?](./kibana-plugin-core-server.savedobject.originid.md) | string | (Optional) The ID of the saved object this originated from. This is set if this object's id was regenerated; that can happen during migration from a legacy single-namespace type, or during import. It is only set during migration or create operations. This is used during import to ensure that ID regeneration is deterministic, so saved objects will be overwritten if they are imported multiple times into a given space. | -| [references](./kibana-plugin-core-server.savedobject.references.md) | SavedObjectReference\[\] | A reference to another saved object. | -| [type](./kibana-plugin-core-server.savedobject.type.md) | string | The type of Saved Object. Each plugin can define it's own custom Saved Object types. | -| [updated\_at?](./kibana-plugin-core-server.savedobject.updated_at.md) | string | (Optional) Timestamp of the last time this document had been updated. | -| [version?](./kibana-plugin-core-server.savedobject.version.md) | string | (Optional) An opaque version number which changes on each successful write operation. Can be used for implementing optimistic concurrency control. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.migrationversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.migrationversion.md deleted file mode 100644 index 3b3eaa6e5da06..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.migrationversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) > [migrationVersion](./kibana-plugin-core-server.savedobject.migrationversion.md) - -## SavedObject.migrationVersion property - -Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. - -Signature: - -```typescript -migrationVersion?: SavedObjectsMigrationVersion; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.namespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.namespaces.md deleted file mode 100644 index 3c2909486219b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.namespaces.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) > [namespaces](./kibana-plugin-core-server.savedobject.namespaces.md) - -## SavedObject.namespaces property - -Space(s) that this saved object exists in. This attribute is not used for "global" saved object types which are registered with `namespaceType: 'agnostic'`. - -Signature: - -```typescript -namespaces?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.originid.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.originid.md deleted file mode 100644 index 95bcad7ce8b1b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.originid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) > [originId](./kibana-plugin-core-server.savedobject.originid.md) - -## SavedObject.originId property - -The ID of the saved object this originated from. This is set if this object's `id` was regenerated; that can happen during migration from a legacy single-namespace type, or during import. It is only set during migration or create operations. This is used during import to ensure that ID regeneration is deterministic, so saved objects will be overwritten if they are imported multiple times into a given space. - -Signature: - -```typescript -originId?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.references.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.references.md deleted file mode 100644 index f8290bd40d217..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.references.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) > [references](./kibana-plugin-core-server.savedobject.references.md) - -## SavedObject.references property - -A reference to another saved object. - -Signature: - -```typescript -references: SavedObjectReference[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.type.md deleted file mode 100644 index 6c667b0b9c3a0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) > [type](./kibana-plugin-core-server.savedobject.type.md) - -## SavedObject.type property - -The type of Saved Object. Each plugin can define it's own custom Saved Object types. - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.updated_at.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.updated_at.md deleted file mode 100644 index a9585761ca808..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.updated_at.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) > [updated\_at](./kibana-plugin-core-server.savedobject.updated_at.md) - -## SavedObject.updated\_at property - -Timestamp of the last time this document had been updated. - -Signature: - -```typescript -updated_at?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobject.version.md b/docs/development/core/server/kibana-plugin-core-server.savedobject.version.md deleted file mode 100644 index ef8fd3be86beb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobject.version.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObject](./kibana-plugin-core-server.savedobject.md) > [version](./kibana-plugin-core-server.savedobject.version.md) - -## SavedObject.version property - -An opaque version number which changes on each successful write operation. Can be used for implementing optimistic concurrency control. - -Signature: - -```typescript -version?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectattribute.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectattribute.md deleted file mode 100644 index 1a1e3f62d34f9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectattribute.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectAttribute](./kibana-plugin-core-server.savedobjectattribute.md) - -## SavedObjectAttribute type - -Type definition for a Saved Object attribute value - -Signature: - -```typescript -export declare type SavedObjectAttribute = SavedObjectAttributeSingle | SavedObjectAttributeSingle[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectattributes.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectattributes.md deleted file mode 100644 index 2b8b212cd78d6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectattributes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectAttributes](./kibana-plugin-core-server.savedobjectattributes.md) - -## SavedObjectAttributes interface - -The data for a Saved Object is stored as an object in the `attributes` property. - -Signature: - -```typescript -export interface SavedObjectAttributes -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectattributesingle.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectattributesingle.md deleted file mode 100644 index 7c84fa5414074..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectattributesingle.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectAttributeSingle](./kibana-plugin-core-server.savedobjectattributesingle.md) - -## SavedObjectAttributeSingle type - -Don't use this type, it's simply a helper type for [SavedObjectAttribute](./kibana-plugin-core-server.savedobjectattribute.md) - -Signature: - -```typescript -export declare type SavedObjectAttributeSingle = string | number | boolean | null | undefined | SavedObjectAttributes; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.excludeexportdetails.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.excludeexportdetails.md deleted file mode 100644 index 0972d82987f51..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.excludeexportdetails.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectExportBaseOptions](./kibana-plugin-core-server.savedobjectexportbaseoptions.md) > [excludeExportDetails](./kibana-plugin-core-server.savedobjectexportbaseoptions.excludeexportdetails.md) - -## SavedObjectExportBaseOptions.excludeExportDetails property - -flag to not append [export details](./kibana-plugin-core-server.savedobjectsexportresultdetails.md) to the end of the export stream. - -Signature: - -```typescript -excludeExportDetails?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md deleted file mode 100644 index 8ac532c601efc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectExportBaseOptions](./kibana-plugin-core-server.savedobjectexportbaseoptions.md) > [includeNamespaces](./kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md) - -## SavedObjectExportBaseOptions.includeNamespaces property - -Flag to also include namespace information in the export stream. By default, namespace information is not included in exported objects. This is only intended to be used internally during copy-to-space operations, and it is not exposed as an option for the external HTTP route for exports. - -Signature: - -```typescript -includeNamespaces?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includereferencesdeep.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includereferencesdeep.md deleted file mode 100644 index 6a7c86c1af860..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.includereferencesdeep.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectExportBaseOptions](./kibana-plugin-core-server.savedobjectexportbaseoptions.md) > [includeReferencesDeep](./kibana-plugin-core-server.savedobjectexportbaseoptions.includereferencesdeep.md) - -## SavedObjectExportBaseOptions.includeReferencesDeep property - -flag to also include all related saved objects in the export stream. - -Signature: - -```typescript -includeReferencesDeep?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.md deleted file mode 100644 index d2749cb85cd3a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectExportBaseOptions](./kibana-plugin-core-server.savedobjectexportbaseoptions.md) - -## SavedObjectExportBaseOptions interface - - -Signature: - -```typescript -export interface SavedObjectExportBaseOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [excludeExportDetails?](./kibana-plugin-core-server.savedobjectexportbaseoptions.excludeexportdetails.md) | boolean | (Optional) flag to not append [export details](./kibana-plugin-core-server.savedobjectsexportresultdetails.md) to the end of the export stream. | -| [includeNamespaces?](./kibana-plugin-core-server.savedobjectexportbaseoptions.includenamespaces.md) | boolean | (Optional) Flag to also include namespace information in the export stream. By default, namespace information is not included in exported objects. This is only intended to be used internally during copy-to-space operations, and it is not exposed as an option for the external HTTP route for exports. | -| [includeReferencesDeep?](./kibana-plugin-core-server.savedobjectexportbaseoptions.includereferencesdeep.md) | boolean | (Optional) flag to also include all related saved objects in the export stream. | -| [namespace?](./kibana-plugin-core-server.savedobjectexportbaseoptions.namespace.md) | string | (Optional) optional namespace to override the namespace used by the savedObjectsClient. | -| [request](./kibana-plugin-core-server.savedobjectexportbaseoptions.request.md) | KibanaRequest | The http request initiating the export. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.namespace.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.namespace.md deleted file mode 100644 index 9a8dad24ac18e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.namespace.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectExportBaseOptions](./kibana-plugin-core-server.savedobjectexportbaseoptions.md) > [namespace](./kibana-plugin-core-server.savedobjectexportbaseoptions.namespace.md) - -## SavedObjectExportBaseOptions.namespace property - -optional namespace to override the namespace used by the savedObjectsClient. - -Signature: - -```typescript -namespace?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.request.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.request.md deleted file mode 100644 index d425f9b88e818..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectexportbaseoptions.request.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectExportBaseOptions](./kibana-plugin-core-server.savedobjectexportbaseoptions.md) > [request](./kibana-plugin-core-server.savedobjectexportbaseoptions.request.md) - -## SavedObjectExportBaseOptions.request property - -The http request initiating the export. - -Signature: - -```typescript -request: KibanaRequest; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.converttomultinamespacetypeversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.converttomultinamespacetypeversion.md deleted file mode 100644 index 9fe43a2f3f477..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.converttomultinamespacetypeversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectMigrationContext](./kibana-plugin-core-server.savedobjectmigrationcontext.md) > [convertToMultiNamespaceTypeVersion](./kibana-plugin-core-server.savedobjectmigrationcontext.converttomultinamespacetypeversion.md) - -## SavedObjectMigrationContext.convertToMultiNamespaceTypeVersion property - -The version in which this object type is being converted to a multi-namespace type - -Signature: - -```typescript -readonly convertToMultiNamespaceTypeVersion?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.issinglenamespacetype.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.issinglenamespacetype.md deleted file mode 100644 index 528be67f029c6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.issinglenamespacetype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectMigrationContext](./kibana-plugin-core-server.savedobjectmigrationcontext.md) > [isSingleNamespaceType](./kibana-plugin-core-server.savedobjectmigrationcontext.issinglenamespacetype.md) - -## SavedObjectMigrationContext.isSingleNamespaceType property - -Whether this is a single-namespace type or not - -Signature: - -```typescript -readonly isSingleNamespaceType: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.log.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.log.md deleted file mode 100644 index 20a0e99275a39..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.log.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectMigrationContext](./kibana-plugin-core-server.savedobjectmigrationcontext.md) > [log](./kibana-plugin-core-server.savedobjectmigrationcontext.log.md) - -## SavedObjectMigrationContext.log property - -logger instance to be used by the migration handler - -Signature: - -```typescript -readonly log: SavedObjectsMigrationLogger; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.md deleted file mode 100644 index 3a265cc8e1d42..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectMigrationContext](./kibana-plugin-core-server.savedobjectmigrationcontext.md) - -## SavedObjectMigrationContext interface - -Migration context provided when invoking a [migration handler](./kibana-plugin-core-server.savedobjectmigrationfn.md) - -Signature: - -```typescript -export interface SavedObjectMigrationContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [convertToMultiNamespaceTypeVersion?](./kibana-plugin-core-server.savedobjectmigrationcontext.converttomultinamespacetypeversion.md) | string | (Optional) The version in which this object type is being converted to a multi-namespace type | -| [isSingleNamespaceType](./kibana-plugin-core-server.savedobjectmigrationcontext.issinglenamespacetype.md) | boolean | Whether this is a single-namespace type or not | -| [log](./kibana-plugin-core-server.savedobjectmigrationcontext.log.md) | SavedObjectsMigrationLogger | logger instance to be used by the migration handler | -| [migrationVersion](./kibana-plugin-core-server.savedobjectmigrationcontext.migrationversion.md) | string | The migration version that this migration function is defined for | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.migrationversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.migrationversion.md deleted file mode 100644 index a1c2717e6e4a0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationcontext.migrationversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectMigrationContext](./kibana-plugin-core-server.savedobjectmigrationcontext.md) > [migrationVersion](./kibana-plugin-core-server.savedobjectmigrationcontext.migrationversion.md) - -## SavedObjectMigrationContext.migrationVersion property - -The migration version that this migration function is defined for - -Signature: - -```typescript -readonly migrationVersion: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationfn.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationfn.md deleted file mode 100644 index 1c96c63a3d4fe..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationfn.md +++ /dev/null @@ -1,43 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectMigrationFn](./kibana-plugin-core-server.savedobjectmigrationfn.md) - -## SavedObjectMigrationFn type - -A migration function for a [saved object type](./kibana-plugin-core-server.savedobjectstype.md) used to migrate it to a given version - -Signature: - -```typescript -export declare type SavedObjectMigrationFn = (doc: SavedObjectUnsanitizedDoc, context: SavedObjectMigrationContext) => SavedObjectUnsanitizedDoc; -``` - -## Example - - -```typescript -interface TypeV1Attributes { - someKey: string; - obsoleteProperty: number; -} - -interface TypeV2Attributes { - someKey: string; - newProperty: string; -} - -const migrateToV2: SavedObjectMigrationFn = (doc, { log }) => { - const { obsoleteProperty, ...otherAttributes } = doc.attributes; - // instead of mutating `doc` we make a shallow copy so that we can use separate types for the input - // and output attributes. We don't need to make a deep copy, we just need to ensure that obsolete - // attributes are not present on the returned doc. - return { - ...doc, - attributes: { - ...otherAttributes, - newProperty: migrate(obsoleteProperty), - }, - }; -}; -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationmap.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationmap.md deleted file mode 100644 index 64575d34bfb10..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectmigrationmap.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectMigrationMap](./kibana-plugin-core-server.savedobjectmigrationmap.md) - -## SavedObjectMigrationMap interface - -A map of [migration functions](./kibana-plugin-core-server.savedobjectmigrationfn.md) to be used for a given type. The map's keys must be valid semver versions, and they cannot exceed the current Kibana version. - -For a given document, only migrations with a higher version number than that of the document will be applied. Migrations are executed in order, starting from the lowest version and ending with the highest one. - -Signature: - -```typescript -export interface SavedObjectMigrationMap -``` - -## Example - - -```typescript -const migrationsMap: SavedObjectMigrationMap = { - '1.0.0': migrateToV1, - '2.1.0': migrateToV21 -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.id.md deleted file mode 100644 index f5f1de451165b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReference](./kibana-plugin-core-server.savedobjectreference.md) > [id](./kibana-plugin-core-server.savedobjectreference.id.md) - -## SavedObjectReference.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.md deleted file mode 100644 index bf21b13acfcfc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReference](./kibana-plugin-core-server.savedobjectreference.md) - -## SavedObjectReference interface - -A reference to another saved object. - -Signature: - -```typescript -export interface SavedObjectReference -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-server.savedobjectreference.id.md) | string | | -| [name](./kibana-plugin-core-server.savedobjectreference.name.md) | string | | -| [type](./kibana-plugin-core-server.savedobjectreference.type.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.name.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.name.md deleted file mode 100644 index 782e8060a31f1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.name.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReference](./kibana-plugin-core-server.savedobjectreference.md) > [name](./kibana-plugin-core-server.savedobjectreference.name.md) - -## SavedObjectReference.name property - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.type.md deleted file mode 100644 index 045a540904279..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreference.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReference](./kibana-plugin-core-server.savedobjectreference.md) > [type](./kibana-plugin-core-server.savedobjectreference.type.md) - -## SavedObjectReference.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.id.md deleted file mode 100644 index 7ef1a2fb1bd41..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [id](./kibana-plugin-core-server.savedobjectreferencewithcontext.id.md) - -## SavedObjectReferenceWithContext.id property - -The ID of the referenced object - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md deleted file mode 100644 index 058c27032d065..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [inboundReferences](./kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md) - -## SavedObjectReferenceWithContext.inboundReferences property - -References to this object; note that this does not contain \_all inbound references everywhere for this object\_, it only contains inbound references for the scope of this operation - -Signature: - -```typescript -inboundReferences: Array<{ - type: string; - id: string; - name: string; - }>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md deleted file mode 100644 index d46d5a6bf2a0a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [isMissing](./kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md) - -## SavedObjectReferenceWithContext.isMissing property - -Whether or not this object or reference is missing - -Signature: - -```typescript -isMissing?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md deleted file mode 100644 index 79dd7a40019ec..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) - -## SavedObjectReferenceWithContext interface - -A returned input object or one of its references, with additional context. - -Signature: - -```typescript -export interface SavedObjectReferenceWithContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-server.savedobjectreferencewithcontext.id.md) | string | The ID of the referenced object | -| [inboundReferences](./kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md) | Array<{ type: string; id: string; name: string; }> | References to this object; note that this does not contain \_all inbound references everywhere for this object\_, it only contains inbound references for the scope of this operation | -| [isMissing?](./kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md) | boolean | (Optional) Whether or not this object or reference is missing | -| [originId?](./kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md) | string | (Optional) The origin ID of the referenced object (if it has one) | -| [spaces](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md) | string\[\] | The space(s) that the referenced object exists in | -| [spacesWithMatchingAliases?](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md) | string\[\] | (Optional) The space(s) that legacy URL aliases matching this type/id exist in | -| [spacesWithMatchingOrigins?](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md) | string\[\] | (Optional) The space(s) that objects matching this origin exist in (including this one) | -| [type](./kibana-plugin-core-server.savedobjectreferencewithcontext.type.md) | string | The type of the referenced object | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md deleted file mode 100644 index 47cac3f423647..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [originId](./kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md) - -## SavedObjectReferenceWithContext.originId property - -The origin ID of the referenced object (if it has one) - -Signature: - -```typescript -originId?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md deleted file mode 100644 index 2c2114103b29a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [spaces](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md) - -## SavedObjectReferenceWithContext.spaces property - -The space(s) that the referenced object exists in - -Signature: - -```typescript -spaces: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md deleted file mode 100644 index 07f4158a84950..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [spacesWithMatchingAliases](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md) - -## SavedObjectReferenceWithContext.spacesWithMatchingAliases property - -The space(s) that legacy URL aliases matching this type/id exist in - -Signature: - -```typescript -spacesWithMatchingAliases?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md deleted file mode 100644 index 3fedce753c034..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [spacesWithMatchingOrigins](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md) - -## SavedObjectReferenceWithContext.spacesWithMatchingOrigins property - -The space(s) that objects matching this origin exist in (including this one) - -Signature: - -```typescript -spacesWithMatchingOrigins?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.type.md deleted file mode 100644 index 118d9744e4276..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [type](./kibana-plugin-core-server.savedobjectreferencewithcontext.type.md) - -## SavedObjectReferenceWithContext.type property - -The type of the referenced object - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsanitizeddoc.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsanitizeddoc.md deleted file mode 100644 index 3f4090619edbf..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsanitizeddoc.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectSanitizedDoc](./kibana-plugin-core-server.savedobjectsanitizeddoc.md) - -## SavedObjectSanitizedDoc type - -Describes Saved Object documents that have passed through the migration framework and are guaranteed to have a `references` root property. - -Signature: - -```typescript -export declare type SavedObjectSanitizedDoc = SavedObjectDoc & Referencable; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbaseoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbaseoptions.md deleted file mode 100644 index 6686ad7ca8bad..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbaseoptions.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBaseOptions](./kibana-plugin-core-server.savedobjectsbaseoptions.md) - -## SavedObjectsBaseOptions interface - - -Signature: - -```typescript -export interface SavedObjectsBaseOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [namespace?](./kibana-plugin-core-server.savedobjectsbaseoptions.namespace.md) | string | (Optional) Specify the namespace for this operation | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbaseoptions.namespace.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbaseoptions.namespace.md deleted file mode 100644 index 7468327233d4e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbaseoptions.namespace.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBaseOptions](./kibana-plugin-core-server.savedobjectsbaseoptions.md) > [namespace](./kibana-plugin-core-server.savedobjectsbaseoptions.namespace.md) - -## SavedObjectsBaseOptions.namespace property - -Specify the namespace for this operation - -Signature: - -```typescript -namespace?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.attributes.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.attributes.md deleted file mode 100644 index c74a058ca441b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.attributes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) > [attributes](./kibana-plugin-core-server.savedobjectsbulkcreateobject.attributes.md) - -## SavedObjectsBulkCreateObject.attributes property - -Signature: - -```typescript -attributes: T; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.coremigrationversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.coremigrationversion.md deleted file mode 100644 index fb1f485cdf202..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.coremigrationversion.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) > [coreMigrationVersion](./kibana-plugin-core-server.savedobjectsbulkcreateobject.coremigrationversion.md) - -## SavedObjectsBulkCreateObject.coreMigrationVersion property - -A semver value that is used when upgrading objects between Kibana versions. If undefined, this will be automatically set to the current Kibana version when the object is created. If this is set to a non-semver value, or it is set to a semver value greater than the current Kibana version, it will result in an error. - -Signature: - -```typescript -coreMigrationVersion?: string; -``` - -## Remarks - -Do not attempt to set this manually. It should only be used if you retrieved an existing object that had the `coreMigrationVersion` field set and you want to create it again. - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.id.md deleted file mode 100644 index 13f64c70d39fc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) > [id](./kibana-plugin-core-server.savedobjectsbulkcreateobject.id.md) - -## SavedObjectsBulkCreateObject.id property - -Signature: - -```typescript -id?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.initialnamespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.initialnamespaces.md deleted file mode 100644 index 4d094ecde7a96..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.initialnamespaces.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) > [initialNamespaces](./kibana-plugin-core-server.savedobjectsbulkcreateobject.initialnamespaces.md) - -## SavedObjectsBulkCreateObject.initialNamespaces property - -Optional initial namespaces for the object to be created in. If this is defined, it will supersede the namespace ID that is in [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md). - -\* For shareable object types (registered with `namespaceType: 'multiple'`): this option can be used to specify one or more spaces, including the "All spaces" identifier (`'*'`). \* For isolated object types (registered with `namespaceType: 'single'` or `namespaceType: 'multiple-isolated'`): this option can only be used to specify a single space, and the "All spaces" identifier (`'*'`) is not allowed. \* For global object types (registered with `namespaceType: 'agnostic'`): this option cannot be used. - -Signature: - -```typescript -initialNamespaces?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.md deleted file mode 100644 index 441df5d50c612..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) - -## SavedObjectsBulkCreateObject interface - - -Signature: - -```typescript -export interface SavedObjectsBulkCreateObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [attributes](./kibana-plugin-core-server.savedobjectsbulkcreateobject.attributes.md) | T | | -| [coreMigrationVersion?](./kibana-plugin-core-server.savedobjectsbulkcreateobject.coremigrationversion.md) | string | (Optional) A semver value that is used when upgrading objects between Kibana versions. If undefined, this will be automatically set to the current Kibana version when the object is created. If this is set to a non-semver value, or it is set to a semver value greater than the current Kibana version, it will result in an error. | -| [id?](./kibana-plugin-core-server.savedobjectsbulkcreateobject.id.md) | string | (Optional) | -| [initialNamespaces?](./kibana-plugin-core-server.savedobjectsbulkcreateobject.initialnamespaces.md) | string\[\] | (Optional) Optional initial namespaces for the object to be created in. If this is defined, it will supersede the namespace ID that is in [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md).\* For shareable object types (registered with namespaceType: 'multiple'): this option can be used to specify one or more spaces, including the "All spaces" identifier ('*'). \* For isolated object types (registered with namespaceType: 'single' or namespaceType: 'multiple-isolated'): this option can only be used to specify a single space, and the "All spaces" identifier ('*') is not allowed. \* For global object types (registered with namespaceType: 'agnostic'): this option cannot be used. | -| [migrationVersion?](./kibana-plugin-core-server.savedobjectsbulkcreateobject.migrationversion.md) | SavedObjectsMigrationVersion | (Optional) Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. | -| [originId?](./kibana-plugin-core-server.savedobjectsbulkcreateobject.originid.md) | string | (Optional) Optional ID of the original saved object, if this object's id was regenerated | -| [references?](./kibana-plugin-core-server.savedobjectsbulkcreateobject.references.md) | SavedObjectReference\[\] | (Optional) | -| [type](./kibana-plugin-core-server.savedobjectsbulkcreateobject.type.md) | string | | -| [version?](./kibana-plugin-core-server.savedobjectsbulkcreateobject.version.md) | string | (Optional) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.migrationversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.migrationversion.md deleted file mode 100644 index a2d8de7c5caaa..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.migrationversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) > [migrationVersion](./kibana-plugin-core-server.savedobjectsbulkcreateobject.migrationversion.md) - -## SavedObjectsBulkCreateObject.migrationVersion property - -Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. - -Signature: - -```typescript -migrationVersion?: SavedObjectsMigrationVersion; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.originid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.originid.md deleted file mode 100644 index c182a47891f62..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.originid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) > [originId](./kibana-plugin-core-server.savedobjectsbulkcreateobject.originid.md) - -## SavedObjectsBulkCreateObject.originId property - -Optional ID of the original saved object, if this object's `id` was regenerated - -Signature: - -```typescript -originId?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.references.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.references.md deleted file mode 100644 index d5aed38d7c1e0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.references.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) > [references](./kibana-plugin-core-server.savedobjectsbulkcreateobject.references.md) - -## SavedObjectsBulkCreateObject.references property - -Signature: - -```typescript -references?: SavedObjectReference[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.type.md deleted file mode 100644 index 0d9973ec78b4a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) > [type](./kibana-plugin-core-server.savedobjectsbulkcreateobject.type.md) - -## SavedObjectsBulkCreateObject.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.version.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.version.md deleted file mode 100644 index ca2a38693d036..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkcreateobject.version.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkCreateObject](./kibana-plugin-core-server.savedobjectsbulkcreateobject.md) > [version](./kibana-plugin-core-server.savedobjectsbulkcreateobject.version.md) - -## SavedObjectsBulkCreateObject.version property - -Signature: - -```typescript -version?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.fields.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.fields.md deleted file mode 100644 index d20f79101e13d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.fields.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkGetObject](./kibana-plugin-core-server.savedobjectsbulkgetobject.md) > [fields](./kibana-plugin-core-server.savedobjectsbulkgetobject.fields.md) - -## SavedObjectsBulkGetObject.fields property - -SavedObject fields to include in the response - -Signature: - -```typescript -fields?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.id.md deleted file mode 100644 index c9d6b0527bd56..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkGetObject](./kibana-plugin-core-server.savedobjectsbulkgetobject.md) > [id](./kibana-plugin-core-server.savedobjectsbulkgetobject.id.md) - -## SavedObjectsBulkGetObject.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.md deleted file mode 100644 index 0eb5b507a1f03..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkGetObject](./kibana-plugin-core-server.savedobjectsbulkgetobject.md) - -## SavedObjectsBulkGetObject interface - - -Signature: - -```typescript -export interface SavedObjectsBulkGetObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [fields?](./kibana-plugin-core-server.savedobjectsbulkgetobject.fields.md) | string\[\] | (Optional) SavedObject fields to include in the response | -| [id](./kibana-plugin-core-server.savedobjectsbulkgetobject.id.md) | string | | -| [namespaces?](./kibana-plugin-core-server.savedobjectsbulkgetobject.namespaces.md) | string\[\] | (Optional) Optional namespace(s) for the object to be retrieved in. If this is defined, it will supersede the namespace ID that is in the top-level options.\* For shareable object types (registered with namespaceType: 'multiple'): this option can be used to specify one or more spaces, including the "All spaces" identifier ('*'). \* For isolated object types (registered with namespaceType: 'single' or namespaceType: 'multiple-isolated'): this option can only be used to specify a single space, and the "All spaces" identifier ('*') is not allowed. \* For global object types (registered with namespaceType: 'agnostic'): this option cannot be used. | -| [type](./kibana-plugin-core-server.savedobjectsbulkgetobject.type.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.namespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.namespaces.md deleted file mode 100644 index 5add0ad1bdf95..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.namespaces.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkGetObject](./kibana-plugin-core-server.savedobjectsbulkgetobject.md) > [namespaces](./kibana-plugin-core-server.savedobjectsbulkgetobject.namespaces.md) - -## SavedObjectsBulkGetObject.namespaces property - -Optional namespace(s) for the object to be retrieved in. If this is defined, it will supersede the namespace ID that is in the top-level options. - -\* For shareable object types (registered with `namespaceType: 'multiple'`): this option can be used to specify one or more spaces, including the "All spaces" identifier (`'*'`). \* For isolated object types (registered with `namespaceType: 'single'` or `namespaceType: 'multiple-isolated'`): this option can only be used to specify a single space, and the "All spaces" identifier (`'*'`) is not allowed. \* For global object types (registered with `namespaceType: 'agnostic'`): this option cannot be used. - -Signature: - -```typescript -namespaces?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.type.md deleted file mode 100644 index 9b78423da9d0b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkgetobject.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkGetObject](./kibana-plugin-core-server.savedobjectsbulkgetobject.md) > [type](./kibana-plugin-core-server.savedobjectsbulkgetobject.type.md) - -## SavedObjectsBulkGetObject.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.id.md deleted file mode 100644 index 135848191cff7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkResolveObject](./kibana-plugin-core-server.savedobjectsbulkresolveobject.md) > [id](./kibana-plugin-core-server.savedobjectsbulkresolveobject.id.md) - -## SavedObjectsBulkResolveObject.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.md deleted file mode 100644 index a81e18cf3593a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkResolveObject](./kibana-plugin-core-server.savedobjectsbulkresolveobject.md) - -## SavedObjectsBulkResolveObject interface - - -Signature: - -```typescript -export interface SavedObjectsBulkResolveObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-server.savedobjectsbulkresolveobject.id.md) | string | | -| [type](./kibana-plugin-core-server.savedobjectsbulkresolveobject.type.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.type.md deleted file mode 100644 index 790edde7fe079..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveobject.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkResolveObject](./kibana-plugin-core-server.savedobjectsbulkresolveobject.md) > [type](./kibana-plugin-core-server.savedobjectsbulkresolveobject.type.md) - -## SavedObjectsBulkResolveObject.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveresponse.md deleted file mode 100644 index e280877d77cd6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveresponse.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkResolveResponse](./kibana-plugin-core-server.savedobjectsbulkresolveresponse.md) - -## SavedObjectsBulkResolveResponse interface - - -Signature: - -```typescript -export interface SavedObjectsBulkResolveResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [resolved\_objects](./kibana-plugin-core-server.savedobjectsbulkresolveresponse.resolved_objects.md) | Array<SavedObjectsResolveResponse<T>> | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveresponse.resolved_objects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveresponse.resolved_objects.md deleted file mode 100644 index 4d11b146fd848..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresolveresponse.resolved_objects.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkResolveResponse](./kibana-plugin-core-server.savedobjectsbulkresolveresponse.md) > [resolved\_objects](./kibana-plugin-core-server.savedobjectsbulkresolveresponse.resolved_objects.md) - -## SavedObjectsBulkResolveResponse.resolved\_objects property - -Signature: - -```typescript -resolved_objects: Array>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresponse.md deleted file mode 100644 index e47350e4bf888..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresponse.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkResponse](./kibana-plugin-core-server.savedobjectsbulkresponse.md) - -## SavedObjectsBulkResponse interface - - -Signature: - -```typescript -export interface SavedObjectsBulkResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [saved\_objects](./kibana-plugin-core-server.savedobjectsbulkresponse.saved_objects.md) | Array<SavedObject<T>> | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresponse.saved_objects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresponse.saved_objects.md deleted file mode 100644 index 3b21276ec2a66..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkresponse.saved_objects.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkResponse](./kibana-plugin-core-server.savedobjectsbulkresponse.md) > [saved\_objects](./kibana-plugin-core-server.savedobjectsbulkresponse.saved_objects.md) - -## SavedObjectsBulkResponse.saved\_objects property - -Signature: - -```typescript -saved_objects: Array>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.attributes.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.attributes.md deleted file mode 100644 index 7b8d41c4345af..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.attributes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkUpdateObject](./kibana-plugin-core-server.savedobjectsbulkupdateobject.md) > [attributes](./kibana-plugin-core-server.savedobjectsbulkupdateobject.attributes.md) - -## SavedObjectsBulkUpdateObject.attributes property - -The data for a Saved Object is stored as an object in the `attributes` property. - -Signature: - -```typescript -attributes: Partial; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.id.md deleted file mode 100644 index 41aa239bbd502..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkUpdateObject](./kibana-plugin-core-server.savedobjectsbulkupdateobject.md) > [id](./kibana-plugin-core-server.savedobjectsbulkupdateobject.id.md) - -## SavedObjectsBulkUpdateObject.id property - -The ID of this Saved Object, guaranteed to be unique for all objects of the same `type` - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.md deleted file mode 100644 index fa20d5d13d8f2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkUpdateObject](./kibana-plugin-core-server.savedobjectsbulkupdateobject.md) - -## SavedObjectsBulkUpdateObject interface - - -Signature: - -```typescript -export interface SavedObjectsBulkUpdateObject extends Pick, 'version' | 'references'> -``` -Extends: Pick<SavedObjectsUpdateOptions<T>, 'version' \| 'references'> - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [attributes](./kibana-plugin-core-server.savedobjectsbulkupdateobject.attributes.md) | Partial<T> | The data for a Saved Object is stored as an object in the attributes property. | -| [id](./kibana-plugin-core-server.savedobjectsbulkupdateobject.id.md) | string | The ID of this Saved Object, guaranteed to be unique for all objects of the same type | -| [namespace?](./kibana-plugin-core-server.savedobjectsbulkupdateobject.namespace.md) | string | (Optional) Optional namespace string to use when searching for this object. If this is defined, it will supersede the namespace ID that is in [SavedObjectsBulkUpdateOptions](./kibana-plugin-core-server.savedobjectsbulkupdateoptions.md).Note: the default namespace's string representation is 'default', and its ID representation is undefined. | -| [type](./kibana-plugin-core-server.savedobjectsbulkupdateobject.type.md) | string | The type of this Saved Object. Each plugin can define it's own custom Saved Object types. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.namespace.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.namespace.md deleted file mode 100644 index 544efcd3be909..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.namespace.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkUpdateObject](./kibana-plugin-core-server.savedobjectsbulkupdateobject.md) > [namespace](./kibana-plugin-core-server.savedobjectsbulkupdateobject.namespace.md) - -## SavedObjectsBulkUpdateObject.namespace property - -Optional namespace string to use when searching for this object. If this is defined, it will supersede the namespace ID that is in [SavedObjectsBulkUpdateOptions](./kibana-plugin-core-server.savedobjectsbulkupdateoptions.md). - -Note: the default namespace's string representation is `'default'`, and its ID representation is `undefined`. - -Signature: - -```typescript -namespace?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.type.md deleted file mode 100644 index f13adddc05a09..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateobject.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkUpdateObject](./kibana-plugin-core-server.savedobjectsbulkupdateobject.md) > [type](./kibana-plugin-core-server.savedobjectsbulkupdateobject.type.md) - -## SavedObjectsBulkUpdateObject.type property - -The type of this Saved Object. Each plugin can define it's own custom Saved Object types. - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateoptions.md deleted file mode 100644 index 97285b326dbae..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateoptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkUpdateOptions](./kibana-plugin-core-server.savedobjectsbulkupdateoptions.md) - -## SavedObjectsBulkUpdateOptions interface - - -Signature: - -```typescript -export interface SavedObjectsBulkUpdateOptions extends SavedObjectsBaseOptions -``` -Extends: SavedObjectsBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [refresh?](./kibana-plugin-core-server.savedobjectsbulkupdateoptions.refresh.md) | MutatingOperationRefreshSetting | (Optional) The Elasticsearch Refresh setting for this operation | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateoptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateoptions.refresh.md deleted file mode 100644 index 9c1b2145dd0da..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateoptions.refresh.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkUpdateOptions](./kibana-plugin-core-server.savedobjectsbulkupdateoptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsbulkupdateoptions.refresh.md) - -## SavedObjectsBulkUpdateOptions.refresh property - -The Elasticsearch Refresh setting for this operation - -Signature: - -```typescript -refresh?: MutatingOperationRefreshSetting; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateresponse.md deleted file mode 100644 index e1a1af2da25cc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateresponse.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkUpdateResponse](./kibana-plugin-core-server.savedobjectsbulkupdateresponse.md) - -## SavedObjectsBulkUpdateResponse interface - - -Signature: - -```typescript -export interface SavedObjectsBulkUpdateResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [saved\_objects](./kibana-plugin-core-server.savedobjectsbulkupdateresponse.saved_objects.md) | Array<SavedObjectsUpdateResponse<T>> | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateresponse.saved_objects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateresponse.saved_objects.md deleted file mode 100644 index e7cbad9678ca7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsbulkupdateresponse.saved_objects.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsBulkUpdateResponse](./kibana-plugin-core-server.savedobjectsbulkupdateresponse.md) > [saved\_objects](./kibana-plugin-core-server.savedobjectsbulkupdateresponse.saved_objects.md) - -## SavedObjectsBulkUpdateResponse.saved\_objects property - -Signature: - -```typescript -saved_objects: Array>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.id.md deleted file mode 100644 index 2b7cd5cc486a8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCheckConflictsObject](./kibana-plugin-core-server.savedobjectscheckconflictsobject.md) > [id](./kibana-plugin-core-server.savedobjectscheckconflictsobject.id.md) - -## SavedObjectsCheckConflictsObject.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.md deleted file mode 100644 index af7d9ff74db25..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCheckConflictsObject](./kibana-plugin-core-server.savedobjectscheckconflictsobject.md) - -## SavedObjectsCheckConflictsObject interface - - -Signature: - -```typescript -export interface SavedObjectsCheckConflictsObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-server.savedobjectscheckconflictsobject.id.md) | string | | -| [type](./kibana-plugin-core-server.savedobjectscheckconflictsobject.type.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.type.md deleted file mode 100644 index 82f89536e4189..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsobject.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCheckConflictsObject](./kibana-plugin-core-server.savedobjectscheckconflictsobject.md) > [type](./kibana-plugin-core-server.savedobjectscheckconflictsobject.type.md) - -## SavedObjectsCheckConflictsObject.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsresponse.errors.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsresponse.errors.md deleted file mode 100644 index 80bd61d8906e3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsresponse.errors.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCheckConflictsResponse](./kibana-plugin-core-server.savedobjectscheckconflictsresponse.md) > [errors](./kibana-plugin-core-server.savedobjectscheckconflictsresponse.errors.md) - -## SavedObjectsCheckConflictsResponse.errors property - -Signature: - -```typescript -errors: Array<{ - id: string; - type: string; - error: SavedObjectError; - }>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsresponse.md deleted file mode 100644 index 68bbdbe67c273..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscheckconflictsresponse.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCheckConflictsResponse](./kibana-plugin-core-server.savedobjectscheckconflictsresponse.md) - -## SavedObjectsCheckConflictsResponse interface - - -Signature: - -```typescript -export interface SavedObjectsCheckConflictsResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [errors](./kibana-plugin-core-server.savedobjectscheckconflictsresponse.errors.md) | Array<{ id: string; type: string; error: SavedObjectError; }> | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkcreate.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkcreate.md deleted file mode 100644 index a88d82ef49e7d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkcreate.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [bulkCreate](./kibana-plugin-core-server.savedobjectsclient.bulkcreate.md) - -## SavedObjectsClient.bulkCreate() method - -Persists multiple documents batched together as a single request - -Signature: - -```typescript -bulkCreate(objects: Array>, options?: SavedObjectsCreateOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | Array<SavedObjectsBulkCreateObject<T>> | | -| options | SavedObjectsCreateOptions | | - -Returns: - -Promise<SavedObjectsBulkResponse<T>> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkget.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkget.md deleted file mode 100644 index 077cb08843acc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkget.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [bulkGet](./kibana-plugin-core-server.savedobjectsclient.bulkget.md) - -## SavedObjectsClient.bulkGet() method - -Returns an array of objects by id - -Signature: - -```typescript -bulkGet(objects?: SavedObjectsBulkGetObject[], options?: SavedObjectsBaseOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsBulkGetObject\[\] | an array of ids, or an array of objects containing id, type and optionally fields | -| options | SavedObjectsBaseOptions | | - -Returns: - -Promise<SavedObjectsBulkResponse<T>> - -## Example - -bulkGet(\[ { id: 'one', type: 'config' }, { id: 'foo', type: 'index-pattern' } \]) - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkresolve.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkresolve.md deleted file mode 100644 index 3cf6e4d8d76a5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkresolve.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [bulkResolve](./kibana-plugin-core-server.savedobjectsclient.bulkresolve.md) - -## SavedObjectsClient.bulkResolve() method - -Resolves an array of objects by id, using any legacy URL aliases if they exist - -Signature: - -```typescript -bulkResolve(objects: SavedObjectsBulkResolveObject[], options?: SavedObjectsBaseOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsBulkResolveObject\[\] | an array of objects containing id, type | -| options | SavedObjectsBaseOptions | | - -Returns: - -Promise<SavedObjectsBulkResolveResponse<T>> - -## Example - -bulkResolve(\[ { id: 'one', type: 'config' }, { id: 'foo', type: 'index-pattern' } \]) - - Saved objects that Kibana fails to find are replaced with an error object and an "exactMatch" outcome. The rationale behind the outcome is that "exactMatch" is the default outcome, and the outcome only changes if an alias is found. This behavior is unique to `bulkResolve`; the regular `resolve` API will throw an error instead. - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkupdate.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkupdate.md deleted file mode 100644 index 6c4034357a4ea..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.bulkupdate.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [bulkUpdate](./kibana-plugin-core-server.savedobjectsclient.bulkupdate.md) - -## SavedObjectsClient.bulkUpdate() method - -Bulk Updates multiple SavedObject at once - -Signature: - -```typescript -bulkUpdate(objects: Array>, options?: SavedObjectsBulkUpdateOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | Array<SavedObjectsBulkUpdateObject<T>> | | -| options | SavedObjectsBulkUpdateOptions | | - -Returns: - -Promise<SavedObjectsBulkUpdateResponse<T>> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.checkconflicts.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.checkconflicts.md deleted file mode 100644 index 69d52ee098a30..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.checkconflicts.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [checkConflicts](./kibana-plugin-core-server.savedobjectsclient.checkconflicts.md) - -## SavedObjectsClient.checkConflicts() method - -Check what conflicts will result when creating a given array of saved objects. This includes "unresolvable conflicts", which are multi-namespace objects that exist in a different namespace; such conflicts cannot be resolved/overwritten. - -Signature: - -```typescript -checkConflicts(objects?: SavedObjectsCheckConflictsObject[], options?: SavedObjectsBaseOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsCheckConflictsObject\[\] | | -| options | SavedObjectsBaseOptions | | - -Returns: - -Promise<SavedObjectsCheckConflictsResponse> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.closepointintime.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.closepointintime.md deleted file mode 100644 index beb5ea847bf45..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.closepointintime.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [closePointInTime](./kibana-plugin-core-server.savedobjectsclient.closepointintime.md) - -## SavedObjectsClient.closePointInTime() method - -Closes a Point In Time (PIT) by ID. This simply proxies the request to ES via the Elasticsearch client, and is included in the Saved Objects Client as a convenience for consumers who are using [SavedObjectsClient.openPointInTimeForType()](./kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md). - -Only use this API if you have an advanced use case that's not solved by the [SavedObjectsClient.createPointInTimeFinder()](./kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md) method. - -Signature: - -```typescript -closePointInTime(id: string, options?: SavedObjectsClosePointInTimeOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | -| options | SavedObjectsClosePointInTimeOptions | | - -Returns: - -Promise<SavedObjectsClosePointInTimeResponse> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md deleted file mode 100644 index 64ccd4187597c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [collectMultiNamespaceReferences](./kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md) - -## SavedObjectsClient.collectMultiNamespaceReferences() method - -Gets all references and transitive references of the listed objects. Ignores any object that is not a multi-namespace type. - -Signature: - -```typescript -collectMultiNamespaceReferences(objects: SavedObjectsCollectMultiNamespaceReferencesObject[], options?: SavedObjectsCollectMultiNamespaceReferencesOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsCollectMultiNamespaceReferencesObject\[\] | | -| options | SavedObjectsCollectMultiNamespaceReferencesOptions | | - -Returns: - -Promise<SavedObjectsCollectMultiNamespaceReferencesResponse> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.create.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.create.md deleted file mode 100644 index 9f9b72984bbb6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.create.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [create](./kibana-plugin-core-server.savedobjectsclient.create.md) - -## SavedObjectsClient.create() method - -Persists a SavedObject - -Signature: - -```typescript -create(type: string, attributes: T, options?: SavedObjectsCreateOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| attributes | T | | -| options | SavedObjectsCreateOptions | | - -Returns: - -Promise<SavedObject<T>> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md deleted file mode 100644 index eab4312b1daa4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md +++ /dev/null @@ -1,52 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [createPointInTimeFinder](./kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md) - -## SavedObjectsClient.createPointInTimeFinder() method - -Returns a [ISavedObjectsPointInTimeFinder](./kibana-plugin-core-server.isavedobjectspointintimefinder.md) to help page through large sets of saved objects. We strongly recommend using this API for any `find` queries that might return more than 1000 saved objects, however this API is only intended for use in server-side "batch" processing of objects where you are collecting all objects in memory or streaming them back to the client. - -Do NOT use this API in a route handler to facilitate paging through saved objects on the client-side unless you are streaming all of the results back to the client at once. Because the returned generator is stateful, you cannot rely on subsequent http requests retrieving new pages from the same Kibana server in multi-instance deployments. - -The generator wraps calls to [SavedObjectsClient.find()](./kibana-plugin-core-server.savedobjectsclient.find.md) and iterates over multiple pages of results using `_pit` and `search_after`. This will open a new Point-In-Time (PIT), and continue paging until a set of results is received that's smaller than the designated `perPage`. - -Once you have retrieved all of the results you need, it is recommended to call `close()` to clean up the PIT and prevent Elasticsearch from consuming resources unnecessarily. This is only required if you are done iterating and have not yet paged through all of the results: the PIT will automatically be closed for you once you reach the last page of results, or if the underlying call to `find` fails for any reason. - -Signature: - -```typescript -createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies): ISavedObjectsPointInTimeFinder; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| findOptions | SavedObjectsCreatePointInTimeFinderOptions | | -| dependencies | SavedObjectsCreatePointInTimeFinderDependencies | | - -Returns: - -ISavedObjectsPointInTimeFinder<T, A> - -## Example - - -```ts -const findOptions: SavedObjectsCreatePointInTimeFinderOptions = { - type: 'visualization', - search: 'foo*', - perPage: 100, -}; - -const finder = savedObjectsClient.createPointInTimeFinder(findOptions); - -const responses: SavedObjectFindResponse[] = []; -for await (const response of finder.find()) { - responses.push(...response); - if (doneSearching) { - await finder.close(); - } -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.delete.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.delete.md deleted file mode 100644 index 64ed7778d3bec..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.delete.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [delete](./kibana-plugin-core-server.savedobjectsclient.delete.md) - -## SavedObjectsClient.delete() method - -Deletes a SavedObject - -Signature: - -```typescript -delete(type: string, id: string, options?: SavedObjectsDeleteOptions): Promise<{}>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| options | SavedObjectsDeleteOptions | | - -Returns: - -Promise<{}> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.errors.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.errors.md deleted file mode 100644 index 79219f48d0501..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.errors.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [errors](./kibana-plugin-core-server.savedobjectsclient.errors.md) - -## SavedObjectsClient.errors property - -Signature: - -```typescript -static errors: typeof SavedObjectsErrorHelpers; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.find.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.find.md deleted file mode 100644 index dc48f7481dc01..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.find.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [find](./kibana-plugin-core-server.savedobjectsclient.find.md) - -## SavedObjectsClient.find() method - -Find all SavedObjects matching the search query - -Signature: - -```typescript -find(options: SavedObjectsFindOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | SavedObjectsFindOptions | | - -Returns: - -Promise<SavedObjectsFindResponse<T, A>> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.get.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.get.md deleted file mode 100644 index 00b6dd28bb7aa..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.get.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [get](./kibana-plugin-core-server.savedobjectsclient.get.md) - -## SavedObjectsClient.get() method - -Retrieves a single object - -Signature: - -```typescript -get(type: string, id: string, options?: SavedObjectsBaseOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | The type of SavedObject to retrieve | -| id | string | The ID of the SavedObject to retrieve | -| options | SavedObjectsBaseOptions | | - -Returns: - -Promise<SavedObject<T>> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.md deleted file mode 100644 index c77bcfac2f0e7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.md +++ /dev/null @@ -1,45 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) - -## SavedObjectsClient class - -Signature: - -```typescript -export declare class SavedObjectsClient -``` - -## Remarks - -The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `SavedObjectsClient` class. - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [errors](./kibana-plugin-core-server.savedobjectsclient.errors.md) | | typeof SavedObjectsErrorHelpers | | -| [errors](./kibana-plugin-core-server.savedobjectsclient.errors.md) | static | typeof SavedObjectsErrorHelpers | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [bulkCreate(objects, options)](./kibana-plugin-core-server.savedobjectsclient.bulkcreate.md) | | Persists multiple documents batched together as a single request | -| [bulkGet(objects, options)](./kibana-plugin-core-server.savedobjectsclient.bulkget.md) | | Returns an array of objects by id | -| [bulkResolve(objects, options)](./kibana-plugin-core-server.savedobjectsclient.bulkresolve.md) | | Resolves an array of objects by id, using any legacy URL aliases if they exist | -| [bulkUpdate(objects, options)](./kibana-plugin-core-server.savedobjectsclient.bulkupdate.md) | | Bulk Updates multiple SavedObject at once | -| [checkConflicts(objects, options)](./kibana-plugin-core-server.savedobjectsclient.checkconflicts.md) | | Check what conflicts will result when creating a given array of saved objects. This includes "unresolvable conflicts", which are multi-namespace objects that exist in a different namespace; such conflicts cannot be resolved/overwritten. | -| [closePointInTime(id, options)](./kibana-plugin-core-server.savedobjectsclient.closepointintime.md) | | Closes a Point In Time (PIT) by ID. This simply proxies the request to ES via the Elasticsearch client, and is included in the Saved Objects Client as a convenience for consumers who are using [SavedObjectsClient.openPointInTimeForType()](./kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md).Only use this API if you have an advanced use case that's not solved by the [SavedObjectsClient.createPointInTimeFinder()](./kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md) method. | -| [collectMultiNamespaceReferences(objects, options)](./kibana-plugin-core-server.savedobjectsclient.collectmultinamespacereferences.md) | | Gets all references and transitive references of the listed objects. Ignores any object that is not a multi-namespace type. | -| [create(type, attributes, options)](./kibana-plugin-core-server.savedobjectsclient.create.md) | | Persists a SavedObject | -| [createPointInTimeFinder(findOptions, dependencies)](./kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md) | | Returns a [ISavedObjectsPointInTimeFinder](./kibana-plugin-core-server.isavedobjectspointintimefinder.md) to help page through large sets of saved objects. We strongly recommend using this API for any find queries that might return more than 1000 saved objects, however this API is only intended for use in server-side "batch" processing of objects where you are collecting all objects in memory or streaming them back to the client.Do NOT use this API in a route handler to facilitate paging through saved objects on the client-side unless you are streaming all of the results back to the client at once. Because the returned generator is stateful, you cannot rely on subsequent http requests retrieving new pages from the same Kibana server in multi-instance deployments.The generator wraps calls to [SavedObjectsClient.find()](./kibana-plugin-core-server.savedobjectsclient.find.md) and iterates over multiple pages of results using _pit and search_after. This will open a new Point-In-Time (PIT), and continue paging until a set of results is received that's smaller than the designated perPage.Once you have retrieved all of the results you need, it is recommended to call close() to clean up the PIT and prevent Elasticsearch from consuming resources unnecessarily. This is only required if you are done iterating and have not yet paged through all of the results: the PIT will automatically be closed for you once you reach the last page of results, or if the underlying call to find fails for any reason. | -| [delete(type, id, options)](./kibana-plugin-core-server.savedobjectsclient.delete.md) | | Deletes a SavedObject | -| [find(options)](./kibana-plugin-core-server.savedobjectsclient.find.md) | | Find all SavedObjects matching the search query | -| [get(type, id, options)](./kibana-plugin-core-server.savedobjectsclient.get.md) | | Retrieves a single object | -| [openPointInTimeForType(type, options)](./kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md) | | Opens a Point In Time (PIT) against the indices for the specified Saved Object types. The returned id can then be passed to [SavedObjectsClient.find()](./kibana-plugin-core-server.savedobjectsclient.find.md) to search against that PIT.Only use this API if you have an advanced use case that's not solved by the [SavedObjectsClient.createPointInTimeFinder()](./kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md) method. | -| [removeReferencesTo(type, id, options)](./kibana-plugin-core-server.savedobjectsclient.removereferencesto.md) | | Updates all objects containing a reference to the given {type, id} tuple to remove the said reference. | -| [resolve(type, id, options)](./kibana-plugin-core-server.savedobjectsclient.resolve.md) | | Resolves a single object, using any legacy URL alias if it exists | -| [update(type, id, attributes, options)](./kibana-plugin-core-server.savedobjectsclient.update.md) | | Updates an SavedObject | -| [updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options)](./kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md) | | Updates one or more objects to add and/or remove them from specified spaces. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md deleted file mode 100644 index c449fc7b1c3f6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [openPointInTimeForType](./kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md) - -## SavedObjectsClient.openPointInTimeForType() method - -Opens a Point In Time (PIT) against the indices for the specified Saved Object types. The returned `id` can then be passed to [SavedObjectsClient.find()](./kibana-plugin-core-server.savedobjectsclient.find.md) to search against that PIT. - -Only use this API if you have an advanced use case that's not solved by the [SavedObjectsClient.createPointInTimeFinder()](./kibana-plugin-core-server.savedobjectsclient.createpointintimefinder.md) method. - -Signature: - -```typescript -openPointInTimeForType(type: string | string[], options?: SavedObjectsOpenPointInTimeOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string \| string\[\] | | -| options | SavedObjectsOpenPointInTimeOptions | | - -Returns: - -Promise<SavedObjectsOpenPointInTimeResponse> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.removereferencesto.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.removereferencesto.md deleted file mode 100644 index 560c210b0105b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.removereferencesto.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [removeReferencesTo](./kibana-plugin-core-server.savedobjectsclient.removereferencesto.md) - -## SavedObjectsClient.removeReferencesTo() method - -Updates all objects containing a reference to the given {type, id} tuple to remove the said reference. - -Signature: - -```typescript -removeReferencesTo(type: string, id: string, options?: SavedObjectsRemoveReferencesToOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| options | SavedObjectsRemoveReferencesToOptions | | - -Returns: - -Promise<SavedObjectsRemoveReferencesToResponse> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.resolve.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.resolve.md deleted file mode 100644 index 31eabe46d6cb3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.resolve.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [resolve](./kibana-plugin-core-server.savedobjectsclient.resolve.md) - -## SavedObjectsClient.resolve() method - -Resolves a single object, using any legacy URL alias if it exists - -Signature: - -```typescript -resolve(type: string, id: string, options?: SavedObjectsBaseOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | The type of SavedObject to retrieve | -| id | string | The ID of the SavedObject to retrieve | -| options | SavedObjectsBaseOptions | | - -Returns: - -Promise<SavedObjectsResolveResponse<T>> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.update.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.update.md deleted file mode 100644 index 20a67387813ff..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.update.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [update](./kibana-plugin-core-server.savedobjectsclient.update.md) - -## SavedObjectsClient.update() method - -Updates an SavedObject - -Signature: - -```typescript -update(type: string, id: string, attributes: Partial, options?: SavedObjectsUpdateOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| attributes | Partial<T> | | -| options | SavedObjectsUpdateOptions<T> | | - -Returns: - -Promise<SavedObjectsUpdateResponse<T>> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md deleted file mode 100644 index 09012607fd932..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) > [updateObjectsSpaces](./kibana-plugin-core-server.savedobjectsclient.updateobjectsspaces.md) - -## SavedObjectsClient.updateObjectsSpaces() method - -Updates one or more objects to add and/or remove them from specified spaces. - -Signature: - -```typescript -updateObjectsSpaces(objects: SavedObjectsUpdateObjectsSpacesObject[], spacesToAdd: string[], spacesToRemove: string[], options?: SavedObjectsUpdateObjectsSpacesOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsUpdateObjectsSpacesObject\[\] | | -| spacesToAdd | string\[\] | | -| spacesToRemove | string\[\] | | -| options | SavedObjectsUpdateObjectsSpacesOptions | | - -Returns: - -Promise<import("./lib").SavedObjectsUpdateObjectsSpacesResponse> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientcontract.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientcontract.md deleted file mode 100644 index f4e7895a3f3eb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientcontract.md +++ /dev/null @@ -1,39 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClientContract](./kibana-plugin-core-server.savedobjectsclientcontract.md) - -## SavedObjectsClientContract type - -Saved Objects is Kibana's data persisentence mechanism allowing plugins to use Elasticsearch for storing plugin state. - -\#\# SavedObjectsClient errors - -Since the SavedObjectsClient has its hands in everything we are a little paranoid about the way we present errors back to to application code. Ideally, all errors will be either: - -1. Caused by bad implementation (ie. undefined is not a function) and as such unpredictable 2. An error that has been classified and decorated appropriately by the decorators in [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) - -Type 1 errors are inevitable, but since all expected/handle-able errors should be Type 2 the `isXYZError()` helpers exposed at `SavedObjectsErrorHelpers` should be used to understand and manage error responses from the `SavedObjectsClient`. - -Type 2 errors are decorated versions of the source error, so if the elasticsearch client threw an error it will be decorated based on its type. That means that rather than looking for `error.body.error.type` or doing substring checks on `error.body.error.reason`, just use the helpers to understand the meaning of the error: - -\`\`\`js if (SavedObjectsErrorHelpers.isNotFoundError(error)) { // handle 404 } - -if (SavedObjectsErrorHelpers.isNotAuthorizedError(error)) { // 401 handling should be automatic, but in case you wanted to know } - -// always rethrow the error unless you handle it throw error; \`\`\` - -\#\#\# 404s from missing index - -From the perspective of application code and APIs the SavedObjectsClient is a black box that persists objects. One of the internal details that users have no control over is that we use an elasticsearch index for persistence and that index might be missing. - -At the time of writing we are in the process of transitioning away from the operating assumption that the SavedObjects index is always available. Part of this transition is handling errors resulting from an index missing. These used to trigger a 500 error in most cases, and in others cause 404s with different error messages. - -From my (Spencer) perspective, a 404 from the SavedObjectsApi is a 404; The object the request/call was targeting could not be found. This is why \#14141 takes special care to ensure that 404 errors are generic and don't distinguish between index missing or document missing. - -See [SavedObjectsClient](./kibana-plugin-core-server.savedobjectsclient.md) See [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) - -Signature: - -```typescript -export declare type SavedObjectsClientContract = Pick; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientfactory.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientfactory.md deleted file mode 100644 index 724c1ebbeadf4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientfactory.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClientFactory](./kibana-plugin-core-server.savedobjectsclientfactory.md) - -## SavedObjectsClientFactory type - -Describes the factory used to create instances of the Saved Objects Client. - -Signature: - -```typescript -export declare type SavedObjectsClientFactory = ({ request, includedHiddenTypes, }: { - request: KibanaRequest; - includedHiddenTypes?: string[]; -}) => SavedObjectsClientContract; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientfactoryprovider.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientfactoryprovider.md deleted file mode 100644 index 0b7afda66408f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientfactoryprovider.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClientFactoryProvider](./kibana-plugin-core-server.savedobjectsclientfactoryprovider.md) - -## SavedObjectsClientFactoryProvider type - -Provider to invoke to retrieve a [SavedObjectsClientFactory](./kibana-plugin-core-server.savedobjectsclientfactory.md). - -Signature: - -```typescript -export declare type SavedObjectsClientFactoryProvider = (repositoryFactory: SavedObjectsRepositoryFactory) => SavedObjectsClientFactory; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.excludedwrappers.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.excludedwrappers.md deleted file mode 100644 index 1fc74de6699fb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.excludedwrappers.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClientProviderOptions](./kibana-plugin-core-server.savedobjectsclientprovideroptions.md) > [excludedWrappers](./kibana-plugin-core-server.savedobjectsclientprovideroptions.excludedwrappers.md) - -## SavedObjectsClientProviderOptions.excludedWrappers property - -Signature: - -```typescript -excludedWrappers?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.includedhiddentypes.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.includedhiddentypes.md deleted file mode 100644 index a9483e34b38ce..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.includedhiddentypes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClientProviderOptions](./kibana-plugin-core-server.savedobjectsclientprovideroptions.md) > [includedHiddenTypes](./kibana-plugin-core-server.savedobjectsclientprovideroptions.includedhiddentypes.md) - -## SavedObjectsClientProviderOptions.includedHiddenTypes property - -Signature: - -```typescript -includedHiddenTypes?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.md deleted file mode 100644 index a02f54214163b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientprovideroptions.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClientProviderOptions](./kibana-plugin-core-server.savedobjectsclientprovideroptions.md) - -## SavedObjectsClientProviderOptions interface - -Options to control the creation of the Saved Objects Client. - -Signature: - -```typescript -export interface SavedObjectsClientProviderOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [excludedWrappers?](./kibana-plugin-core-server.savedobjectsclientprovideroptions.excludedwrappers.md) | string\[\] | (Optional) | -| [includedHiddenTypes?](./kibana-plugin-core-server.savedobjectsclientprovideroptions.includedhiddentypes.md) | string\[\] | (Optional) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperfactory.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperfactory.md deleted file mode 100644 index 722804fd7faa3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperfactory.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClientWrapperFactory](./kibana-plugin-core-server.savedobjectsclientwrapperfactory.md) - -## SavedObjectsClientWrapperFactory type - -Describes the factory used to create instances of Saved Objects Client Wrappers. - -Signature: - -```typescript -export declare type SavedObjectsClientWrapperFactory = (options: SavedObjectsClientWrapperOptions) => SavedObjectsClientContract; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.client.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.client.md deleted file mode 100644 index 1c40647cc8793..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.client.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClientWrapperOptions](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.md) > [client](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.client.md) - -## SavedObjectsClientWrapperOptions.client property - -Signature: - -```typescript -client: SavedObjectsClientContract; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.md deleted file mode 100644 index 16d104e4a8dff..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClientWrapperOptions](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.md) - -## SavedObjectsClientWrapperOptions interface - -Options passed to each SavedObjectsClientWrapperFactory to aid in creating the wrapper instance. - -Signature: - -```typescript -export interface SavedObjectsClientWrapperOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [client](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.client.md) | SavedObjectsClientContract | | -| [request](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.request.md) | KibanaRequest | | -| [typeRegistry](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.typeregistry.md) | ISavedObjectTypeRegistry | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.request.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.request.md deleted file mode 100644 index a76936b44aa73..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.request.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClientWrapperOptions](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.md) > [request](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.request.md) - -## SavedObjectsClientWrapperOptions.request property - -Signature: - -```typescript -request: KibanaRequest; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.typeregistry.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.typeregistry.md deleted file mode 100644 index 17d23869f6d93..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclientwrapperoptions.typeregistry.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClientWrapperOptions](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.md) > [typeRegistry](./kibana-plugin-core-server.savedobjectsclientwrapperoptions.typeregistry.md) - -## SavedObjectsClientWrapperOptions.typeRegistry property - -Signature: - -```typescript -typeRegistry: ISavedObjectTypeRegistry; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeoptions.md deleted file mode 100644 index 27432a8805b06..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeoptions.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClosePointInTimeOptions](./kibana-plugin-core-server.savedobjectsclosepointintimeoptions.md) - -## SavedObjectsClosePointInTimeOptions type - - -Signature: - -```typescript -export declare type SavedObjectsClosePointInTimeOptions = SavedObjectsBaseOptions; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.md deleted file mode 100644 index 27010232bd46b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClosePointInTimeResponse](./kibana-plugin-core-server.savedobjectsclosepointintimeresponse.md) - -## SavedObjectsClosePointInTimeResponse interface - - -Signature: - -```typescript -export interface SavedObjectsClosePointInTimeResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [num\_freed](./kibana-plugin-core-server.savedobjectsclosepointintimeresponse.num_freed.md) | number | The number of search contexts that have been successfully closed. | -| [succeeded](./kibana-plugin-core-server.savedobjectsclosepointintimeresponse.succeeded.md) | boolean | If true, all search contexts associated with the PIT id are successfully closed. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.num_freed.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.num_freed.md deleted file mode 100644 index b64932fcee8f6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.num_freed.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClosePointInTimeResponse](./kibana-plugin-core-server.savedobjectsclosepointintimeresponse.md) > [num\_freed](./kibana-plugin-core-server.savedobjectsclosepointintimeresponse.num_freed.md) - -## SavedObjectsClosePointInTimeResponse.num\_freed property - -The number of search contexts that have been successfully closed. - -Signature: - -```typescript -num_freed: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.succeeded.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.succeeded.md deleted file mode 100644 index 225a549a4cf59..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsclosepointintimeresponse.succeeded.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsClosePointInTimeResponse](./kibana-plugin-core-server.savedobjectsclosepointintimeresponse.md) > [succeeded](./kibana-plugin-core-server.savedobjectsclosepointintimeresponse.succeeded.md) - -## SavedObjectsClosePointInTimeResponse.succeeded property - -If true, all search contexts associated with the PIT id are successfully closed. - -Signature: - -```typescript -succeeded: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md deleted file mode 100644 index 21522a0f32d6d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesObject](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md) > [id](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md) - -## SavedObjectsCollectMultiNamespaceReferencesObject.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md deleted file mode 100644 index 5f419a63e8c70..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesObject](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md) - -## SavedObjectsCollectMultiNamespaceReferencesObject interface - -An object to collect references for. It must be a multi-namespace type (in other words, the object type must be registered with the `namespaceType: 'multiple'` or `namespaceType: 'multiple-isolated'` option). - -Note: if options.purpose is 'updateObjectsSpaces', it must be a shareable type (in other words, the object type must be registered with the `namespaceType: 'multiple'`). - -Signature: - -```typescript -export interface SavedObjectsCollectMultiNamespaceReferencesObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.id.md) | string | | -| [type](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md deleted file mode 100644 index c376a9e4258c8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesObject](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.md) > [type](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesobject.type.md) - -## SavedObjectsCollectMultiNamespaceReferencesObject.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md deleted file mode 100644 index 57298e40a88ba..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesOptions](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md) - -## SavedObjectsCollectMultiNamespaceReferencesOptions interface - -Options for collecting references. - -Signature: - -```typescript -export interface SavedObjectsCollectMultiNamespaceReferencesOptions extends SavedObjectsBaseOptions -``` -Extends: SavedObjectsBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [purpose?](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md) | 'collectMultiNamespaceReferences' \| 'updateObjectsSpaces' | (Optional) Optional purpose used to determine filtering and authorization checks; default is 'collectMultiNamespaceReferences' | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md deleted file mode 100644 index a36301a6451bc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesOptions](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.md) > [purpose](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesoptions.purpose.md) - -## SavedObjectsCollectMultiNamespaceReferencesOptions.purpose property - -Optional purpose used to determine filtering and authorization checks; default is 'collectMultiNamespaceReferences' - -Signature: - -```typescript -purpose?: 'collectMultiNamespaceReferences' | 'updateObjectsSpaces'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md deleted file mode 100644 index 514e9271aa17e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md) - -## SavedObjectsCollectMultiNamespaceReferencesResponse interface - -The response when object references are collected. - -Signature: - -```typescript -export interface SavedObjectsCollectMultiNamespaceReferencesResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [objects](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md) | SavedObjectReferenceWithContext\[\] | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md deleted file mode 100644 index 4b5707d7228a5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCollectMultiNamespaceReferencesResponse](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.md) > [objects](./kibana-plugin-core-server.savedobjectscollectmultinamespacereferencesresponse.objects.md) - -## SavedObjectsCollectMultiNamespaceReferencesResponse.objects property - -Signature: - -```typescript -objects: SavedObjectReferenceWithContext[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.coremigrationversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.coremigrationversion.md deleted file mode 100644 index e2a4064ec4f33..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.coremigrationversion.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) > [coreMigrationVersion](./kibana-plugin-core-server.savedobjectscreateoptions.coremigrationversion.md) - -## SavedObjectsCreateOptions.coreMigrationVersion property - -A semver value that is used when upgrading objects between Kibana versions. If undefined, this will be automatically set to the current Kibana version when the object is created. If this is set to a non-semver value, or it is set to a semver value greater than the current Kibana version, it will result in an error. - -Signature: - -```typescript -coreMigrationVersion?: string; -``` - -## Remarks - -Do not attempt to set this manually. It should only be used if you retrieved an existing object that had the `coreMigrationVersion` field set and you want to create it again. - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.id.md deleted file mode 100644 index 85529b54bf2cd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) > [id](./kibana-plugin-core-server.savedobjectscreateoptions.id.md) - -## SavedObjectsCreateOptions.id property - -(not recommended) Specify an id for the document - -Signature: - -```typescript -id?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.initialnamespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.initialnamespaces.md deleted file mode 100644 index 43489b8d2e8a2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.initialnamespaces.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) > [initialNamespaces](./kibana-plugin-core-server.savedobjectscreateoptions.initialnamespaces.md) - -## SavedObjectsCreateOptions.initialNamespaces property - -Optional initial namespaces for the object to be created in. If this is defined, it will supersede the namespace ID that is in [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md). - -\* For shareable object types (registered with `namespaceType: 'multiple'`): this option can be used to specify one or more spaces, including the "All spaces" identifier (`'*'`). \* For isolated object types (registered with `namespaceType: 'single'` or `namespaceType: 'multiple-isolated'`): this option can only be used to specify a single space, and the "All spaces" identifier (`'*'`) is not allowed. \* For global object types (registered with `namespaceType: 'agnostic'`): this option cannot be used. - -Signature: - -```typescript -initialNamespaces?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.md deleted file mode 100644 index 646a0f6fcf548..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) - -## SavedObjectsCreateOptions interface - - -Signature: - -```typescript -export interface SavedObjectsCreateOptions extends SavedObjectsBaseOptions -``` -Extends: SavedObjectsBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [coreMigrationVersion?](./kibana-plugin-core-server.savedobjectscreateoptions.coremigrationversion.md) | string | (Optional) A semver value that is used when upgrading objects between Kibana versions. If undefined, this will be automatically set to the current Kibana version when the object is created. If this is set to a non-semver value, or it is set to a semver value greater than the current Kibana version, it will result in an error. | -| [id?](./kibana-plugin-core-server.savedobjectscreateoptions.id.md) | string | (Optional) (not recommended) Specify an id for the document | -| [initialNamespaces?](./kibana-plugin-core-server.savedobjectscreateoptions.initialnamespaces.md) | string\[\] | (Optional) Optional initial namespaces for the object to be created in. If this is defined, it will supersede the namespace ID that is in [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md).\* For shareable object types (registered with namespaceType: 'multiple'): this option can be used to specify one or more spaces, including the "All spaces" identifier ('*'). \* For isolated object types (registered with namespaceType: 'single' or namespaceType: 'multiple-isolated'): this option can only be used to specify a single space, and the "All spaces" identifier ('*') is not allowed. \* For global object types (registered with namespaceType: 'agnostic'): this option cannot be used. | -| [migrationVersion?](./kibana-plugin-core-server.savedobjectscreateoptions.migrationversion.md) | SavedObjectsMigrationVersion | (Optional) Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. | -| [originId?](./kibana-plugin-core-server.savedobjectscreateoptions.originid.md) | string | (Optional) Optional ID of the original saved object, if this object's id was regenerated | -| [overwrite?](./kibana-plugin-core-server.savedobjectscreateoptions.overwrite.md) | boolean | (Optional) Overwrite existing documents (defaults to false) | -| [references?](./kibana-plugin-core-server.savedobjectscreateoptions.references.md) | SavedObjectReference\[\] | (Optional) | -| [refresh?](./kibana-plugin-core-server.savedobjectscreateoptions.refresh.md) | MutatingOperationRefreshSetting | (Optional) The Elasticsearch Refresh setting for this operation | -| [version?](./kibana-plugin-core-server.savedobjectscreateoptions.version.md) | string | (Optional) An opaque version number which changes on each successful write operation. Can be used in conjunction with overwrite for implementing optimistic concurrency control. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.migrationversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.migrationversion.md deleted file mode 100644 index 6bc66128623b3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.migrationversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) > [migrationVersion](./kibana-plugin-core-server.savedobjectscreateoptions.migrationversion.md) - -## SavedObjectsCreateOptions.migrationVersion property - -Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. - -Signature: - -```typescript -migrationVersion?: SavedObjectsMigrationVersion; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.originid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.originid.md deleted file mode 100644 index 14333079f7440..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.originid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) > [originId](./kibana-plugin-core-server.savedobjectscreateoptions.originid.md) - -## SavedObjectsCreateOptions.originId property - -Optional ID of the original saved object, if this object's `id` was regenerated - -Signature: - -```typescript -originId?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.overwrite.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.overwrite.md deleted file mode 100644 index 3925cd4ebb2c6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.overwrite.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) > [overwrite](./kibana-plugin-core-server.savedobjectscreateoptions.overwrite.md) - -## SavedObjectsCreateOptions.overwrite property - -Overwrite existing documents (defaults to false) - -Signature: - -```typescript -overwrite?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.references.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.references.md deleted file mode 100644 index bbc1c3524694f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.references.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) > [references](./kibana-plugin-core-server.savedobjectscreateoptions.references.md) - -## SavedObjectsCreateOptions.references property - -Signature: - -```typescript -references?: SavedObjectReference[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.refresh.md deleted file mode 100644 index 69f158a69b504..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.refresh.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) > [refresh](./kibana-plugin-core-server.savedobjectscreateoptions.refresh.md) - -## SavedObjectsCreateOptions.refresh property - -The Elasticsearch Refresh setting for this operation - -Signature: - -```typescript -refresh?: MutatingOperationRefreshSetting; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.version.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.version.md deleted file mode 100644 index 51da57064abb9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreateoptions.version.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreateOptions](./kibana-plugin-core-server.savedobjectscreateoptions.md) > [version](./kibana-plugin-core-server.savedobjectscreateoptions.version.md) - -## SavedObjectsCreateOptions.version property - -An opaque version number which changes on each successful write operation. Can be used in conjunction with `overwrite` for implementing optimistic concurrency control. - -Signature: - -```typescript -version?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.client.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.client.md deleted file mode 100644 index 95ab9e225c049..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.client.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreatePointInTimeFinderDependencies](./kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.md) > [client](./kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.client.md) - -## SavedObjectsCreatePointInTimeFinderDependencies.client property - -Signature: - -```typescript -client: Pick; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.md deleted file mode 100644 index f647a9c1367b3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreatePointInTimeFinderDependencies](./kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.md) - -## SavedObjectsCreatePointInTimeFinderDependencies interface - - -Signature: - -```typescript -export interface SavedObjectsCreatePointInTimeFinderDependencies -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [client](./kibana-plugin-core-server.savedobjectscreatepointintimefinderdependencies.client.md) | Pick<SavedObjectsClientContract, 'find' \| 'openPointInTimeForType' \| 'closePointInTime'> | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderoptions.md deleted file mode 100644 index 928c6f72bcbf5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectscreatepointintimefinderoptions.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsCreatePointInTimeFinderOptions](./kibana-plugin-core-server.savedobjectscreatepointintimefinderoptions.md) - -## SavedObjectsCreatePointInTimeFinderOptions type - - -Signature: - -```typescript -export declare type SavedObjectsCreatePointInTimeFinderOptions = Omit; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.md deleted file mode 100644 index 49b6c36cf3ed2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsDeleteByNamespaceOptions](./kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.md) - -## SavedObjectsDeleteByNamespaceOptions interface - - -Signature: - -```typescript -export interface SavedObjectsDeleteByNamespaceOptions extends SavedObjectsBaseOptions -``` -Extends: SavedObjectsBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [refresh?](./kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.refresh.md) | boolean | (Optional) The Elasticsearch supports only boolean flag for this operation | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.refresh.md deleted file mode 100644 index 52b562e8e22b7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.refresh.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsDeleteByNamespaceOptions](./kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsdeletebynamespaceoptions.refresh.md) - -## SavedObjectsDeleteByNamespaceOptions.refresh property - -The Elasticsearch supports only boolean flag for this operation - -Signature: - -```typescript -refresh?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.force.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.force.md deleted file mode 100644 index f869d1f863a9f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.force.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsDeleteOptions](./kibana-plugin-core-server.savedobjectsdeleteoptions.md) > [force](./kibana-plugin-core-server.savedobjectsdeleteoptions.force.md) - -## SavedObjectsDeleteOptions.force property - -Force deletion of an object that exists in multiple namespaces - -Signature: - -```typescript -force?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.md deleted file mode 100644 index e1bc1fcec3f2d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsDeleteOptions](./kibana-plugin-core-server.savedobjectsdeleteoptions.md) - -## SavedObjectsDeleteOptions interface - - -Signature: - -```typescript -export interface SavedObjectsDeleteOptions extends SavedObjectsBaseOptions -``` -Extends: SavedObjectsBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [force?](./kibana-plugin-core-server.savedobjectsdeleteoptions.force.md) | boolean | (Optional) Force deletion of an object that exists in multiple namespaces | -| [refresh?](./kibana-plugin-core-server.savedobjectsdeleteoptions.refresh.md) | MutatingOperationRefreshSetting | (Optional) The Elasticsearch Refresh setting for this operation | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.refresh.md deleted file mode 100644 index 3a31b90dd9b7b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsdeleteoptions.refresh.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsDeleteOptions](./kibana-plugin-core-server.savedobjectsdeleteoptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsdeleteoptions.refresh.md) - -## SavedObjectsDeleteOptions.refresh property - -The Elasticsearch Refresh setting for this operation - -Signature: - -```typescript -refresh?: MutatingOperationRefreshSetting; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createbadrequesterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createbadrequesterror.md deleted file mode 100644 index f101aa98d8bd3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createbadrequesterror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [createBadRequestError](./kibana-plugin-core-server.savedobjectserrorhelpers.createbadrequesterror.md) - -## SavedObjectsErrorHelpers.createBadRequestError() method - -Signature: - -```typescript -static createBadRequestError(reason?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| reason | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createconflicterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createconflicterror.md deleted file mode 100644 index 426de67ded2dc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createconflicterror.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [createConflictError](./kibana-plugin-core-server.savedobjectserrorhelpers.createconflicterror.md) - -## SavedObjectsErrorHelpers.createConflictError() method - -Signature: - -```typescript -static createConflictError(type: string, id: string, reason?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| reason | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfounderror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfounderror.md deleted file mode 100644 index 6ac403b442367..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfounderror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [createGenericNotFoundError](./kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfounderror.md) - -## SavedObjectsErrorHelpers.createGenericNotFoundError() method - -Signature: - -```typescript -static createGenericNotFoundError(type?: string | null, id?: string | null): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string \| null | | -| id | string \| null | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfoundesunavailableerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfoundesunavailableerror.md deleted file mode 100644 index 4892c0e41ab01..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfoundesunavailableerror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [createGenericNotFoundEsUnavailableError](./kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfoundesunavailableerror.md) - -## SavedObjectsErrorHelpers.createGenericNotFoundEsUnavailableError() method - -Signature: - -```typescript -static createGenericNotFoundEsUnavailableError(type?: string | null, id?: string | null): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string \| null | | -| id | string \| null | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createindexaliasnotfounderror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createindexaliasnotfounderror.md deleted file mode 100644 index 4f9fa9d4484bd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createindexaliasnotfounderror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [createIndexAliasNotFoundError](./kibana-plugin-core-server.savedobjectserrorhelpers.createindexaliasnotfounderror.md) - -## SavedObjectsErrorHelpers.createIndexAliasNotFoundError() method - -Signature: - -```typescript -static createIndexAliasNotFoundError(alias: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| alias | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createinvalidversionerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createinvalidversionerror.md deleted file mode 100644 index 59e2a65694008..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createinvalidversionerror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [createInvalidVersionError](./kibana-plugin-core-server.savedobjectserrorhelpers.createinvalidversionerror.md) - -## SavedObjectsErrorHelpers.createInvalidVersionError() method - -Signature: - -```typescript -static createInvalidVersionError(versionInput?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| versionInput | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createtoomanyrequestserror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createtoomanyrequestserror.md deleted file mode 100644 index 3d4903c3482ed..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createtoomanyrequestserror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [createTooManyRequestsError](./kibana-plugin-core-server.savedobjectserrorhelpers.createtoomanyrequestserror.md) - -## SavedObjectsErrorHelpers.createTooManyRequestsError() method - -Signature: - -```typescript -static createTooManyRequestsError(type: string, id: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createunsupportedtypeerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createunsupportedtypeerror.md deleted file mode 100644 index 4ca95c1565db6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.createunsupportedtypeerror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [createUnsupportedTypeError](./kibana-plugin-core-server.savedobjectserrorhelpers.createunsupportedtypeerror.md) - -## SavedObjectsErrorHelpers.createUnsupportedTypeError() method - -Signature: - -```typescript -static createUnsupportedTypeError(type: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratebadrequesterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratebadrequesterror.md deleted file mode 100644 index 043950407519f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratebadrequesterror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [decorateBadRequestError](./kibana-plugin-core-server.savedobjectserrorhelpers.decoratebadrequesterror.md) - -## SavedObjectsErrorHelpers.decorateBadRequestError() method - -Signature: - -```typescript -static decorateBadRequestError(error: Error, reason?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | | -| reason | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateconflicterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateconflicterror.md deleted file mode 100644 index dfb981a0a656e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateconflicterror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [decorateConflictError](./kibana-plugin-core-server.savedobjectserrorhelpers.decorateconflicterror.md) - -## SavedObjectsErrorHelpers.decorateConflictError() method - -Signature: - -```typescript -static decorateConflictError(error: Error, reason?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | | -| reason | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateescannotexecutescripterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateescannotexecutescripterror.md deleted file mode 100644 index 18b019f1b5364..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateescannotexecutescripterror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [decorateEsCannotExecuteScriptError](./kibana-plugin-core-server.savedobjectserrorhelpers.decorateescannotexecutescripterror.md) - -## SavedObjectsErrorHelpers.decorateEsCannotExecuteScriptError() method - -Signature: - -```typescript -static decorateEsCannotExecuteScriptError(error: Error, reason?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | | -| reason | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateesunavailableerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateesunavailableerror.md deleted file mode 100644 index 9d272b1e78454..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateesunavailableerror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [decorateEsUnavailableError](./kibana-plugin-core-server.savedobjectserrorhelpers.decorateesunavailableerror.md) - -## SavedObjectsErrorHelpers.decorateEsUnavailableError() method - -Signature: - -```typescript -static decorateEsUnavailableError(error: Error, reason?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | | -| reason | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateforbiddenerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateforbiddenerror.md deleted file mode 100644 index 11b53ec219334..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateforbiddenerror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [decorateForbiddenError](./kibana-plugin-core-server.savedobjectserrorhelpers.decorateforbiddenerror.md) - -## SavedObjectsErrorHelpers.decorateForbiddenError() method - -Signature: - -```typescript -static decorateForbiddenError(error: Error, reason?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | | -| reason | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorategeneralerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorategeneralerror.md deleted file mode 100644 index 595789611b5c3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorategeneralerror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [decorateGeneralError](./kibana-plugin-core-server.savedobjectserrorhelpers.decorategeneralerror.md) - -## SavedObjectsErrorHelpers.decorateGeneralError() method - -Signature: - -```typescript -static decorateGeneralError(error: Error, reason?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | | -| reason | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateindexaliasnotfounderror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateindexaliasnotfounderror.md deleted file mode 100644 index a2e74ca7769e0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decorateindexaliasnotfounderror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [decorateIndexAliasNotFoundError](./kibana-plugin-core-server.savedobjectserrorhelpers.decorateindexaliasnotfounderror.md) - -## SavedObjectsErrorHelpers.decorateIndexAliasNotFoundError() method - -Signature: - -```typescript -static decorateIndexAliasNotFoundError(error: Error, alias: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | | -| alias | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratenotauthorizederror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratenotauthorizederror.md deleted file mode 100644 index d50d5d9ebf45f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratenotauthorizederror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [decorateNotAuthorizedError](./kibana-plugin-core-server.savedobjectserrorhelpers.decoratenotauthorizederror.md) - -## SavedObjectsErrorHelpers.decorateNotAuthorizedError() method - -Signature: - -```typescript -static decorateNotAuthorizedError(error: Error, reason?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | | -| reason | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoraterequestentitytoolargeerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoraterequestentitytoolargeerror.md deleted file mode 100644 index 487d64f83ca30..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoraterequestentitytoolargeerror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [decorateRequestEntityTooLargeError](./kibana-plugin-core-server.savedobjectserrorhelpers.decoraterequestentitytoolargeerror.md) - -## SavedObjectsErrorHelpers.decorateRequestEntityTooLargeError() method - -Signature: - -```typescript -static decorateRequestEntityTooLargeError(error: Error, reason?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | | -| reason | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratetoomanyrequestserror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratetoomanyrequestserror.md deleted file mode 100644 index b85cf196c3cdb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.decoratetoomanyrequestserror.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [decorateTooManyRequestsError](./kibana-plugin-core-server.savedobjectserrorhelpers.decoratetoomanyrequestserror.md) - -## SavedObjectsErrorHelpers.decorateTooManyRequestsError() method - -Signature: - -```typescript -static decorateTooManyRequestsError(error: Error, reason?: string): DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error | | -| reason | string | | - -Returns: - -DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isbadrequesterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isbadrequesterror.md deleted file mode 100644 index 5dd6a50b61e55..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isbadrequesterror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isBadRequestError](./kibana-plugin-core-server.savedobjectserrorhelpers.isbadrequesterror.md) - -## SavedObjectsErrorHelpers.isBadRequestError() method - -Signature: - -```typescript -static isBadRequestError(error: Error | DecoratedError): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| DecoratedError | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isconflicterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isconflicterror.md deleted file mode 100644 index 9762462af9ef3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isconflicterror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isConflictError](./kibana-plugin-core-server.savedobjectserrorhelpers.isconflicterror.md) - -## SavedObjectsErrorHelpers.isConflictError() method - -Signature: - -```typescript -static isConflictError(error: Error | DecoratedError): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| DecoratedError | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isescannotexecutescripterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isescannotexecutescripterror.md deleted file mode 100644 index e007dd30f2bb0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isescannotexecutescripterror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isEsCannotExecuteScriptError](./kibana-plugin-core-server.savedobjectserrorhelpers.isescannotexecutescripterror.md) - -## SavedObjectsErrorHelpers.isEsCannotExecuteScriptError() method - -Signature: - -```typescript -static isEsCannotExecuteScriptError(error: Error | DecoratedError): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| DecoratedError | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isesunavailableerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isesunavailableerror.md deleted file mode 100644 index a6fb911f5e0eb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isesunavailableerror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isEsUnavailableError](./kibana-plugin-core-server.savedobjectserrorhelpers.isesunavailableerror.md) - -## SavedObjectsErrorHelpers.isEsUnavailableError() method - -Signature: - -```typescript -static isEsUnavailableError(error: Error | DecoratedError): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| DecoratedError | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isforbiddenerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isforbiddenerror.md deleted file mode 100644 index e45ef7a7ed3f3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isforbiddenerror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isForbiddenError](./kibana-plugin-core-server.savedobjectserrorhelpers.isforbiddenerror.md) - -## SavedObjectsErrorHelpers.isForbiddenError() method - -Signature: - -```typescript -static isForbiddenError(error: Error | DecoratedError): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| DecoratedError | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isgeneralerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isgeneralerror.md deleted file mode 100644 index cbec5d3b36a80..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isgeneralerror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isGeneralError](./kibana-plugin-core-server.savedobjectserrorhelpers.isgeneralerror.md) - -## SavedObjectsErrorHelpers.isGeneralError() method - -Signature: - -```typescript -static isGeneralError(error: Error | DecoratedError): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| DecoratedError | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isinvalidversionerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isinvalidversionerror.md deleted file mode 100644 index 8ad480147adf6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isinvalidversionerror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isInvalidVersionError](./kibana-plugin-core-server.savedobjectserrorhelpers.isinvalidversionerror.md) - -## SavedObjectsErrorHelpers.isInvalidVersionError() method - -Signature: - -```typescript -static isInvalidVersionError(error: Error | DecoratedError): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| DecoratedError | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isnotauthorizederror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isnotauthorizederror.md deleted file mode 100644 index 5e85718bde511..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isnotauthorizederror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isNotAuthorizedError](./kibana-plugin-core-server.savedobjectserrorhelpers.isnotauthorizederror.md) - -## SavedObjectsErrorHelpers.isNotAuthorizedError() method - -Signature: - -```typescript -static isNotAuthorizedError(error: Error | DecoratedError): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| DecoratedError | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isnotfounderror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isnotfounderror.md deleted file mode 100644 index 05e848322ae9f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isnotfounderror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isNotFoundError](./kibana-plugin-core-server.savedobjectserrorhelpers.isnotfounderror.md) - -## SavedObjectsErrorHelpers.isNotFoundError() method - -Signature: - -```typescript -static isNotFoundError(error: Error | DecoratedError): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| DecoratedError | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isrequestentitytoolargeerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isrequestentitytoolargeerror.md deleted file mode 100644 index d6674f0a588e9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.isrequestentitytoolargeerror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isRequestEntityTooLargeError](./kibana-plugin-core-server.savedobjectserrorhelpers.isrequestentitytoolargeerror.md) - -## SavedObjectsErrorHelpers.isRequestEntityTooLargeError() method - -Signature: - -```typescript -static isRequestEntityTooLargeError(error: Error | DecoratedError): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| DecoratedError | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.issavedobjectsclienterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.issavedobjectsclienterror.md deleted file mode 100644 index 0505c3a450a32..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.issavedobjectsclienterror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isSavedObjectsClientError](./kibana-plugin-core-server.savedobjectserrorhelpers.issavedobjectsclienterror.md) - -## SavedObjectsErrorHelpers.isSavedObjectsClientError() method - -Signature: - -```typescript -static isSavedObjectsClientError(error: any): error is DecoratedError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | any | | - -Returns: - -error is DecoratedError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.istoomanyrequestserror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.istoomanyrequestserror.md deleted file mode 100644 index 3f9c360710ae3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.istoomanyrequestserror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) > [isTooManyRequestsError](./kibana-plugin-core-server.savedobjectserrorhelpers.istoomanyrequestserror.md) - -## SavedObjectsErrorHelpers.isTooManyRequestsError() method - -Signature: - -```typescript -static isTooManyRequestsError(error: Error | DecoratedError): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| error | Error \| DecoratedError | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.md deleted file mode 100644 index 67056c8a3cb50..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectserrorhelpers.md +++ /dev/null @@ -1,48 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsErrorHelpers](./kibana-plugin-core-server.savedobjectserrorhelpers.md) - -## SavedObjectsErrorHelpers class - - -Signature: - -```typescript -export declare class SavedObjectsErrorHelpers -``` - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [createBadRequestError(reason)](./kibana-plugin-core-server.savedobjectserrorhelpers.createbadrequesterror.md) | static | | -| [createConflictError(type, id, reason)](./kibana-plugin-core-server.savedobjectserrorhelpers.createconflicterror.md) | static | | -| [createGenericNotFoundError(type, id)](./kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfounderror.md) | static | | -| [createGenericNotFoundEsUnavailableError(type, id)](./kibana-plugin-core-server.savedobjectserrorhelpers.creategenericnotfoundesunavailableerror.md) | static | | -| [createIndexAliasNotFoundError(alias)](./kibana-plugin-core-server.savedobjectserrorhelpers.createindexaliasnotfounderror.md) | static | | -| [createInvalidVersionError(versionInput)](./kibana-plugin-core-server.savedobjectserrorhelpers.createinvalidversionerror.md) | static | | -| [createTooManyRequestsError(type, id)](./kibana-plugin-core-server.savedobjectserrorhelpers.createtoomanyrequestserror.md) | static | | -| [createUnsupportedTypeError(type)](./kibana-plugin-core-server.savedobjectserrorhelpers.createunsupportedtypeerror.md) | static | | -| [decorateBadRequestError(error, reason)](./kibana-plugin-core-server.savedobjectserrorhelpers.decoratebadrequesterror.md) | static | | -| [decorateConflictError(error, reason)](./kibana-plugin-core-server.savedobjectserrorhelpers.decorateconflicterror.md) | static | | -| [decorateEsCannotExecuteScriptError(error, reason)](./kibana-plugin-core-server.savedobjectserrorhelpers.decorateescannotexecutescripterror.md) | static | | -| [decorateEsUnavailableError(error, reason)](./kibana-plugin-core-server.savedobjectserrorhelpers.decorateesunavailableerror.md) | static | | -| [decorateForbiddenError(error, reason)](./kibana-plugin-core-server.savedobjectserrorhelpers.decorateforbiddenerror.md) | static | | -| [decorateGeneralError(error, reason)](./kibana-plugin-core-server.savedobjectserrorhelpers.decorategeneralerror.md) | static | | -| [decorateIndexAliasNotFoundError(error, alias)](./kibana-plugin-core-server.savedobjectserrorhelpers.decorateindexaliasnotfounderror.md) | static | | -| [decorateNotAuthorizedError(error, reason)](./kibana-plugin-core-server.savedobjectserrorhelpers.decoratenotauthorizederror.md) | static | | -| [decorateRequestEntityTooLargeError(error, reason)](./kibana-plugin-core-server.savedobjectserrorhelpers.decoraterequestentitytoolargeerror.md) | static | | -| [decorateTooManyRequestsError(error, reason)](./kibana-plugin-core-server.savedobjectserrorhelpers.decoratetoomanyrequestserror.md) | static | | -| [isBadRequestError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.isbadrequesterror.md) | static | | -| [isConflictError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.isconflicterror.md) | static | | -| [isEsCannotExecuteScriptError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.isescannotexecutescripterror.md) | static | | -| [isEsUnavailableError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.isesunavailableerror.md) | static | | -| [isForbiddenError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.isforbiddenerror.md) | static | | -| [isGeneralError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.isgeneralerror.md) | static | | -| [isInvalidVersionError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.isinvalidversionerror.md) | static | | -| [isNotAuthorizedError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.isnotauthorizederror.md) | static | | -| [isNotFoundError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.isnotfounderror.md) | static | | -| [isRequestEntityTooLargeError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.isrequestentitytoolargeerror.md) | static | | -| [isSavedObjectsClientError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.issavedobjectsclienterror.md) | static | | -| [isTooManyRequestsError(error)](./kibana-plugin-core-server.savedobjectserrorhelpers.istoomanyrequestserror.md) | static | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbyobjectoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbyobjectoptions.md deleted file mode 100644 index 4d3154bb2f7ea..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbyobjectoptions.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportByObjectOptions](./kibana-plugin-core-server.savedobjectsexportbyobjectoptions.md) - -## SavedObjectsExportByObjectOptions interface - -Options for the [export by objects API](./kibana-plugin-core-server.isavedobjectsexporter.exportbyobjects.md) - -Signature: - -```typescript -export interface SavedObjectsExportByObjectOptions extends SavedObjectExportBaseOptions -``` -Extends: SavedObjectExportBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [objects](./kibana-plugin-core-server.savedobjectsexportbyobjectoptions.objects.md) | Array<{ id: string; type: string; }> | optional array of objects to export. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbyobjectoptions.objects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbyobjectoptions.objects.md deleted file mode 100644 index a821ffee153be..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbyobjectoptions.objects.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportByObjectOptions](./kibana-plugin-core-server.savedobjectsexportbyobjectoptions.md) > [objects](./kibana-plugin-core-server.savedobjectsexportbyobjectoptions.objects.md) - -## SavedObjectsExportByObjectOptions.objects property - -optional array of objects to export. - -Signature: - -```typescript -objects: Array<{ - id: string; - type: string; - }>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.hasreference.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.hasreference.md deleted file mode 100644 index a58818e27328a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.hasreference.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportByTypeOptions](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.md) > [hasReference](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.hasreference.md) - -## SavedObjectsExportByTypeOptions.hasReference property - -optional array of references to search object for. - -Signature: - -```typescript -hasReference?: SavedObjectsFindOptionsReference[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.md deleted file mode 100644 index 694e9c0cb14d8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportByTypeOptions](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.md) - -## SavedObjectsExportByTypeOptions interface - -Options for the [export by type API](./kibana-plugin-core-server.isavedobjectsexporter.exportbytypes.md) - -Signature: - -```typescript -export interface SavedObjectsExportByTypeOptions extends SavedObjectExportBaseOptions -``` -Extends: SavedObjectExportBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [hasReference?](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.hasreference.md) | SavedObjectsFindOptionsReference\[\] | (Optional) optional array of references to search object for. | -| [search?](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.search.md) | string | (Optional) optional query string to filter exported objects. | -| [types](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.types.md) | string\[\] | array of saved object types. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.search.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.search.md deleted file mode 100644 index ce8c2c87ddaf7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.search.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportByTypeOptions](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.md) > [search](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.search.md) - -## SavedObjectsExportByTypeOptions.search property - -optional query string to filter exported objects. - -Signature: - -```typescript -search?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.types.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.types.md deleted file mode 100644 index eed71d7f39d23..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportbytypeoptions.types.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportByTypeOptions](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.md) > [types](./kibana-plugin-core-server.savedobjectsexportbytypeoptions.types.md) - -## SavedObjectsExportByTypeOptions.types property - -array of saved object types. - -Signature: - -```typescript -types: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror._constructor_.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror._constructor_.md deleted file mode 100644 index ee25dbf8c22e7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror._constructor_.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportError](./kibana-plugin-core-server.savedobjectsexporterror.md) > [(constructor)](./kibana-plugin-core-server.savedobjectsexporterror._constructor_.md) - -## SavedObjectsExportError.(constructor) - -Constructs a new instance of the `SavedObjectsExportError` class - -Signature: - -```typescript -constructor(type: string, message: string, attributes?: Record | undefined); -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| message | string | | -| attributes | Record<string, any> \| undefined | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.attributes.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.attributes.md deleted file mode 100644 index 9061399eab1f0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.attributes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportError](./kibana-plugin-core-server.savedobjectsexporterror.md) > [attributes](./kibana-plugin-core-server.savedobjectsexporterror.attributes.md) - -## SavedObjectsExportError.attributes property - -Signature: - -```typescript -readonly attributes?: Record | undefined; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.exportsizeexceeded.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.exportsizeexceeded.md deleted file mode 100644 index b69c46383aae4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.exportsizeexceeded.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportError](./kibana-plugin-core-server.savedobjectsexporterror.md) > [exportSizeExceeded](./kibana-plugin-core-server.savedobjectsexporterror.exportsizeexceeded.md) - -## SavedObjectsExportError.exportSizeExceeded() method - -Signature: - -```typescript -static exportSizeExceeded(limit: number): SavedObjectsExportError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| limit | number | | - -Returns: - -SavedObjectsExportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.invalidtransformerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.invalidtransformerror.md deleted file mode 100644 index a6f0190f27fb6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.invalidtransformerror.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportError](./kibana-plugin-core-server.savedobjectsexporterror.md) > [invalidTransformError](./kibana-plugin-core-server.savedobjectsexporterror.invalidtransformerror.md) - -## SavedObjectsExportError.invalidTransformError() method - -Error returned when a [export transform](./kibana-plugin-core-server.savedobjectsexporttransform.md) performed an invalid operation during the transform, such as removing objects from the export, or changing an object's type or id. - -Signature: - -```typescript -static invalidTransformError(objectKeys: string[]): SavedObjectsExportError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objectKeys | string\[\] | | - -Returns: - -SavedObjectsExportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.md deleted file mode 100644 index 4c70b8395d8a6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.md +++ /dev/null @@ -1,36 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportError](./kibana-plugin-core-server.savedobjectsexporterror.md) - -## SavedObjectsExportError class - - -Signature: - -```typescript -export declare class SavedObjectsExportError extends Error -``` -Extends: Error - -## Constructors - -| Constructor | Modifiers | Description | -| --- | --- | --- | -| [(constructor)(type, message, attributes)](./kibana-plugin-core-server.savedobjectsexporterror._constructor_.md) | | Constructs a new instance of the SavedObjectsExportError class | - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [attributes?](./kibana-plugin-core-server.savedobjectsexporterror.attributes.md) | | Record<string, any> \| undefined | (Optional) | -| [type](./kibana-plugin-core-server.savedobjectsexporterror.type.md) | | string | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [exportSizeExceeded(limit)](./kibana-plugin-core-server.savedobjectsexporterror.exportsizeexceeded.md) | static | | -| [invalidTransformError(objectKeys)](./kibana-plugin-core-server.savedobjectsexporterror.invalidtransformerror.md) | static | Error returned when a [export transform](./kibana-plugin-core-server.savedobjectsexporttransform.md) performed an invalid operation during the transform, such as removing objects from the export, or changing an object's type or id. | -| [objectFetchError(objects)](./kibana-plugin-core-server.savedobjectsexporterror.objectfetcherror.md) | static | | -| [objectTransformError(objects, cause)](./kibana-plugin-core-server.savedobjectsexporterror.objecttransformerror.md) | static | Error returned when a [export transform](./kibana-plugin-core-server.savedobjectsexporttransform.md) threw an error | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.objectfetcherror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.objectfetcherror.md deleted file mode 100644 index 172b9e0f3ef18..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.objectfetcherror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportError](./kibana-plugin-core-server.savedobjectsexporterror.md) > [objectFetchError](./kibana-plugin-core-server.savedobjectsexporterror.objectfetcherror.md) - -## SavedObjectsExportError.objectFetchError() method - -Signature: - -```typescript -static objectFetchError(objects: SavedObject[]): SavedObjectsExportError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObject\[\] | | - -Returns: - -SavedObjectsExportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.objecttransformerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.objecttransformerror.md deleted file mode 100644 index 46d415068e9e5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.objecttransformerror.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportError](./kibana-plugin-core-server.savedobjectsexporterror.md) > [objectTransformError](./kibana-plugin-core-server.savedobjectsexporterror.objecttransformerror.md) - -## SavedObjectsExportError.objectTransformError() method - -Error returned when a [export transform](./kibana-plugin-core-server.savedobjectsexporttransform.md) threw an error - -Signature: - -```typescript -static objectTransformError(objects: SavedObject[], cause: Error): SavedObjectsExportError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObject\[\] | | -| cause | Error | | - -Returns: - -SavedObjectsExportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.type.md deleted file mode 100644 index 0c1cda48246ad..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporterror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportError](./kibana-plugin-core-server.savedobjectsexporterror.md) > [type](./kibana-plugin-core-server.savedobjectsexporterror.type.md) - -## SavedObjectsExportError.type property - -Signature: - -```typescript -readonly type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.id.md deleted file mode 100644 index f7b96e71c8e53..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportExcludedObject](./kibana-plugin-core-server.savedobjectsexportexcludedobject.md) > [id](./kibana-plugin-core-server.savedobjectsexportexcludedobject.id.md) - -## SavedObjectsExportExcludedObject.id property - -id of the excluded object - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.md deleted file mode 100644 index 053e9b8bec463..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportExcludedObject](./kibana-plugin-core-server.savedobjectsexportexcludedobject.md) - -## SavedObjectsExportExcludedObject interface - - -Signature: - -```typescript -export interface SavedObjectsExportExcludedObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-server.savedobjectsexportexcludedobject.id.md) | string | id of the excluded object | -| [reason?](./kibana-plugin-core-server.savedobjectsexportexcludedobject.reason.md) | string | (Optional) optional cause of the exclusion | -| [type](./kibana-plugin-core-server.savedobjectsexportexcludedobject.type.md) | string | type of the excluded object | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.reason.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.reason.md deleted file mode 100644 index 0adb1ba35e696..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.reason.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportExcludedObject](./kibana-plugin-core-server.savedobjectsexportexcludedobject.md) > [reason](./kibana-plugin-core-server.savedobjectsexportexcludedobject.reason.md) - -## SavedObjectsExportExcludedObject.reason property - -optional cause of the exclusion - -Signature: - -```typescript -reason?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.type.md deleted file mode 100644 index be28ac2d0ffb6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportexcludedobject.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportExcludedObject](./kibana-plugin-core-server.savedobjectsexportexcludedobject.md) > [type](./kibana-plugin-core-server.savedobjectsexportexcludedobject.type.md) - -## SavedObjectsExportExcludedObject.type property - -type of the excluded object - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjects.md deleted file mode 100644 index 90432bf6d6705..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjects.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportResultDetails](./kibana-plugin-core-server.savedobjectsexportresultdetails.md) > [excludedObjects](./kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjects.md) - -## SavedObjectsExportResultDetails.excludedObjects property - -excluded objects details - -Signature: - -```typescript -excludedObjects: SavedObjectsExportExcludedObject[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjectscount.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjectscount.md deleted file mode 100644 index 05846e28b9cab..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjectscount.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportResultDetails](./kibana-plugin-core-server.savedobjectsexportresultdetails.md) > [excludedObjectsCount](./kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjectscount.md) - -## SavedObjectsExportResultDetails.excludedObjectsCount property - -number of objects that were excluded from the export - -Signature: - -```typescript -excludedObjectsCount: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.exportedcount.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.exportedcount.md deleted file mode 100644 index 4ff59fcc2bce4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.exportedcount.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportResultDetails](./kibana-plugin-core-server.savedobjectsexportresultdetails.md) > [exportedCount](./kibana-plugin-core-server.savedobjectsexportresultdetails.exportedcount.md) - -## SavedObjectsExportResultDetails.exportedCount property - -number of successfully exported objects - -Signature: - -```typescript -exportedCount: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.md deleted file mode 100644 index 872147dc81456..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportResultDetails](./kibana-plugin-core-server.savedobjectsexportresultdetails.md) - -## SavedObjectsExportResultDetails interface - -Structure of the export result details entry - -Signature: - -```typescript -export interface SavedObjectsExportResultDetails -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [excludedObjects](./kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjects.md) | SavedObjectsExportExcludedObject\[\] | excluded objects details | -| [excludedObjectsCount](./kibana-plugin-core-server.savedobjectsexportresultdetails.excludedobjectscount.md) | number | number of objects that were excluded from the export | -| [exportedCount](./kibana-plugin-core-server.savedobjectsexportresultdetails.exportedcount.md) | number | number of successfully exported objects | -| [missingRefCount](./kibana-plugin-core-server.savedobjectsexportresultdetails.missingrefcount.md) | number | number of missing references | -| [missingReferences](./kibana-plugin-core-server.savedobjectsexportresultdetails.missingreferences.md) | Array<{ id: string; type: string; }> | missing references details | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.missingrefcount.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.missingrefcount.md deleted file mode 100644 index dfab4699ede7c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.missingrefcount.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportResultDetails](./kibana-plugin-core-server.savedobjectsexportresultdetails.md) > [missingRefCount](./kibana-plugin-core-server.savedobjectsexportresultdetails.missingrefcount.md) - -## SavedObjectsExportResultDetails.missingRefCount property - -number of missing references - -Signature: - -```typescript -missingRefCount: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.missingreferences.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.missingreferences.md deleted file mode 100644 index a5b51c38a4cab..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexportresultdetails.missingreferences.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportResultDetails](./kibana-plugin-core-server.savedobjectsexportresultdetails.md) > [missingReferences](./kibana-plugin-core-server.savedobjectsexportresultdetails.missingreferences.md) - -## SavedObjectsExportResultDetails.missingReferences property - -missing references details - -Signature: - -```typescript -missingReferences: Array<{ - id: string; - type: string; - }>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransform.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransform.md deleted file mode 100644 index 2f83d5188e891..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransform.md +++ /dev/null @@ -1,84 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportTransform](./kibana-plugin-core-server.savedobjectsexporttransform.md) - -## SavedObjectsExportTransform type - -Transformation function used to mutate the exported objects of the associated type. - -A type's export transform function will be executed once per user-initiated export, for all objects of that type. - -Signature: - -```typescript -export declare type SavedObjectsExportTransform = (context: SavedObjectsExportTransformContext, objects: Array>) => SavedObject[] | Promise; -``` - -## Remarks - -Trying to change an object's id or type during the transform will result in a runtime error during the export process. - -## Example 1 - -Registering a transform function changing the object's attributes during the export - -```ts -// src/plugins/my_plugin/server/plugin.ts -import { myType } from './saved_objects'; - -export class Plugin() { - setup: (core: CoreSetup) => { - core.savedObjects.registerType({ - ...myType, - management: { - ...myType.management, - onExport: (ctx, objects) => { - return objects.map((obj) => ({ - ...obj, - attributes: { - ...obj.attributes, - enabled: false, - } - }) - } - }, - }); - } -} -``` - -## Example 2 - -Registering a transform function adding additional objects to the export - -```ts -// src/plugins/my_plugin/server/plugin.ts -import { myType } from './saved_objects'; - -export class Plugin() { - setup: (core: CoreSetup) => { - const savedObjectStartContractPromise = getStartServices().then( - ([{ savedObjects: savedObjectsStart }]) => savedObjectsStart - ); - - core.savedObjects.registerType({ - ...myType, - management: { - ...myType.management, - onExport: async (ctx, objects) => { - const { getScopedClient } = await savedObjectStartContractPromise; - const client = getScopedClient(ctx.request); - - const depResponse = await client.find({ - type: 'my-nested-object', - hasReference: objs.map(({ id, type }) => ({ id, type })), - }); - - return [...objs, ...depResponse.saved_objects]; - } - }, - }); - } -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransformcontext.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransformcontext.md deleted file mode 100644 index c277308c6fc3b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransformcontext.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportTransformContext](./kibana-plugin-core-server.savedobjectsexporttransformcontext.md) - -## SavedObjectsExportTransformContext interface - -Context passed down to a [export transform function](./kibana-plugin-core-server.savedobjectsexporttransform.md) - -Signature: - -```typescript -export interface SavedObjectsExportTransformContext -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [request](./kibana-plugin-core-server.savedobjectsexporttransformcontext.request.md) | KibanaRequest | The request that initiated the export request. Can be used to create scoped services or client inside the [transformation](./kibana-plugin-core-server.savedobjectsexporttransform.md) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransformcontext.request.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransformcontext.request.md deleted file mode 100644 index fe04698899c7c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsexporttransformcontext.request.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsExportTransformContext](./kibana-plugin-core-server.savedobjectsexporttransformcontext.md) > [request](./kibana-plugin-core-server.savedobjectsexporttransformcontext.request.md) - -## SavedObjectsExportTransformContext.request property - -The request that initiated the export request. Can be used to create scoped services or client inside the [transformation](./kibana-plugin-core-server.savedobjectsexporttransform.md) - -Signature: - -```typescript -request: KibanaRequest; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfieldmapping.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfieldmapping.md deleted file mode 100644 index cf5b5d7e6e339..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfieldmapping.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFieldMapping](./kibana-plugin-core-server.savedobjectsfieldmapping.md) - -## SavedObjectsFieldMapping type - -Describe a [saved object type mapping](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md) field. - -Please refer to [elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html) For the mapping documentation - -Signature: - -```typescript -export declare type SavedObjectsFieldMapping = estypes.MappingProperty & { - dynamic?: false | 'strict'; - properties?: Record; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.defaultsearchoperator.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.defaultsearchoperator.md deleted file mode 100644 index b716ed43948e4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.defaultsearchoperator.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [defaultSearchOperator](./kibana-plugin-core-server.savedobjectsfindoptions.defaultsearchoperator.md) - -## SavedObjectsFindOptions.defaultSearchOperator property - -The search operator to use with the provided filter. Defaults to `OR` - -Signature: - -```typescript -defaultSearchOperator?: 'AND' | 'OR'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.fields.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.fields.md deleted file mode 100644 index bb7d0a8ff861c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.fields.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [fields](./kibana-plugin-core-server.savedobjectsfindoptions.fields.md) - -## SavedObjectsFindOptions.fields property - -An array of fields to include in the results - -Signature: - -```typescript -fields?: string[]; -``` - -## Example - -SavedObjects.find({type: 'dashboard', fields: \['attributes.name', 'attributes.location'\]}) - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.filter.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.filter.md deleted file mode 100644 index c98a4fe5e8796..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.filter.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [filter](./kibana-plugin-core-server.savedobjectsfindoptions.filter.md) - -## SavedObjectsFindOptions.filter property - -Signature: - -```typescript -filter?: string | KueryNode; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.hasreference.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.hasreference.md deleted file mode 100644 index dea3d55950789..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.hasreference.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [hasReference](./kibana-plugin-core-server.savedobjectsfindoptions.hasreference.md) - -## SavedObjectsFindOptions.hasReference property - -Search for documents having a reference to the specified objects. Use `hasReferenceOperator` to specify the operator to use when searching for multiple references. - -Signature: - -```typescript -hasReference?: SavedObjectsFindOptionsReference | SavedObjectsFindOptionsReference[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.hasreferenceoperator.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.hasreferenceoperator.md deleted file mode 100644 index 2c06f76d5c736..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.hasreferenceoperator.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [hasReferenceOperator](./kibana-plugin-core-server.savedobjectsfindoptions.hasreferenceoperator.md) - -## SavedObjectsFindOptions.hasReferenceOperator property - -The operator to use when searching by multiple references using the `hasReference` option. Defaults to `OR` - -Signature: - -```typescript -hasReferenceOperator?: 'AND' | 'OR'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.md deleted file mode 100644 index 9e87eff2f1232..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.md +++ /dev/null @@ -1,36 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) - -## SavedObjectsFindOptions interface - - -Signature: - -```typescript -export interface SavedObjectsFindOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [defaultSearchOperator?](./kibana-plugin-core-server.savedobjectsfindoptions.defaultsearchoperator.md) | 'AND' \| 'OR' | (Optional) The search operator to use with the provided filter. Defaults to OR | -| [fields?](./kibana-plugin-core-server.savedobjectsfindoptions.fields.md) | string\[\] | (Optional) An array of fields to include in the results | -| [filter?](./kibana-plugin-core-server.savedobjectsfindoptions.filter.md) | string \| KueryNode | (Optional) | -| [hasReference?](./kibana-plugin-core-server.savedobjectsfindoptions.hasreference.md) | SavedObjectsFindOptionsReference \| SavedObjectsFindOptionsReference\[\] | (Optional) Search for documents having a reference to the specified objects. Use hasReferenceOperator to specify the operator to use when searching for multiple references. | -| [hasReferenceOperator?](./kibana-plugin-core-server.savedobjectsfindoptions.hasreferenceoperator.md) | 'AND' \| 'OR' | (Optional) The operator to use when searching by multiple references using the hasReference option. Defaults to OR | -| [namespaces?](./kibana-plugin-core-server.savedobjectsfindoptions.namespaces.md) | string\[\] | (Optional) | -| [page?](./kibana-plugin-core-server.savedobjectsfindoptions.page.md) | number | (Optional) | -| [perPage?](./kibana-plugin-core-server.savedobjectsfindoptions.perpage.md) | number | (Optional) | -| [pit?](./kibana-plugin-core-server.savedobjectsfindoptions.pit.md) | SavedObjectsPitParams | (Optional) Search against a specific Point In Time (PIT) that you've opened with [SavedObjectsClient.openPointInTimeForType()](./kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md). | -| [preference?](./kibana-plugin-core-server.savedobjectsfindoptions.preference.md) | string | (Optional) An optional ES preference value to be used for the query \* | -| [rootSearchFields?](./kibana-plugin-core-server.savedobjectsfindoptions.rootsearchfields.md) | string\[\] | (Optional) The fields to perform the parsed query against. Unlike the searchFields argument, these are expected to be root fields and will not be modified. If used in conjunction with searchFields, both are concatenated together. | -| [search?](./kibana-plugin-core-server.savedobjectsfindoptions.search.md) | string | (Optional) Search documents using the Elasticsearch Simple Query String syntax. See Elasticsearch Simple Query String query argument for more information | -| [searchAfter?](./kibana-plugin-core-server.savedobjectsfindoptions.searchafter.md) | estypes.Id\[\] | (Optional) Use the sort values from the previous page to retrieve the next page of results. | -| [searchFields?](./kibana-plugin-core-server.savedobjectsfindoptions.searchfields.md) | string\[\] | (Optional) The fields to perform the parsed query against. See Elasticsearch Simple Query String fields argument for more information | -| [sortField?](./kibana-plugin-core-server.savedobjectsfindoptions.sortfield.md) | string | (Optional) | -| [sortOrder?](./kibana-plugin-core-server.savedobjectsfindoptions.sortorder.md) | estypes.SortOrder | (Optional) | -| [type](./kibana-plugin-core-server.savedobjectsfindoptions.type.md) | string \| string\[\] | | -| [typeToNamespacesMap?](./kibana-plugin-core-server.savedobjectsfindoptions.typetonamespacesmap.md) | Map<string, string\[\] \| undefined> | (Optional) This map defines each type to search for, and the namespace(s) to search for the type in; this is only intended to be used by a saved object client wrapper. If this is defined, it supersedes the type and namespaces fields when building the Elasticsearch query. Any types that are not included in this map will be excluded entirely. If a type is included but its value is undefined, the operation will search for that type in the Default namespace. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.namespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.namespaces.md deleted file mode 100644 index cae707baa58c0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.namespaces.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [namespaces](./kibana-plugin-core-server.savedobjectsfindoptions.namespaces.md) - -## SavedObjectsFindOptions.namespaces property - -Signature: - -```typescript -namespaces?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.page.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.page.md deleted file mode 100644 index 5a2f05af843b9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.page.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [page](./kibana-plugin-core-server.savedobjectsfindoptions.page.md) - -## SavedObjectsFindOptions.page property - -Signature: - -```typescript -page?: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.perpage.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.perpage.md deleted file mode 100644 index 39191ae00c8f9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.perpage.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [perPage](./kibana-plugin-core-server.savedobjectsfindoptions.perpage.md) - -## SavedObjectsFindOptions.perPage property - -Signature: - -```typescript -perPage?: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.pit.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.pit.md deleted file mode 100644 index fac333227088c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.pit.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [pit](./kibana-plugin-core-server.savedobjectsfindoptions.pit.md) - -## SavedObjectsFindOptions.pit property - -Search against a specific Point In Time (PIT) that you've opened with [SavedObjectsClient.openPointInTimeForType()](./kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md). - -Signature: - -```typescript -pit?: SavedObjectsPitParams; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.preference.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.preference.md deleted file mode 100644 index c9e1c168e7a1b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.preference.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [preference](./kibana-plugin-core-server.savedobjectsfindoptions.preference.md) - -## SavedObjectsFindOptions.preference property - -An optional ES preference value to be used for the query \* - -Signature: - -```typescript -preference?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.rootsearchfields.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.rootsearchfields.md deleted file mode 100644 index 204342c45f64e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.rootsearchfields.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [rootSearchFields](./kibana-plugin-core-server.savedobjectsfindoptions.rootsearchfields.md) - -## SavedObjectsFindOptions.rootSearchFields property - -The fields to perform the parsed query against. Unlike the `searchFields` argument, these are expected to be root fields and will not be modified. If used in conjunction with `searchFields`, both are concatenated together. - -Signature: - -```typescript -rootSearchFields?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.search.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.search.md deleted file mode 100644 index fdf7cc1fb94c9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.search.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [search](./kibana-plugin-core-server.savedobjectsfindoptions.search.md) - -## SavedObjectsFindOptions.search property - -Search documents using the Elasticsearch Simple Query String syntax. See Elasticsearch Simple Query String `query` argument for more information - -Signature: - -```typescript -search?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.searchafter.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.searchafter.md deleted file mode 100644 index 9afd602259a78..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.searchafter.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [searchAfter](./kibana-plugin-core-server.savedobjectsfindoptions.searchafter.md) - -## SavedObjectsFindOptions.searchAfter property - -Use the sort values from the previous page to retrieve the next page of results. - -Signature: - -```typescript -searchAfter?: estypes.Id[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.searchfields.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.searchfields.md deleted file mode 100644 index ba1152c05eb37..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.searchfields.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [searchFields](./kibana-plugin-core-server.savedobjectsfindoptions.searchfields.md) - -## SavedObjectsFindOptions.searchFields property - -The fields to perform the parsed query against. See Elasticsearch Simple Query String `fields` argument for more information - -Signature: - -```typescript -searchFields?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.sortfield.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.sortfield.md deleted file mode 100644 index 1dffe996d5726..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.sortfield.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [sortField](./kibana-plugin-core-server.savedobjectsfindoptions.sortfield.md) - -## SavedObjectsFindOptions.sortField property - -Signature: - -```typescript -sortField?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.sortorder.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.sortorder.md deleted file mode 100644 index e1c657e3a5171..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.sortorder.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [sortOrder](./kibana-plugin-core-server.savedobjectsfindoptions.sortorder.md) - -## SavedObjectsFindOptions.sortOrder property - -Signature: - -```typescript -sortOrder?: estypes.SortOrder; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.type.md deleted file mode 100644 index b1503984fdd44..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [type](./kibana-plugin-core-server.savedobjectsfindoptions.type.md) - -## SavedObjectsFindOptions.type property - -Signature: - -```typescript -type: string | string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.typetonamespacesmap.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.typetonamespacesmap.md deleted file mode 100644 index 8bec759f05580..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptions.typetonamespacesmap.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) > [typeToNamespacesMap](./kibana-plugin-core-server.savedobjectsfindoptions.typetonamespacesmap.md) - -## SavedObjectsFindOptions.typeToNamespacesMap property - -This map defines each type to search for, and the namespace(s) to search for the type in; this is only intended to be used by a saved object client wrapper. If this is defined, it supersedes the `type` and `namespaces` fields when building the Elasticsearch query. Any types that are not included in this map will be excluded entirely. If a type is included but its value is undefined, the operation will search for that type in the Default namespace. - -Signature: - -```typescript -typeToNamespacesMap?: Map; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.id.md deleted file mode 100644 index 6d5b76d685680..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptionsReference](./kibana-plugin-core-server.savedobjectsfindoptionsreference.md) > [id](./kibana-plugin-core-server.savedobjectsfindoptionsreference.id.md) - -## SavedObjectsFindOptionsReference.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.md deleted file mode 100644 index 21eb9f06cc11d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptionsReference](./kibana-plugin-core-server.savedobjectsfindoptionsreference.md) - -## SavedObjectsFindOptionsReference interface - - -Signature: - -```typescript -export interface SavedObjectsFindOptionsReference -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-server.savedobjectsfindoptionsreference.id.md) | string | | -| [type](./kibana-plugin-core-server.savedobjectsfindoptionsreference.type.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.type.md deleted file mode 100644 index 0d7db3d72a457..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindoptionsreference.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindOptionsReference](./kibana-plugin-core-server.savedobjectsfindoptionsreference.md) > [type](./kibana-plugin-core-server.savedobjectsfindoptionsreference.type.md) - -## SavedObjectsFindOptionsReference.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.aggregations.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.aggregations.md deleted file mode 100644 index 17a899f4c8280..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.aggregations.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindResponse](./kibana-plugin-core-server.savedobjectsfindresponse.md) > [aggregations](./kibana-plugin-core-server.savedobjectsfindresponse.aggregations.md) - -## SavedObjectsFindResponse.aggregations property - -Signature: - -```typescript -aggregations?: A; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.md deleted file mode 100644 index 4afb825fd0f44..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindResponse](./kibana-plugin-core-server.savedobjectsfindresponse.md) - -## SavedObjectsFindResponse interface - -Return type of the Saved Objects `find()` method. - -\*Note\*: this type is different between the Public and Server Saved Objects clients. - -Signature: - -```typescript -export interface SavedObjectsFindResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aggregations?](./kibana-plugin-core-server.savedobjectsfindresponse.aggregations.md) | A | (Optional) | -| [page](./kibana-plugin-core-server.savedobjectsfindresponse.page.md) | number | | -| [per\_page](./kibana-plugin-core-server.savedobjectsfindresponse.per_page.md) | number | | -| [pit\_id?](./kibana-plugin-core-server.savedobjectsfindresponse.pit_id.md) | string | (Optional) | -| [saved\_objects](./kibana-plugin-core-server.savedobjectsfindresponse.saved_objects.md) | Array<SavedObjectsFindResult<T>> | | -| [total](./kibana-plugin-core-server.savedobjectsfindresponse.total.md) | number | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.page.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.page.md deleted file mode 100644 index 82e18ac4f3f8f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.page.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindResponse](./kibana-plugin-core-server.savedobjectsfindresponse.md) > [page](./kibana-plugin-core-server.savedobjectsfindresponse.page.md) - -## SavedObjectsFindResponse.page property - -Signature: - -```typescript -page: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.per_page.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.per_page.md deleted file mode 100644 index 551aea487fe4a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.per_page.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindResponse](./kibana-plugin-core-server.savedobjectsfindresponse.md) > [per\_page](./kibana-plugin-core-server.savedobjectsfindresponse.per_page.md) - -## SavedObjectsFindResponse.per\_page property - -Signature: - -```typescript -per_page: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.pit_id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.pit_id.md deleted file mode 100644 index dc4f9b509d606..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.pit_id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindResponse](./kibana-plugin-core-server.savedobjectsfindresponse.md) > [pit\_id](./kibana-plugin-core-server.savedobjectsfindresponse.pit_id.md) - -## SavedObjectsFindResponse.pit\_id property - -Signature: - -```typescript -pit_id?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.saved_objects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.saved_objects.md deleted file mode 100644 index 7a91367f6ef0b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.saved_objects.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindResponse](./kibana-plugin-core-server.savedobjectsfindresponse.md) > [saved\_objects](./kibana-plugin-core-server.savedobjectsfindresponse.saved_objects.md) - -## SavedObjectsFindResponse.saved\_objects property - -Signature: - -```typescript -saved_objects: Array>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.total.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.total.md deleted file mode 100644 index 3a6b4309f2e7a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresponse.total.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindResponse](./kibana-plugin-core-server.savedobjectsfindresponse.md) > [total](./kibana-plugin-core-server.savedobjectsfindresponse.total.md) - -## SavedObjectsFindResponse.total property - -Signature: - -```typescript -total: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.md deleted file mode 100644 index f2ba01697da17..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindResult](./kibana-plugin-core-server.savedobjectsfindresult.md) - -## SavedObjectsFindResult interface - - -Signature: - -```typescript -export interface SavedObjectsFindResult extends SavedObject -``` -Extends: SavedObject<T> - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [score](./kibana-plugin-core-server.savedobjectsfindresult.score.md) | number | The Elasticsearch _score of this result. | -| [sort?](./kibana-plugin-core-server.savedobjectsfindresult.sort.md) | string\[\] | (Optional) The Elasticsearch sort value of this result. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.score.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.score.md deleted file mode 100644 index c6646df6ee470..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.score.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindResult](./kibana-plugin-core-server.savedobjectsfindresult.md) > [score](./kibana-plugin-core-server.savedobjectsfindresult.score.md) - -## SavedObjectsFindResult.score property - -The Elasticsearch `_score` of this result. - -Signature: - -```typescript -score: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.sort.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.sort.md deleted file mode 100644 index 5df1b3291b072..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsfindresult.sort.md +++ /dev/null @@ -1,40 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsFindResult](./kibana-plugin-core-server.savedobjectsfindresult.md) > [sort](./kibana-plugin-core-server.savedobjectsfindresult.sort.md) - -## SavedObjectsFindResult.sort property - -The Elasticsearch `sort` value of this result. - -Signature: - -```typescript -sort?: string[]; -``` - -## Remarks - -This can be passed directly to the `searchAfter` param in the [SavedObjectsFindOptions](./kibana-plugin-core-server.savedobjectsfindoptions.md) in order to page through large numbers of hits. It is recommended you use this alongside a Point In Time (PIT) that was opened with [SavedObjectsClient.openPointInTimeForType()](./kibana-plugin-core-server.savedobjectsclient.openpointintimefortype.md). - -## Example - - -```ts -const { id } = await savedObjectsClient.openPointInTimeForType('visualization'); -const page1 = await savedObjectsClient.find({ - type: 'visualization', - sortField: 'updated_at', - sortOrder: 'asc', - pit: { id }, -}); -const lastHit = page1.saved_objects[page1.saved_objects.length - 1]; -const page2 = await savedObjectsClient.find({ - type: 'visualization', - sortField: 'updated_at', - sortOrder: 'asc', - pit: { id: page1.pit_id }, - searchAfter: lastHit.sort, -}); -await savedObjectsClient.closePointInTime(page2.pit_id); -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.actionpath.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.actionpath.md deleted file mode 100644 index f52fd9057d9d0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.actionpath.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md) > [actionPath](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.actionpath.md) - -## SavedObjectsImportActionRequiredWarning.actionPath property - -The path (without the basePath) that the user should be redirect to address this warning. - -Signature: - -```typescript -actionPath: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.buttonlabel.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.buttonlabel.md deleted file mode 100644 index 7fb5d53c487af..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.buttonlabel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md) > [buttonLabel](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.buttonlabel.md) - -## SavedObjectsImportActionRequiredWarning.buttonLabel property - -An optional label to use for the link button. If unspecified, a default label will be used. - -Signature: - -```typescript -buttonLabel?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md deleted file mode 100644 index c4ec5fdd2f8e6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md) - -## SavedObjectsImportActionRequiredWarning interface - -A warning meant to notify that a specific user action is required to finalize the import of some type of object. - - The `actionUrl` must be a path relative to the basePath, and not include it. - -Signature: - -```typescript -export interface SavedObjectsImportActionRequiredWarning -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [actionPath](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.actionpath.md) | string | The path (without the basePath) that the user should be redirect to address this warning. | -| [buttonLabel?](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.buttonlabel.md) | string | (Optional) An optional label to use for the link button. If unspecified, a default label will be used. | -| [message](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.message.md) | string | The translated message to display to the user. | -| [type](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.type.md) | 'action\_required' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.message.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.message.md deleted file mode 100644 index 1ab9afd4bad99..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.message.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md) > [message](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.message.md) - -## SavedObjectsImportActionRequiredWarning.message property - -The translated message to display to the user. - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.type.md deleted file mode 100644 index d8f22ef17d8f0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md) > [type](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.type.md) - -## SavedObjectsImportActionRequiredWarning.type property - -Signature: - -```typescript -type: 'action_required'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.destinations.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.destinations.md deleted file mode 100644 index 445979dd740d3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.destinations.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportAmbiguousConflictError](./kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.md) > [destinations](./kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.destinations.md) - -## SavedObjectsImportAmbiguousConflictError.destinations property - -Signature: - -```typescript -destinations: Array<{ - id: string; - title?: string; - updatedAt?: string; - }>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.md deleted file mode 100644 index 7d275fa199c5b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportAmbiguousConflictError](./kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.md) - -## SavedObjectsImportAmbiguousConflictError interface - -Represents a failure to import due to a conflict, which can be resolved in different ways with an overwrite. - -Signature: - -```typescript -export interface SavedObjectsImportAmbiguousConflictError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [destinations](./kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.destinations.md) | Array<{ id: string; title?: string; updatedAt?: string; }> | | -| [type](./kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.type.md) | 'ambiguous\_conflict' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.type.md deleted file mode 100644 index ca98682873033..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportAmbiguousConflictError](./kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.md) > [type](./kibana-plugin-core-server.savedobjectsimportambiguousconflicterror.type.md) - -## SavedObjectsImportAmbiguousConflictError.type property - -Signature: - -```typescript -type: 'ambiguous_conflict'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.destinationid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.destinationid.md deleted file mode 100644 index 858f171223472..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.destinationid.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportConflictError](./kibana-plugin-core-server.savedobjectsimportconflicterror.md) > [destinationId](./kibana-plugin-core-server.savedobjectsimportconflicterror.destinationid.md) - -## SavedObjectsImportConflictError.destinationId property - -Signature: - -```typescript -destinationId?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.md deleted file mode 100644 index 9456e042035fe..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportConflictError](./kibana-plugin-core-server.savedobjectsimportconflicterror.md) - -## SavedObjectsImportConflictError interface - -Represents a failure to import due to a conflict. - -Signature: - -```typescript -export interface SavedObjectsImportConflictError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [destinationId?](./kibana-plugin-core-server.savedobjectsimportconflicterror.destinationid.md) | string | (Optional) | -| [type](./kibana-plugin-core-server.savedobjectsimportconflicterror.type.md) | 'conflict' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.type.md deleted file mode 100644 index 15ceed56fb22f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportconflicterror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportConflictError](./kibana-plugin-core-server.savedobjectsimportconflicterror.md) > [type](./kibana-plugin-core-server.savedobjectsimportconflicterror.type.md) - -## SavedObjectsImportConflictError.type property - -Signature: - -```typescript -type: 'conflict'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.attributes.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.attributes.md deleted file mode 100644 index 6d09d4cb88120..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.attributes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportError](./kibana-plugin-core-server.savedobjectsimporterror.md) > [attributes](./kibana-plugin-core-server.savedobjectsimporterror.attributes.md) - -## SavedObjectsImportError.attributes property - -Signature: - -```typescript -readonly attributes?: Record | undefined; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.importsizeexceeded.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.importsizeexceeded.md deleted file mode 100644 index 421557445670e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.importsizeexceeded.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportError](./kibana-plugin-core-server.savedobjectsimporterror.md) > [importSizeExceeded](./kibana-plugin-core-server.savedobjectsimporterror.importsizeexceeded.md) - -## SavedObjectsImportError.importSizeExceeded() method - -Signature: - -```typescript -static importSizeExceeded(limit: number): SavedObjectsImportError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| limit | number | | - -Returns: - -SavedObjectsImportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.md deleted file mode 100644 index 2e4fd1a01eb04..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportError](./kibana-plugin-core-server.savedobjectsimporterror.md) - -## SavedObjectsImportError class - - -Signature: - -```typescript -export declare class SavedObjectsImportError extends Error -``` -Extends: Error - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [attributes?](./kibana-plugin-core-server.savedobjectsimporterror.attributes.md) | | Record<string, any> \| undefined | (Optional) | -| [type](./kibana-plugin-core-server.savedobjectsimporterror.type.md) | | string | | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [importSizeExceeded(limit)](./kibana-plugin-core-server.savedobjectsimporterror.importsizeexceeded.md) | static | | -| [nonUniqueImportObjects(nonUniqueEntries)](./kibana-plugin-core-server.savedobjectsimporterror.nonuniqueimportobjects.md) | static | | -| [nonUniqueRetryDestinations(nonUniqueRetryDestinations)](./kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretrydestinations.md) | static | | -| [nonUniqueRetryObjects(nonUniqueRetryObjects)](./kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretryobjects.md) | static | | -| [referencesFetchError(objects)](./kibana-plugin-core-server.savedobjectsimporterror.referencesfetcherror.md) | static | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueimportobjects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueimportobjects.md deleted file mode 100644 index 29533db10302c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueimportobjects.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportError](./kibana-plugin-core-server.savedobjectsimporterror.md) > [nonUniqueImportObjects](./kibana-plugin-core-server.savedobjectsimporterror.nonuniqueimportobjects.md) - -## SavedObjectsImportError.nonUniqueImportObjects() method - -Signature: - -```typescript -static nonUniqueImportObjects(nonUniqueEntries: string[]): SavedObjectsImportError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| nonUniqueEntries | string\[\] | | - -Returns: - -SavedObjectsImportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretrydestinations.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretrydestinations.md deleted file mode 100644 index 4fd23c3f6d62d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretrydestinations.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportError](./kibana-plugin-core-server.savedobjectsimporterror.md) > [nonUniqueRetryDestinations](./kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretrydestinations.md) - -## SavedObjectsImportError.nonUniqueRetryDestinations() method - -Signature: - -```typescript -static nonUniqueRetryDestinations(nonUniqueRetryDestinations: string[]): SavedObjectsImportError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| nonUniqueRetryDestinations | string\[\] | | - -Returns: - -SavedObjectsImportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretryobjects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretryobjects.md deleted file mode 100644 index bf8a2c2c01760..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretryobjects.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportError](./kibana-plugin-core-server.savedobjectsimporterror.md) > [nonUniqueRetryObjects](./kibana-plugin-core-server.savedobjectsimporterror.nonuniqueretryobjects.md) - -## SavedObjectsImportError.nonUniqueRetryObjects() method - -Signature: - -```typescript -static nonUniqueRetryObjects(nonUniqueRetryObjects: string[]): SavedObjectsImportError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| nonUniqueRetryObjects | string\[\] | | - -Returns: - -SavedObjectsImportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.referencesfetcherror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.referencesfetcherror.md deleted file mode 100644 index 4202f164900b3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.referencesfetcherror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportError](./kibana-plugin-core-server.savedobjectsimporterror.md) > [referencesFetchError](./kibana-plugin-core-server.savedobjectsimporterror.referencesfetcherror.md) - -## SavedObjectsImportError.referencesFetchError() method - -Signature: - -```typescript -static referencesFetchError(objects: SavedObject[]): SavedObjectsImportError; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObject\[\] | | - -Returns: - -SavedObjectsImportError - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.type.md deleted file mode 100644 index db655f8cfa129..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporterror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportError](./kibana-plugin-core-server.savedobjectsimporterror.md) > [type](./kibana-plugin-core-server.savedobjectsimporterror.type.md) - -## SavedObjectsImportError.type property - -Signature: - -```typescript -readonly type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.error.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.error.md deleted file mode 100644 index 40c9fa1fefa91..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportFailure](./kibana-plugin-core-server.savedobjectsimportfailure.md) > [error](./kibana-plugin-core-server.savedobjectsimportfailure.error.md) - -## SavedObjectsImportFailure.error property - -Signature: - -```typescript -error: SavedObjectsImportConflictError | SavedObjectsImportAmbiguousConflictError | SavedObjectsImportUnsupportedTypeError | SavedObjectsImportMissingReferencesError | SavedObjectsImportUnknownError; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.id.md deleted file mode 100644 index a58183b84e401..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportFailure](./kibana-plugin-core-server.savedobjectsimportfailure.md) > [id](./kibana-plugin-core-server.savedobjectsimportfailure.id.md) - -## SavedObjectsImportFailure.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.md deleted file mode 100644 index 4bdc3d99028ab..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportFailure](./kibana-plugin-core-server.savedobjectsimportfailure.md) - -## SavedObjectsImportFailure interface - -Represents a failure to import. - -Signature: - -```typescript -export interface SavedObjectsImportFailure -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [error](./kibana-plugin-core-server.savedobjectsimportfailure.error.md) | SavedObjectsImportConflictError \| SavedObjectsImportAmbiguousConflictError \| SavedObjectsImportUnsupportedTypeError \| SavedObjectsImportMissingReferencesError \| SavedObjectsImportUnknownError | | -| [id](./kibana-plugin-core-server.savedobjectsimportfailure.id.md) | string | | -| [meta](./kibana-plugin-core-server.savedobjectsimportfailure.meta.md) | { title?: string; icon?: string; } | | -| [overwrite?](./kibana-plugin-core-server.savedobjectsimportfailure.overwrite.md) | boolean | (Optional) If overwrite is specified, an attempt was made to overwrite an existing object. | -| [type](./kibana-plugin-core-server.savedobjectsimportfailure.type.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.meta.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.meta.md deleted file mode 100644 index c345ebe28b945..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.meta.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportFailure](./kibana-plugin-core-server.savedobjectsimportfailure.md) > [meta](./kibana-plugin-core-server.savedobjectsimportfailure.meta.md) - -## SavedObjectsImportFailure.meta property - -Signature: - -```typescript -meta: { - title?: string; - icon?: string; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.overwrite.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.overwrite.md deleted file mode 100644 index 0bd3f1c1d72e8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.overwrite.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportFailure](./kibana-plugin-core-server.savedobjectsimportfailure.md) > [overwrite](./kibana-plugin-core-server.savedobjectsimportfailure.overwrite.md) - -## SavedObjectsImportFailure.overwrite property - -If `overwrite` is specified, an attempt was made to overwrite an existing object. - -Signature: - -```typescript -overwrite?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.type.md deleted file mode 100644 index ff1529eb8db7a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportfailure.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportFailure](./kibana-plugin-core-server.savedobjectsimportfailure.md) > [type](./kibana-plugin-core-server.savedobjectsimportfailure.type.md) - -## SavedObjectsImportFailure.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthook.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthook.md deleted file mode 100644 index 8d50ef94577de..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthook.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportHook](./kibana-plugin-core-server.savedobjectsimporthook.md) - -## SavedObjectsImportHook type - -A hook associated with a specific saved object type, that will be invoked during the import process. The hook will have access to the objects of the registered type. - -Currently, the only supported feature for import hooks is to return warnings to be displayed in the UI when the import succeeds. - - The only interactions the hook can have with the import process is via the hook's response. Mutating the objects inside the hook's code will have no effect. - -Signature: - -```typescript -export declare type SavedObjectsImportHook = (objects: Array>) => SavedObjectsImportHookResult | Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthookresult.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthookresult.md deleted file mode 100644 index eb16aa2fb0285..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthookresult.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportHookResult](./kibana-plugin-core-server.savedobjectsimporthookresult.md) - -## SavedObjectsImportHookResult interface - -Result from a [import hook](./kibana-plugin-core-server.savedobjectsimporthook.md) - -Signature: - -```typescript -export interface SavedObjectsImportHookResult -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [warnings?](./kibana-plugin-core-server.savedobjectsimporthookresult.warnings.md) | SavedObjectsImportWarning\[\] | (Optional) An optional list of warnings to display in the UI when the import succeeds. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthookresult.warnings.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthookresult.warnings.md deleted file mode 100644 index 682b384f8d363..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimporthookresult.warnings.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportHookResult](./kibana-plugin-core-server.savedobjectsimporthookresult.md) > [warnings](./kibana-plugin-core-server.savedobjectsimporthookresult.warnings.md) - -## SavedObjectsImportHookResult.warnings property - -An optional list of warnings to display in the UI when the import succeeds. - -Signature: - -```typescript -warnings?: SavedObjectsImportWarning[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.md deleted file mode 100644 index 25d2a88e87e8b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportMissingReferencesError](./kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.md) - -## SavedObjectsImportMissingReferencesError interface - -Represents a failure to import due to missing references. - -Signature: - -```typescript -export interface SavedObjectsImportMissingReferencesError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [references](./kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.references.md) | Array<{ type: string; id: string; }> | | -| [type](./kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.type.md) | 'missing\_references' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.references.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.references.md deleted file mode 100644 index f8255e8c75f92..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.references.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportMissingReferencesError](./kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.md) > [references](./kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.references.md) - -## SavedObjectsImportMissingReferencesError.references property - -Signature: - -```typescript -references: Array<{ - type: string; - id: string; - }>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.type.md deleted file mode 100644 index 4499f82ed92ff..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportMissingReferencesError](./kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.md) > [type](./kibana-plugin-core-server.savedobjectsimportmissingreferenceserror.type.md) - -## SavedObjectsImportMissingReferencesError.type property - -Signature: - -```typescript -type: 'missing_references'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.createnewcopies.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.createnewcopies.md deleted file mode 100644 index 23c6fe0051746..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.createnewcopies.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportOptions](./kibana-plugin-core-server.savedobjectsimportoptions.md) > [createNewCopies](./kibana-plugin-core-server.savedobjectsimportoptions.createnewcopies.md) - -## SavedObjectsImportOptions.createNewCopies property - -If true, will create new copies of import objects, each with a random `id` and undefined `originId`. - -Signature: - -```typescript -createNewCopies: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.md deleted file mode 100644 index 775f3a4c9acb3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportOptions](./kibana-plugin-core-server.savedobjectsimportoptions.md) - -## SavedObjectsImportOptions interface - -Options to control the import operation. - -Signature: - -```typescript -export interface SavedObjectsImportOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [createNewCopies](./kibana-plugin-core-server.savedobjectsimportoptions.createnewcopies.md) | boolean | If true, will create new copies of import objects, each with a random id and undefined originId. | -| [namespace?](./kibana-plugin-core-server.savedobjectsimportoptions.namespace.md) | string | (Optional) if specified, will import in given namespace, else will import as global object | -| [overwrite](./kibana-plugin-core-server.savedobjectsimportoptions.overwrite.md) | boolean | If true, will override existing object if present. Note: this has no effect when used with the createNewCopies option. | -| [readStream](./kibana-plugin-core-server.savedobjectsimportoptions.readstream.md) | Readable | The stream of [saved objects](./kibana-plugin-core-server.savedobject.md) to import | -| [refresh?](./kibana-plugin-core-server.savedobjectsimportoptions.refresh.md) | boolean \| 'wait\_for' | (Optional) Refresh setting, defaults to wait_for | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.namespace.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.namespace.md deleted file mode 100644 index 188ff03092e0c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.namespace.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportOptions](./kibana-plugin-core-server.savedobjectsimportoptions.md) > [namespace](./kibana-plugin-core-server.savedobjectsimportoptions.namespace.md) - -## SavedObjectsImportOptions.namespace property - -if specified, will import in given namespace, else will import as global object - -Signature: - -```typescript -namespace?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.overwrite.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.overwrite.md deleted file mode 100644 index 1e9192c47679d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.overwrite.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportOptions](./kibana-plugin-core-server.savedobjectsimportoptions.md) > [overwrite](./kibana-plugin-core-server.savedobjectsimportoptions.overwrite.md) - -## SavedObjectsImportOptions.overwrite property - -If true, will override existing object if present. Note: this has no effect when used with the `createNewCopies` option. - -Signature: - -```typescript -overwrite: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.readstream.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.readstream.md deleted file mode 100644 index bf68ee47d21fb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.readstream.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportOptions](./kibana-plugin-core-server.savedobjectsimportoptions.md) > [readStream](./kibana-plugin-core-server.savedobjectsimportoptions.readstream.md) - -## SavedObjectsImportOptions.readStream property - -The stream of [saved objects](./kibana-plugin-core-server.savedobject.md) to import - -Signature: - -```typescript -readStream: Readable; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.refresh.md deleted file mode 100644 index cc7e36354647a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportoptions.refresh.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportOptions](./kibana-plugin-core-server.savedobjectsimportoptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsimportoptions.refresh.md) - -## SavedObjectsImportOptions.refresh property - -Refresh setting, defaults to `wait_for` - -Signature: - -```typescript -refresh?: boolean | 'wait_for'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.errors.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.errors.md deleted file mode 100644 index dc6f782fc937f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.errors.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportResponse](./kibana-plugin-core-server.savedobjectsimportresponse.md) > [errors](./kibana-plugin-core-server.savedobjectsimportresponse.errors.md) - -## SavedObjectsImportResponse.errors property - -Signature: - -```typescript -errors?: SavedObjectsImportFailure[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.md deleted file mode 100644 index e39b4b02bb55d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportResponse](./kibana-plugin-core-server.savedobjectsimportresponse.md) - -## SavedObjectsImportResponse interface - -The response describing the result of an import. - -Signature: - -```typescript -export interface SavedObjectsImportResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [errors?](./kibana-plugin-core-server.savedobjectsimportresponse.errors.md) | SavedObjectsImportFailure\[\] | (Optional) | -| [success](./kibana-plugin-core-server.savedobjectsimportresponse.success.md) | boolean | | -| [successCount](./kibana-plugin-core-server.savedobjectsimportresponse.successcount.md) | number | | -| [successResults?](./kibana-plugin-core-server.savedobjectsimportresponse.successresults.md) | SavedObjectsImportSuccess\[\] | (Optional) | -| [warnings](./kibana-plugin-core-server.savedobjectsimportresponse.warnings.md) | SavedObjectsImportWarning\[\] | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.success.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.success.md deleted file mode 100644 index fc4f98cd2556e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.success.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportResponse](./kibana-plugin-core-server.savedobjectsimportresponse.md) > [success](./kibana-plugin-core-server.savedobjectsimportresponse.success.md) - -## SavedObjectsImportResponse.success property - -Signature: - -```typescript -success: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.successcount.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.successcount.md deleted file mode 100644 index 3186437a10482..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.successcount.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportResponse](./kibana-plugin-core-server.savedobjectsimportresponse.md) > [successCount](./kibana-plugin-core-server.savedobjectsimportresponse.successcount.md) - -## SavedObjectsImportResponse.successCount property - -Signature: - -```typescript -successCount: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.successresults.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.successresults.md deleted file mode 100644 index 63951d3a0b25f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.successresults.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportResponse](./kibana-plugin-core-server.savedobjectsimportresponse.md) > [successResults](./kibana-plugin-core-server.savedobjectsimportresponse.successresults.md) - -## SavedObjectsImportResponse.successResults property - -Signature: - -```typescript -successResults?: SavedObjectsImportSuccess[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.warnings.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.warnings.md deleted file mode 100644 index 88cccf7f527e7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportresponse.warnings.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportResponse](./kibana-plugin-core-server.savedobjectsimportresponse.md) > [warnings](./kibana-plugin-core-server.savedobjectsimportresponse.warnings.md) - -## SavedObjectsImportResponse.warnings property - -Signature: - -```typescript -warnings: SavedObjectsImportWarning[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.createnewcopy.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.createnewcopy.md deleted file mode 100644 index e9cc92c55ded1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.createnewcopy.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportRetry](./kibana-plugin-core-server.savedobjectsimportretry.md) > [createNewCopy](./kibana-plugin-core-server.savedobjectsimportretry.createnewcopy.md) - -## SavedObjectsImportRetry.createNewCopy property - -If `createNewCopy` is specified, the new object has a new (undefined) origin ID. This is only needed for the case where `createNewCopies` mode is disabled and ambiguous source conflicts are detected. - -Signature: - -```typescript -createNewCopy?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.destinationid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.destinationid.md deleted file mode 100644 index 9a3ccf4442db7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.destinationid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportRetry](./kibana-plugin-core-server.savedobjectsimportretry.md) > [destinationId](./kibana-plugin-core-server.savedobjectsimportretry.destinationid.md) - -## SavedObjectsImportRetry.destinationId property - -The object ID that will be created or overwritten. If not specified, the `id` field will be used. - -Signature: - -```typescript -destinationId?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.id.md deleted file mode 100644 index d42b1e3ad7581..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportRetry](./kibana-plugin-core-server.savedobjectsimportretry.md) > [id](./kibana-plugin-core-server.savedobjectsimportretry.id.md) - -## SavedObjectsImportRetry.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.ignoremissingreferences.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.ignoremissingreferences.md deleted file mode 100644 index a23bec3c5341f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.ignoremissingreferences.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportRetry](./kibana-plugin-core-server.savedobjectsimportretry.md) > [ignoreMissingReferences](./kibana-plugin-core-server.savedobjectsimportretry.ignoremissingreferences.md) - -## SavedObjectsImportRetry.ignoreMissingReferences property - -If `ignoreMissingReferences` is specified, reference validation will be skipped for this object. - -Signature: - -```typescript -ignoreMissingReferences?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.md deleted file mode 100644 index b79ec63ed86c0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportRetry](./kibana-plugin-core-server.savedobjectsimportretry.md) - -## SavedObjectsImportRetry interface - -Describes a retry operation for importing a saved object. - -Signature: - -```typescript -export interface SavedObjectsImportRetry -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [createNewCopy?](./kibana-plugin-core-server.savedobjectsimportretry.createnewcopy.md) | boolean | (Optional) If createNewCopy is specified, the new object has a new (undefined) origin ID. This is only needed for the case where createNewCopies mode is disabled and ambiguous source conflicts are detected. | -| [destinationId?](./kibana-plugin-core-server.savedobjectsimportretry.destinationid.md) | string | (Optional) The object ID that will be created or overwritten. If not specified, the id field will be used. | -| [id](./kibana-plugin-core-server.savedobjectsimportretry.id.md) | string | | -| [ignoreMissingReferences?](./kibana-plugin-core-server.savedobjectsimportretry.ignoremissingreferences.md) | boolean | (Optional) If ignoreMissingReferences is specified, reference validation will be skipped for this object. | -| [overwrite](./kibana-plugin-core-server.savedobjectsimportretry.overwrite.md) | boolean | | -| [replaceReferences](./kibana-plugin-core-server.savedobjectsimportretry.replacereferences.md) | Array<{ type: string; from: string; to: string; }> | | -| [type](./kibana-plugin-core-server.savedobjectsimportretry.type.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.overwrite.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.overwrite.md deleted file mode 100644 index f4358ab986563..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.overwrite.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportRetry](./kibana-plugin-core-server.savedobjectsimportretry.md) > [overwrite](./kibana-plugin-core-server.savedobjectsimportretry.overwrite.md) - -## SavedObjectsImportRetry.overwrite property - -Signature: - -```typescript -overwrite: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.replacereferences.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.replacereferences.md deleted file mode 100644 index b25940d9ab2ff..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.replacereferences.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportRetry](./kibana-plugin-core-server.savedobjectsimportretry.md) > [replaceReferences](./kibana-plugin-core-server.savedobjectsimportretry.replacereferences.md) - -## SavedObjectsImportRetry.replaceReferences property - -Signature: - -```typescript -replaceReferences: Array<{ - type: string; - from: string; - to: string; - }>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.type.md deleted file mode 100644 index 2e434c4a57e9b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportretry.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportRetry](./kibana-plugin-core-server.savedobjectsimportretry.md) > [type](./kibana-plugin-core-server.savedobjectsimportretry.type.md) - -## SavedObjectsImportRetry.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.md deleted file mode 100644 index 7dc4285400478..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportSimpleWarning](./kibana-plugin-core-server.savedobjectsimportsimplewarning.md) - -## SavedObjectsImportSimpleWarning interface - -A simple informative warning that will be displayed to the user. - -Signature: - -```typescript -export interface SavedObjectsImportSimpleWarning -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [message](./kibana-plugin-core-server.savedobjectsimportsimplewarning.message.md) | string | The translated message to display to the user | -| [type](./kibana-plugin-core-server.savedobjectsimportsimplewarning.type.md) | 'simple' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.message.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.message.md deleted file mode 100644 index 1e3ac7ec11365..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.message.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportSimpleWarning](./kibana-plugin-core-server.savedobjectsimportsimplewarning.md) > [message](./kibana-plugin-core-server.savedobjectsimportsimplewarning.message.md) - -## SavedObjectsImportSimpleWarning.message property - -The translated message to display to the user - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.type.md deleted file mode 100644 index 660b1b39d6c39..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsimplewarning.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportSimpleWarning](./kibana-plugin-core-server.savedobjectsimportsimplewarning.md) > [type](./kibana-plugin-core-server.savedobjectsimportsimplewarning.type.md) - -## SavedObjectsImportSimpleWarning.type property - -Signature: - -```typescript -type: 'simple'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.createnewcopy.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.createnewcopy.md deleted file mode 100644 index 3473a4f4577e2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.createnewcopy.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-server.savedobjectsimportsuccess.md) > [createNewCopy](./kibana-plugin-core-server.savedobjectsimportsuccess.createnewcopy.md) - -## SavedObjectsImportSuccess.createNewCopy property - -> Warning: This API is now obsolete. -> -> Can be removed when https://github.com/elastic/kibana/issues/91615 is done. If `createNewCopy` is specified, the new object has a new (undefined) origin ID. This is only needed for the case where `createNewCopies` mode is disabled and ambiguous source conflicts are detected. When `createNewCopies` mode is permanently enabled, this field will be redundant and can be removed. -> - -Signature: - -```typescript -createNewCopy?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.destinationid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.destinationid.md deleted file mode 100644 index c5acc51c3ec99..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.destinationid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-server.savedobjectsimportsuccess.md) > [destinationId](./kibana-plugin-core-server.savedobjectsimportsuccess.destinationid.md) - -## SavedObjectsImportSuccess.destinationId property - -If `destinationId` is specified, the new object has a new ID that is different from the import ID. - -Signature: - -```typescript -destinationId?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.id.md deleted file mode 100644 index 5b95f7f64bfac..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-server.savedobjectsimportsuccess.md) > [id](./kibana-plugin-core-server.savedobjectsimportsuccess.id.md) - -## SavedObjectsImportSuccess.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.md deleted file mode 100644 index 74242ba6d75be..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-server.savedobjectsimportsuccess.md) - -## SavedObjectsImportSuccess interface - -Represents a successful import. - -Signature: - -```typescript -export interface SavedObjectsImportSuccess -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [createNewCopy?](./kibana-plugin-core-server.savedobjectsimportsuccess.createnewcopy.md) | boolean | (Optional) | -| [destinationId?](./kibana-plugin-core-server.savedobjectsimportsuccess.destinationid.md) | string | (Optional) If destinationId is specified, the new object has a new ID that is different from the import ID. | -| [id](./kibana-plugin-core-server.savedobjectsimportsuccess.id.md) | string | | -| [meta](./kibana-plugin-core-server.savedobjectsimportsuccess.meta.md) | { title?: string; icon?: string; } | | -| [overwrite?](./kibana-plugin-core-server.savedobjectsimportsuccess.overwrite.md) | boolean | (Optional) If overwrite is specified, this object overwrote an existing one (or will do so, in the case of a pending resolution). | -| [type](./kibana-plugin-core-server.savedobjectsimportsuccess.type.md) | string | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.meta.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.meta.md deleted file mode 100644 index de6057b4729ec..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.meta.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-server.savedobjectsimportsuccess.md) > [meta](./kibana-plugin-core-server.savedobjectsimportsuccess.meta.md) - -## SavedObjectsImportSuccess.meta property - -Signature: - -```typescript -meta: { - title?: string; - icon?: string; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.overwrite.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.overwrite.md deleted file mode 100644 index 80cb659ef2cd2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.overwrite.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-server.savedobjectsimportsuccess.md) > [overwrite](./kibana-plugin-core-server.savedobjectsimportsuccess.overwrite.md) - -## SavedObjectsImportSuccess.overwrite property - -If `overwrite` is specified, this object overwrote an existing one (or will do so, in the case of a pending resolution). - -Signature: - -```typescript -overwrite?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.type.md deleted file mode 100644 index e6aa894cd0af9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportsuccess.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportSuccess](./kibana-plugin-core-server.savedobjectsimportsuccess.md) > [type](./kibana-plugin-core-server.savedobjectsimportsuccess.type.md) - -## SavedObjectsImportSuccess.type property - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.md deleted file mode 100644 index 158afd45752fc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportUnknownError](./kibana-plugin-core-server.savedobjectsimportunknownerror.md) - -## SavedObjectsImportUnknownError interface - -Represents a failure to import due to an unknown reason. - -Signature: - -```typescript -export interface SavedObjectsImportUnknownError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [message](./kibana-plugin-core-server.savedobjectsimportunknownerror.message.md) | string | | -| [statusCode](./kibana-plugin-core-server.savedobjectsimportunknownerror.statuscode.md) | number | | -| [type](./kibana-plugin-core-server.savedobjectsimportunknownerror.type.md) | 'unknown' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.message.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.message.md deleted file mode 100644 index b5fb8b9db0e10..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.message.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportUnknownError](./kibana-plugin-core-server.savedobjectsimportunknownerror.md) > [message](./kibana-plugin-core-server.savedobjectsimportunknownerror.message.md) - -## SavedObjectsImportUnknownError.message property - -Signature: - -```typescript -message: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.statuscode.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.statuscode.md deleted file mode 100644 index 0fa38614e8735..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.statuscode.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportUnknownError](./kibana-plugin-core-server.savedobjectsimportunknownerror.md) > [statusCode](./kibana-plugin-core-server.savedobjectsimportunknownerror.statuscode.md) - -## SavedObjectsImportUnknownError.statusCode property - -Signature: - -```typescript -statusCode: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.type.md deleted file mode 100644 index c22a1dec73789..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunknownerror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportUnknownError](./kibana-plugin-core-server.savedobjectsimportunknownerror.md) > [type](./kibana-plugin-core-server.savedobjectsimportunknownerror.type.md) - -## SavedObjectsImportUnknownError.type property - -Signature: - -```typescript -type: 'unknown'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.md deleted file mode 100644 index 48aff60c69d13..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportUnsupportedTypeError](./kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.md) - -## SavedObjectsImportUnsupportedTypeError interface - -Represents a failure to import due to having an unsupported saved object type. - -Signature: - -```typescript -export interface SavedObjectsImportUnsupportedTypeError -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [type](./kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.type.md) | 'unsupported\_type' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.type.md deleted file mode 100644 index a985d4d8793bb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportUnsupportedTypeError](./kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.md) > [type](./kibana-plugin-core-server.savedobjectsimportunsupportedtypeerror.type.md) - -## SavedObjectsImportUnsupportedTypeError.type property - -Signature: - -```typescript -type: 'unsupported_type'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportwarning.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportwarning.md deleted file mode 100644 index 257751f16601d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsimportwarning.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsImportWarning](./kibana-plugin-core-server.savedobjectsimportwarning.md) - -## SavedObjectsImportWarning type - -Composite type of all the possible types of import warnings. - -See [SavedObjectsImportSimpleWarning](./kibana-plugin-core-server.savedobjectsimportsimplewarning.md) and [SavedObjectsImportActionRequiredWarning](./kibana-plugin-core-server.savedobjectsimportactionrequiredwarning.md) for more details. - -Signature: - -```typescript -export declare type SavedObjectsImportWarning = SavedObjectsImportSimpleWarning | SavedObjectsImportActionRequiredWarning; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.fieldname.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.fieldname.md deleted file mode 100644 index 44c3ab18fea61..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.fieldname.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterField](./kibana-plugin-core-server.savedobjectsincrementcounterfield.md) > [fieldName](./kibana-plugin-core-server.savedobjectsincrementcounterfield.fieldname.md) - -## SavedObjectsIncrementCounterField.fieldName property - -The field name to increment the counter by. - -Signature: - -```typescript -fieldName: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.incrementby.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.incrementby.md deleted file mode 100644 index dc6f8b114c1c5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.incrementby.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterField](./kibana-plugin-core-server.savedobjectsincrementcounterfield.md) > [incrementBy](./kibana-plugin-core-server.savedobjectsincrementcounterfield.incrementby.md) - -## SavedObjectsIncrementCounterField.incrementBy property - -The number to increment the field by (defaults to 1). - -Signature: - -```typescript -incrementBy?: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.md deleted file mode 100644 index a45d48523f461..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounterfield.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterField](./kibana-plugin-core-server.savedobjectsincrementcounterfield.md) - -## SavedObjectsIncrementCounterField interface - - -Signature: - -```typescript -export interface SavedObjectsIncrementCounterField -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [fieldName](./kibana-plugin-core-server.savedobjectsincrementcounterfield.fieldname.md) | string | The field name to increment the counter by. | -| [incrementBy?](./kibana-plugin-core-server.savedobjectsincrementcounterfield.incrementby.md) | number | (Optional) The number to increment the field by (defaults to 1). | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.initialize.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.initialize.md deleted file mode 100644 index 61091306d0dbc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.initialize.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterOptions](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.md) > [initialize](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.initialize.md) - -## SavedObjectsIncrementCounterOptions.initialize property - -(default=false) If true, sets all the counter fields to 0 if they don't already exist. Existing fields will be left as-is and won't be incremented. - -Signature: - -```typescript -initialize?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.md deleted file mode 100644 index 8740ffb1be185..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterOptions](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.md) - -## SavedObjectsIncrementCounterOptions interface - - -Signature: - -```typescript -export interface SavedObjectsIncrementCounterOptions extends SavedObjectsBaseOptions -``` -Extends: SavedObjectsBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [initialize?](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.initialize.md) | boolean | (Optional) (default=false) If true, sets all the counter fields to 0 if they don't already exist. Existing fields will be left as-is and won't be incremented. | -| [migrationVersion?](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md) | SavedObjectsMigrationVersion | (Optional) [SavedObjectsMigrationVersion](./kibana-plugin-core-server.savedobjectsmigrationversion.md) | -| [refresh?](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md) | MutatingOperationRefreshSetting | (Optional) (default='wait\_for') The Elasticsearch refresh setting for this operation. See [MutatingOperationRefreshSetting](./kibana-plugin-core-server.mutatingoperationrefreshsetting.md) | -| [upsertAttributes?](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.upsertattributes.md) | Attributes | (Optional) Attributes to use when upserting the document if it doesn't exist. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md deleted file mode 100644 index aff80138d61cf..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterOptions](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.md) > [migrationVersion](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.migrationversion.md) - -## SavedObjectsIncrementCounterOptions.migrationVersion property - -[SavedObjectsMigrationVersion](./kibana-plugin-core-server.savedobjectsmigrationversion.md) - -Signature: - -```typescript -migrationVersion?: SavedObjectsMigrationVersion; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md deleted file mode 100644 index 4f217cc223d46..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterOptions](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.refresh.md) - -## SavedObjectsIncrementCounterOptions.refresh property - -(default='wait\_for') The Elasticsearch refresh setting for this operation. See [MutatingOperationRefreshSetting](./kibana-plugin-core-server.mutatingoperationrefreshsetting.md) - -Signature: - -```typescript -refresh?: MutatingOperationRefreshSetting; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.upsertattributes.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.upsertattributes.md deleted file mode 100644 index d5657dd65771f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsincrementcounteroptions.upsertattributes.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsIncrementCounterOptions](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.md) > [upsertAttributes](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.upsertattributes.md) - -## SavedObjectsIncrementCounterOptions.upsertAttributes property - -Attributes to use when upserting the document if it doesn't exist. - -Signature: - -```typescript -upsertAttributes?: Attributes; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmappingproperties.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsmappingproperties.md deleted file mode 100644 index ade286c8951d4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmappingproperties.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsMappingProperties](./kibana-plugin-core-server.savedobjectsmappingproperties.md) - -## SavedObjectsMappingProperties interface - -Describe the fields of a [saved object type](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md). - -Signature: - -```typescript -export interface SavedObjectsMappingProperties -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.debug.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.debug.md deleted file mode 100644 index 3c69d11880763..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.debug.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsMigrationLogger](./kibana-plugin-core-server.savedobjectsmigrationlogger.md) > [debug](./kibana-plugin-core-server.savedobjectsmigrationlogger.debug.md) - -## SavedObjectsMigrationLogger.debug property - -Signature: - -```typescript -debug: (msg: string) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.error.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.error.md deleted file mode 100644 index 16fbc8f4eaea3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsMigrationLogger](./kibana-plugin-core-server.savedobjectsmigrationlogger.md) > [error](./kibana-plugin-core-server.savedobjectsmigrationlogger.error.md) - -## SavedObjectsMigrationLogger.error property - -Signature: - -```typescript -error: (msg: string, meta: Meta) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.info.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.info.md deleted file mode 100644 index 0dcb6b8889d4c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.info.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsMigrationLogger](./kibana-plugin-core-server.savedobjectsmigrationlogger.md) > [info](./kibana-plugin-core-server.savedobjectsmigrationlogger.info.md) - -## SavedObjectsMigrationLogger.info property - -Signature: - -```typescript -info: (msg: string) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.md deleted file mode 100644 index 80f332c395159..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsMigrationLogger](./kibana-plugin-core-server.savedobjectsmigrationlogger.md) - -## SavedObjectsMigrationLogger interface - - -Signature: - -```typescript -export interface SavedObjectsMigrationLogger -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [debug](./kibana-plugin-core-server.savedobjectsmigrationlogger.debug.md) | (msg: string) => void | | -| [error](./kibana-plugin-core-server.savedobjectsmigrationlogger.error.md) | <Meta extends LogMeta = LogMeta>(msg: string, meta: Meta) => void | | -| [info](./kibana-plugin-core-server.savedobjectsmigrationlogger.info.md) | (msg: string) => void | | -| [warn](./kibana-plugin-core-server.savedobjectsmigrationlogger.warn.md) | (msg: string) => void | | -| [warning](./kibana-plugin-core-server.savedobjectsmigrationlogger.warning.md) | (msg: string) => void | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.warn.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.warn.md deleted file mode 100644 index 34886e82d6d3d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.warn.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsMigrationLogger](./kibana-plugin-core-server.savedobjectsmigrationlogger.md) > [warn](./kibana-plugin-core-server.savedobjectsmigrationlogger.warn.md) - -## SavedObjectsMigrationLogger.warn property - -Signature: - -```typescript -warn: (msg: string) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.warning.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.warning.md deleted file mode 100644 index 5c37ce5aabcce..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationlogger.warning.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsMigrationLogger](./kibana-plugin-core-server.savedobjectsmigrationlogger.md) > [warning](./kibana-plugin-core-server.savedobjectsmigrationlogger.warning.md) - -## SavedObjectsMigrationLogger.warning property - -> Warning: This API is now obsolete. -> -> Use `warn` instead. 8.8.0 -> - -Signature: - -```typescript -warning: (msg: string) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationversion.md deleted file mode 100644 index 2241e71e4f8a6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsmigrationversion.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsMigrationVersion](./kibana-plugin-core-server.savedobjectsmigrationversion.md) - -## SavedObjectsMigrationVersion interface - -Information about the migrations that have been applied to this SavedObject. When Kibana starts up, KibanaMigrator detects outdated documents and migrates them based on this value. For each migration that has been applied, the plugin's name is used as a key and the latest migration version as the value. - -Signature: - -```typescript -export interface SavedObjectsMigrationVersion -``` - -## Example - -migrationVersion: { dashboard: '7.1.1', space: '6.6.6', } - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsnamespacetype.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsnamespacetype.md deleted file mode 100644 index 01a712aa89aa9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsnamespacetype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsNamespaceType](./kibana-plugin-core-server.savedobjectsnamespacetype.md) - -## SavedObjectsNamespaceType type - -The namespace type dictates how a saved object can be interacted in relation to namespaces. Each type is mutually exclusive: \* single (default): This type of saved object is namespace-isolated, e.g., it exists in only one namespace. \* multiple: This type of saved object is shareable, e.g., it can exist in one or more namespaces. \* multiple-isolated: This type of saved object is namespace-isolated, e.g., it exists in only one namespace, but object IDs must be unique across all namespaces. This is intended to be an intermediate step when objects with a "single" namespace type are being converted to a "multiple" namespace type. In other words, objects with a "multiple-isolated" namespace type will be \*share-capable\*, but will not actually be shareable until the namespace type is changed to "multiple". \* agnostic: This type of saved object is global. - -Signature: - -```typescript -export declare type SavedObjectsNamespaceType = 'single' | 'multiple' | 'multiple-isolated' | 'agnostic'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.keepalive.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.keepalive.md deleted file mode 100644 index 57752318cb96a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.keepalive.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsOpenPointInTimeOptions](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md) > [keepAlive](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.keepalive.md) - -## SavedObjectsOpenPointInTimeOptions.keepAlive property - -Optionally specify how long ES should keep the PIT alive until the next request. Defaults to `5m`. - -Signature: - -```typescript -keepAlive?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md deleted file mode 100644 index 331fb6cbe0a6e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsOpenPointInTimeOptions](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md) - -## SavedObjectsOpenPointInTimeOptions interface - - -Signature: - -```typescript -export interface SavedObjectsOpenPointInTimeOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [keepAlive?](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.keepalive.md) | string | (Optional) Optionally specify how long ES should keep the PIT alive until the next request. Defaults to 5m. | -| [namespaces?](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.namespaces.md) | string\[\] | (Optional) An optional list of namespaces to be used when opening the PIT.When the spaces plugin is enabled: - this will default to the user's current space (as determined by the URL) - if specified, the user's current space will be ignored - ['*'] will search across all available spaces | -| [preference?](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.preference.md) | string | (Optional) An optional ES preference value to be used for the query. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.namespaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.namespaces.md deleted file mode 100644 index 06fb7519d52c2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.namespaces.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsOpenPointInTimeOptions](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md) > [namespaces](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.namespaces.md) - -## SavedObjectsOpenPointInTimeOptions.namespaces property - -An optional list of namespaces to be used when opening the PIT. - -When the spaces plugin is enabled: - this will default to the user's current space (as determined by the URL) - if specified, the user's current space will be ignored - `['*']` will search across all available spaces - -Signature: - -```typescript -namespaces?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.preference.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.preference.md deleted file mode 100644 index 7a9f3a49e8663..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeoptions.preference.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsOpenPointInTimeOptions](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.md) > [preference](./kibana-plugin-core-server.savedobjectsopenpointintimeoptions.preference.md) - -## SavedObjectsOpenPointInTimeOptions.preference property - -An optional ES preference value to be used for the query. - -Signature: - -```typescript -preference?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeresponse.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeresponse.id.md deleted file mode 100644 index 66387e5b3b89f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeresponse.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsOpenPointInTimeResponse](./kibana-plugin-core-server.savedobjectsopenpointintimeresponse.md) > [id](./kibana-plugin-core-server.savedobjectsopenpointintimeresponse.id.md) - -## SavedObjectsOpenPointInTimeResponse.id property - -PIT ID returned from ES. - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeresponse.md deleted file mode 100644 index e3804d63a1e6c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsopenpointintimeresponse.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsOpenPointInTimeResponse](./kibana-plugin-core-server.savedobjectsopenpointintimeresponse.md) - -## SavedObjectsOpenPointInTimeResponse interface - - -Signature: - -```typescript -export interface SavedObjectsOpenPointInTimeResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-server.savedobjectsopenpointintimeresponse.id.md) | string | PIT ID returned from ES. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.id.md deleted file mode 100644 index cb4d4a65727d7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsPitParams](./kibana-plugin-core-server.savedobjectspitparams.md) > [id](./kibana-plugin-core-server.savedobjectspitparams.id.md) - -## SavedObjectsPitParams.id property - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.keepalive.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.keepalive.md deleted file mode 100644 index 1011a908f210a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.keepalive.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsPitParams](./kibana-plugin-core-server.savedobjectspitparams.md) > [keepAlive](./kibana-plugin-core-server.savedobjectspitparams.keepalive.md) - -## SavedObjectsPitParams.keepAlive property - -Signature: - -```typescript -keepAlive?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.md deleted file mode 100644 index 3109a6bd88f7e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectspitparams.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsPitParams](./kibana-plugin-core-server.savedobjectspitparams.md) - -## SavedObjectsPitParams interface - - -Signature: - -```typescript -export interface SavedObjectsPitParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-server.savedobjectspitparams.id.md) | string | | -| [keepAlive?](./kibana-plugin-core-server.savedobjectspitparams.keepalive.md) | string | (Optional) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._id.md deleted file mode 100644 index 498069d4af471..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRawDoc](./kibana-plugin-core-server.savedobjectsrawdoc.md) > [\_id](./kibana-plugin-core-server.savedobjectsrawdoc._id.md) - -## SavedObjectsRawDoc.\_id property - -Signature: - -```typescript -_id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._primary_term.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._primary_term.md deleted file mode 100644 index 6dc2eeb8a0c4c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._primary_term.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRawDoc](./kibana-plugin-core-server.savedobjectsrawdoc.md) > [\_primary\_term](./kibana-plugin-core-server.savedobjectsrawdoc._primary_term.md) - -## SavedObjectsRawDoc.\_primary\_term property - -Signature: - -```typescript -_primary_term?: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._seq_no.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._seq_no.md deleted file mode 100644 index 8b7016df7492b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._seq_no.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRawDoc](./kibana-plugin-core-server.savedobjectsrawdoc.md) > [\_seq\_no](./kibana-plugin-core-server.savedobjectsrawdoc._seq_no.md) - -## SavedObjectsRawDoc.\_seq\_no property - -Signature: - -```typescript -_seq_no?: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._source.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._source.md deleted file mode 100644 index 44faad2c8f990..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc._source.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRawDoc](./kibana-plugin-core-server.savedobjectsrawdoc.md) > [\_source](./kibana-plugin-core-server.savedobjectsrawdoc._source.md) - -## SavedObjectsRawDoc.\_source property - -Signature: - -```typescript -_source: SavedObjectsRawDocSource; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc.md deleted file mode 100644 index 8bce7fac941af..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdoc.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRawDoc](./kibana-plugin-core-server.savedobjectsrawdoc.md) - -## SavedObjectsRawDoc interface - -A raw document as represented directly in the saved object index. - -Signature: - -```typescript -export interface SavedObjectsRawDoc -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [\_id](./kibana-plugin-core-server.savedobjectsrawdoc._id.md) | string | | -| [\_primary\_term?](./kibana-plugin-core-server.savedobjectsrawdoc._primary_term.md) | number | (Optional) | -| [\_seq\_no?](./kibana-plugin-core-server.savedobjectsrawdoc._seq_no.md) | number | (Optional) | -| [\_source](./kibana-plugin-core-server.savedobjectsrawdoc._source.md) | SavedObjectsRawDocSource | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdocparseoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdocparseoptions.md deleted file mode 100644 index dc2166258d0c0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdocparseoptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRawDocParseOptions](./kibana-plugin-core-server.savedobjectsrawdocparseoptions.md) - -## SavedObjectsRawDocParseOptions interface - -Options that can be specified when using the saved objects serializer to parse a raw document. - -Signature: - -```typescript -export interface SavedObjectsRawDocParseOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [namespaceTreatment?](./kibana-plugin-core-server.savedobjectsrawdocparseoptions.namespacetreatment.md) | 'strict' \| 'lax' | (Optional) Optional setting to allow for lax handling of the raw document ID and namespace field. This is needed when a previously single-namespace object type is converted to a multi-namespace object type, and it is only intended to be used during upgrade migrations.If not specified, the default treatment is strict. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdocparseoptions.namespacetreatment.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdocparseoptions.namespacetreatment.md deleted file mode 100644 index c315d78aaf417..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrawdocparseoptions.namespacetreatment.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRawDocParseOptions](./kibana-plugin-core-server.savedobjectsrawdocparseoptions.md) > [namespaceTreatment](./kibana-plugin-core-server.savedobjectsrawdocparseoptions.namespacetreatment.md) - -## SavedObjectsRawDocParseOptions.namespaceTreatment property - -Optional setting to allow for lax handling of the raw document ID and namespace field. This is needed when a previously single-namespace object type is converted to a multi-namespace object type, and it is only intended to be used during upgrade migrations. - -If not specified, the default treatment is `strict`. - -Signature: - -```typescript -namespaceTreatment?: 'strict' | 'lax'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestooptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestooptions.md deleted file mode 100644 index c10f74297305d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestooptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRemoveReferencesToOptions](./kibana-plugin-core-server.savedobjectsremovereferencestooptions.md) - -## SavedObjectsRemoveReferencesToOptions interface - - -Signature: - -```typescript -export interface SavedObjectsRemoveReferencesToOptions extends SavedObjectsBaseOptions -``` -Extends: SavedObjectsBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [refresh?](./kibana-plugin-core-server.savedobjectsremovereferencestooptions.refresh.md) | boolean | (Optional) The Elasticsearch Refresh setting for this operation. Defaults to true | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestooptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestooptions.refresh.md deleted file mode 100644 index 71e924a8af5e1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestooptions.refresh.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRemoveReferencesToOptions](./kibana-plugin-core-server.savedobjectsremovereferencestooptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsremovereferencestooptions.refresh.md) - -## SavedObjectsRemoveReferencesToOptions.refresh property - -The Elasticsearch Refresh setting for this operation. Defaults to `true` - -Signature: - -```typescript -refresh?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestoresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestoresponse.md deleted file mode 100644 index cd10a9f916b03..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestoresponse.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRemoveReferencesToResponse](./kibana-plugin-core-server.savedobjectsremovereferencestoresponse.md) - -## SavedObjectsRemoveReferencesToResponse interface - - -Signature: - -```typescript -export interface SavedObjectsRemoveReferencesToResponse extends SavedObjectsBaseOptions -``` -Extends: SavedObjectsBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [updated](./kibana-plugin-core-server.savedobjectsremovereferencestoresponse.updated.md) | number | The number of objects that have been updated by this operation | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestoresponse.updated.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestoresponse.updated.md deleted file mode 100644 index 67c3721ccdc68..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsremovereferencestoresponse.updated.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRemoveReferencesToResponse](./kibana-plugin-core-server.savedobjectsremovereferencestoresponse.md) > [updated](./kibana-plugin-core-server.savedobjectsremovereferencestoresponse.updated.md) - -## SavedObjectsRemoveReferencesToResponse.updated property - -The number of objects that have been updated by this operation - -Signature: - -```typescript -updated: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkcreate.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkcreate.md deleted file mode 100644 index e71a9d266a3db..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkcreate.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [bulkCreate](./kibana-plugin-core-server.savedobjectsrepository.bulkcreate.md) - -## SavedObjectsRepository.bulkCreate() method - -Creates multiple documents at once - -Signature: - -```typescript -bulkCreate(objects: Array>, options?: SavedObjectsCreateOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | Array<SavedObjectsBulkCreateObject<T>> | \[{ type, id, attributes, references, migrationVersion }\] | -| options | SavedObjectsCreateOptions | {boolean} \[options.overwrite=false\] - overwrites existing documents {string} \[options.namespace\] | - -Returns: - -Promise<SavedObjectsBulkResponse<T>> - -{promise} - {saved\_objects: \[\[{ id, type, version, references, attributes, error: { message } }\]} - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkget.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkget.md deleted file mode 100644 index ab265132d606f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkget.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [bulkGet](./kibana-plugin-core-server.savedobjectsrepository.bulkget.md) - -## SavedObjectsRepository.bulkGet() method - -Returns an array of objects by id - -Signature: - -```typescript -bulkGet(objects?: SavedObjectsBulkGetObject[], options?: SavedObjectsBaseOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsBulkGetObject\[\] | an array of objects containing id, type and optionally fields | -| options | SavedObjectsBaseOptions | {string} \[options.namespace\] | - -Returns: - -Promise<SavedObjectsBulkResponse<T>> - -{promise} - { saved\_objects: \[{ id, type, version, attributes }\] } - -## Example - -bulkGet(\[ { id: 'one', type: 'config' }, { id: 'foo', type: 'index-pattern' } \]) - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkresolve.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkresolve.md deleted file mode 100644 index a67521753892d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkresolve.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [bulkResolve](./kibana-plugin-core-server.savedobjectsrepository.bulkresolve.md) - -## SavedObjectsRepository.bulkResolve() method - -Resolves an array of objects by id, using any legacy URL aliases if they exist - -Signature: - -```typescript -bulkResolve(objects: SavedObjectsBulkResolveObject[], options?: SavedObjectsBaseOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsBulkResolveObject\[\] | an array of objects containing id, type | -| options | SavedObjectsBaseOptions | {string} \[options.namespace\] | - -Returns: - -Promise<SavedObjectsBulkResolveResponse<T>> - -{promise} - { resolved\_objects: \[{ saved\_object, outcome }\] } - -## Example - -bulkResolve(\[ { id: 'one', type: 'config' }, { id: 'foo', type: 'index-pattern' } \]) - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkupdate.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkupdate.md deleted file mode 100644 index c4244a8e34e3c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.bulkupdate.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [bulkUpdate](./kibana-plugin-core-server.savedobjectsrepository.bulkupdate.md) - -## SavedObjectsRepository.bulkUpdate() method - -Updates multiple objects in bulk - -Signature: - -```typescript -bulkUpdate(objects: Array>, options?: SavedObjectsBulkUpdateOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | Array<SavedObjectsBulkUpdateObject<T>> | \[{ type, id, attributes, options: { version, namespace } references }\] {string} options.version - ensures version matches that of persisted object {string} \[options.namespace\] | -| options | SavedObjectsBulkUpdateOptions | | - -Returns: - -Promise<SavedObjectsBulkUpdateResponse<T>> - -{promise} - {saved\_objects: \[\[{ id, type, version, references, attributes, error: { message } }\]} - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.checkconflicts.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.checkconflicts.md deleted file mode 100644 index 48adf6a2dba4a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.checkconflicts.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [checkConflicts](./kibana-plugin-core-server.savedobjectsrepository.checkconflicts.md) - -## SavedObjectsRepository.checkConflicts() method - -Check what conflicts will result when creating a given array of saved objects. This includes "unresolvable conflicts", which are multi-namespace objects that exist in a different namespace; such conflicts cannot be resolved/overwritten. - -Signature: - -```typescript -checkConflicts(objects?: SavedObjectsCheckConflictsObject[], options?: SavedObjectsBaseOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsCheckConflictsObject\[\] | | -| options | SavedObjectsBaseOptions | | - -Returns: - -Promise<SavedObjectsCheckConflictsResponse> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.closepointintime.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.closepointintime.md deleted file mode 100644 index e25cd9dfcaae7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.closepointintime.md +++ /dev/null @@ -1,59 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [closePointInTime](./kibana-plugin-core-server.savedobjectsrepository.closepointintime.md) - -## SavedObjectsRepository.closePointInTime() method - -Closes a Point In Time (PIT) by ID. This simply proxies the request to ES via the Elasticsearch client, and is included in the Saved Objects Client as a convenience for consumers who are using `openPointInTimeForType`. - -Only use this API if you have an advanced use case that's not solved by the [SavedObjectsRepository.createPointInTimeFinder()](./kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md) method. - -Signature: - -```typescript -closePointInTime(id: string, options?: SavedObjectsClosePointInTimeOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string | | -| options | SavedObjectsClosePointInTimeOptions | [SavedObjectsClosePointInTimeOptions](./kibana-plugin-core-server.savedobjectsclosepointintimeoptions.md) | - -Returns: - -Promise<SavedObjectsClosePointInTimeResponse> - -{promise} - [SavedObjectsClosePointInTimeResponse](./kibana-plugin-core-server.savedobjectsclosepointintimeresponse.md) - -## Remarks - -While the `keepAlive` that is provided will cause a PIT to automatically close, it is highly recommended to explicitly close a PIT when you are done with it in order to avoid consuming unneeded resources in Elasticsearch. - -## Example - - -```ts -const repository = coreStart.savedObjects.createInternalRepository(); - -const { id } = await repository.openPointInTimeForType( - type: 'index-pattern', - { keepAlive: '2m' }, -); - -const response = await repository.find({ - type: 'index-pattern', - search: 'foo*', - sortField: 'name', - sortOrder: 'desc', - pit: { - id: 'abc123', - keepAlive: '2m', - }, - searchAfter: [1234, 'abcd'], -}); - -await repository.closePointInTime(response.pit_id); -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md deleted file mode 100644 index b22b3bd8c0b53..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [collectMultiNamespaceReferences](./kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md) - -## SavedObjectsRepository.collectMultiNamespaceReferences() method - -Gets all references and transitive references of the given objects. Ignores any object and/or reference that is not a multi-namespace type. - -Signature: - -```typescript -collectMultiNamespaceReferences(objects: SavedObjectsCollectMultiNamespaceReferencesObject[], options?: SavedObjectsCollectMultiNamespaceReferencesOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsCollectMultiNamespaceReferencesObject\[\] | The objects to get the references for. | -| options | SavedObjectsCollectMultiNamespaceReferencesOptions | | - -Returns: - -Promise<import("./collect\_multi\_namespace\_references").SavedObjectsCollectMultiNamespaceReferencesResponse> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.create.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.create.md deleted file mode 100644 index 0c5412e2cd2df..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.create.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [create](./kibana-plugin-core-server.savedobjectsrepository.create.md) - -## SavedObjectsRepository.create() method - -Persists an object - -Signature: - -```typescript -create(type: string, attributes: T, options?: SavedObjectsCreateOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| attributes | T | | -| options | SavedObjectsCreateOptions | {string} \[options.id\] - force id on creation, not recommended {boolean} \[options.overwrite=false\] {object} \[options.migrationVersion=undefined\] {string} \[options.namespace\] {array} \[options.references=\[\]\] - \[{ name, type, id }\] | - -Returns: - -Promise<SavedObject<T>> - -{promise} - { id, type, version, attributes } - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md deleted file mode 100644 index 4cbf51b85f26d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md +++ /dev/null @@ -1,52 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [createPointInTimeFinder](./kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md) - -## SavedObjectsRepository.createPointInTimeFinder() method - -Returns a [ISavedObjectsPointInTimeFinder](./kibana-plugin-core-server.isavedobjectspointintimefinder.md) to help page through large sets of saved objects. We strongly recommend using this API for any `find` queries that might return more than 1000 saved objects, however this API is only intended for use in server-side "batch" processing of objects where you are collecting all objects in memory or streaming them back to the client. - -Do NOT use this API in a route handler to facilitate paging through saved objects on the client-side unless you are streaming all of the results back to the client at once. Because the returned generator is stateful, you cannot rely on subsequent http requests retrieving new pages from the same Kibana server in multi-instance deployments. - -This generator wraps calls to [SavedObjectsRepository.find()](./kibana-plugin-core-server.savedobjectsrepository.find.md) and iterates over multiple pages of results using `_pit` and `search_after`. This will open a new Point-In-Time (PIT), and continue paging until a set of results is received that's smaller than the designated `perPage`. - -Once you have retrieved all of the results you need, it is recommended to call `close()` to clean up the PIT and prevent Elasticsearch from consuming resources unnecessarily. This is only required if you are done iterating and have not yet paged through all of the results: the PIT will automatically be closed for you once you reach the last page of results, or if the underlying call to `find` fails for any reason. - -Signature: - -```typescript -createPointInTimeFinder(findOptions: SavedObjectsCreatePointInTimeFinderOptions, dependencies?: SavedObjectsCreatePointInTimeFinderDependencies): ISavedObjectsPointInTimeFinder; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| findOptions | SavedObjectsCreatePointInTimeFinderOptions | | -| dependencies | SavedObjectsCreatePointInTimeFinderDependencies | | - -Returns: - -ISavedObjectsPointInTimeFinder<T, A> - -## Example - - -```ts -const findOptions: SavedObjectsCreatePointInTimeFinderOptions = { - type: 'visualization', - search: 'foo*', - perPage: 100, -}; - -const finder = savedObjectsClient.createPointInTimeFinder(findOptions); - -const responses: SavedObjectFindResponse[] = []; -for await (const response of finder.find()) { - responses.push(...response); - if (doneSearching) { - await finder.close(); - } -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.delete.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.delete.md deleted file mode 100644 index 2caa59210b9d3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.delete.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [delete](./kibana-plugin-core-server.savedobjectsrepository.delete.md) - -## SavedObjectsRepository.delete() method - -Deletes an object - -Signature: - -```typescript -delete(type: string, id: string, options?: SavedObjectsDeleteOptions): Promise<{}>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| options | SavedObjectsDeleteOptions | {string} \[options.namespace\] | - -Returns: - -Promise<{}> - -{promise} - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.deletebynamespace.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.deletebynamespace.md deleted file mode 100644 index 2e9048bcbe188..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.deletebynamespace.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [deleteByNamespace](./kibana-plugin-core-server.savedobjectsrepository.deletebynamespace.md) - -## SavedObjectsRepository.deleteByNamespace() method - -Deletes all objects from the provided namespace. - -Signature: - -```typescript -deleteByNamespace(namespace: string, options?: SavedObjectsDeleteByNamespaceOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| namespace | string | | -| options | SavedObjectsDeleteByNamespaceOptions | | - -Returns: - -Promise<any> - -{promise} - { took, timed\_out, total, deleted, batches, version\_conflicts, noops, retries, failures } - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.find.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.find.md deleted file mode 100644 index 58c14917aa2c9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.find.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [find](./kibana-plugin-core-server.savedobjectsrepository.find.md) - -## SavedObjectsRepository.find() method - -Signature: - -```typescript -find(options: SavedObjectsFindOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| options | SavedObjectsFindOptions | {(string\|Array)} \[options.type\] {string} \[options.search\] {string} \[options.defaultSearchOperator\] {Array} \[options.searchFields\] - see Elasticsearch Simple Query String Query field argument for more information {integer} \[options.page=1\] {integer} \[options.perPage=20\] {Array} \[options.searchAfter\] {string} \[options.sortField\] {string} \[options.sortOrder\] {Array} \[options.fields\] {string} \[options.namespace\] {object} \[options.hasReference\] - { type, id } {string} \[options.pit\] {string} \[options.preference\] | - -Returns: - -Promise<SavedObjectsFindResponse<T, A>> - -{promise} - { saved\_objects: \[{ id, type, version, attributes }\], total, per\_page, page } - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.get.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.get.md deleted file mode 100644 index 9f2b1b924857b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.get.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [get](./kibana-plugin-core-server.savedobjectsrepository.get.md) - -## SavedObjectsRepository.get() method - -Gets a single object - -Signature: - -```typescript -get(type: string, id: string, options?: SavedObjectsBaseOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| options | SavedObjectsBaseOptions | {string} \[options.namespace\] | - -Returns: - -Promise<SavedObject<T>> - -{promise} - { id, type, version, attributes } - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md deleted file mode 100644 index 0a51ec9429fe9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md +++ /dev/null @@ -1,69 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [incrementCounter](./kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md) - -## SavedObjectsRepository.incrementCounter() method - -Increments all the specified counter fields (by one by default). Creates the document if one doesn't exist for the given id. - -Signature: - -```typescript -incrementCounter(type: string, id: string, counterFields: Array, options?: SavedObjectsIncrementCounterOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | The type of saved object whose fields should be incremented | -| id | string | The id of the document whose fields should be incremented | -| counterFields | Array<string \| SavedObjectsIncrementCounterField> | An array of field names to increment or an array of [SavedObjectsIncrementCounterField](./kibana-plugin-core-server.savedobjectsincrementcounterfield.md) | -| options | SavedObjectsIncrementCounterOptions<T> | [SavedObjectsIncrementCounterOptions](./kibana-plugin-core-server.savedobjectsincrementcounteroptions.md) | - -Returns: - -Promise<SavedObject<T>> - -The saved object after the specified fields were incremented - -## Remarks - -When supplying a field name like `stats.api.counter` the field name will be used as-is to create a document like: `{attributes: {'stats.api.counter': 1}}` It will not create a nested structure like: `{attributes: {stats: {api: {counter: 1}}}}` - -When using incrementCounter for collecting usage data, you need to ensure that usage collection happens on a best-effort basis and doesn't negatively affect your plugin or users. See https://github.com/elastic/kibana/blob/main/src/plugins/usage\_collection/README.mdx\#tracking-interactions-with-incrementcounter) - -## Example - - -```ts -const repository = coreStart.savedObjects.createInternalRepository(); - -// Initialize all fields to 0 -repository - .incrementCounter('dashboard_counter_type', 'counter_id', [ - 'stats.apiCalls', - 'stats.sampleDataInstalled', - ], {initialize: true}); - -// Increment the apiCalls field counter -repository - .incrementCounter('dashboard_counter_type', 'counter_id', [ - 'stats.apiCalls', - ]) - -// Increment the apiCalls field counter by 4 -repository - .incrementCounter('dashboard_counter_type', 'counter_id', [ - { fieldName: 'stats.apiCalls' incrementBy: 4 }, - ]) - -// Initialize the document with arbitrary fields if not present -repository.incrementCounter<{ appId: string }>( - 'dashboard_counter_type', - 'counter_id', - [ 'stats.apiCalls'], - { upsertAttributes: { appId: 'myId' } } -) -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md deleted file mode 100644 index b1d65f5f6d3c3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.md +++ /dev/null @@ -1,37 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) - -## SavedObjectsRepository class - - -Signature: - -```typescript -export declare class SavedObjectsRepository -``` - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [bulkCreate(objects, options)](./kibana-plugin-core-server.savedobjectsrepository.bulkcreate.md) | | Creates multiple documents at once | -| [bulkGet(objects, options)](./kibana-plugin-core-server.savedobjectsrepository.bulkget.md) | | Returns an array of objects by id | -| [bulkResolve(objects, options)](./kibana-plugin-core-server.savedobjectsrepository.bulkresolve.md) | | Resolves an array of objects by id, using any legacy URL aliases if they exist | -| [bulkUpdate(objects, options)](./kibana-plugin-core-server.savedobjectsrepository.bulkupdate.md) | | Updates multiple objects in bulk | -| [checkConflicts(objects, options)](./kibana-plugin-core-server.savedobjectsrepository.checkconflicts.md) | | Check what conflicts will result when creating a given array of saved objects. This includes "unresolvable conflicts", which are multi-namespace objects that exist in a different namespace; such conflicts cannot be resolved/overwritten. | -| [closePointInTime(id, options)](./kibana-plugin-core-server.savedobjectsrepository.closepointintime.md) | | Closes a Point In Time (PIT) by ID. This simply proxies the request to ES via the Elasticsearch client, and is included in the Saved Objects Client as a convenience for consumers who are using openPointInTimeForType.Only use this API if you have an advanced use case that's not solved by the [SavedObjectsRepository.createPointInTimeFinder()](./kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md) method. | -| [collectMultiNamespaceReferences(objects, options)](./kibana-plugin-core-server.savedobjectsrepository.collectmultinamespacereferences.md) | | Gets all references and transitive references of the given objects. Ignores any object and/or reference that is not a multi-namespace type. | -| [create(type, attributes, options)](./kibana-plugin-core-server.savedobjectsrepository.create.md) | | Persists an object | -| [createPointInTimeFinder(findOptions, dependencies)](./kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md) | | Returns a [ISavedObjectsPointInTimeFinder](./kibana-plugin-core-server.isavedobjectspointintimefinder.md) to help page through large sets of saved objects. We strongly recommend using this API for any find queries that might return more than 1000 saved objects, however this API is only intended for use in server-side "batch" processing of objects where you are collecting all objects in memory or streaming them back to the client.Do NOT use this API in a route handler to facilitate paging through saved objects on the client-side unless you are streaming all of the results back to the client at once. Because the returned generator is stateful, you cannot rely on subsequent http requests retrieving new pages from the same Kibana server in multi-instance deployments.This generator wraps calls to [SavedObjectsRepository.find()](./kibana-plugin-core-server.savedobjectsrepository.find.md) and iterates over multiple pages of results using _pit and search_after. This will open a new Point-In-Time (PIT), and continue paging until a set of results is received that's smaller than the designated perPage.Once you have retrieved all of the results you need, it is recommended to call close() to clean up the PIT and prevent Elasticsearch from consuming resources unnecessarily. This is only required if you are done iterating and have not yet paged through all of the results: the PIT will automatically be closed for you once you reach the last page of results, or if the underlying call to find fails for any reason. | -| [delete(type, id, options)](./kibana-plugin-core-server.savedobjectsrepository.delete.md) | | Deletes an object | -| [deleteByNamespace(namespace, options)](./kibana-plugin-core-server.savedobjectsrepository.deletebynamespace.md) | | Deletes all objects from the provided namespace. | -| [find(options)](./kibana-plugin-core-server.savedobjectsrepository.find.md) | | | -| [get(type, id, options)](./kibana-plugin-core-server.savedobjectsrepository.get.md) | | Gets a single object | -| [incrementCounter(type, id, counterFields, options)](./kibana-plugin-core-server.savedobjectsrepository.incrementcounter.md) | | Increments all the specified counter fields (by one by default). Creates the document if one doesn't exist for the given id. | -| [openPointInTimeForType(type, { keepAlive, preference })](./kibana-plugin-core-server.savedobjectsrepository.openpointintimefortype.md) | | Opens a Point In Time (PIT) against the indices for the specified Saved Object types. The returned id can then be passed to SavedObjects.find to search against that PIT.Only use this API if you have an advanced use case that's not solved by the [SavedObjectsRepository.createPointInTimeFinder()](./kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md) method. | -| [removeReferencesTo(type, id, options)](./kibana-plugin-core-server.savedobjectsrepository.removereferencesto.md) | | Updates all objects containing a reference to the given {type, id} tuple to remove the said reference. | -| [resolve(type, id, options)](./kibana-plugin-core-server.savedobjectsrepository.resolve.md) | | Resolves a single object, using any legacy URL alias if it exists | -| [update(type, id, attributes, options)](./kibana-plugin-core-server.savedobjectsrepository.update.md) | | Updates an object | -| [updateObjectsSpaces(objects, spacesToAdd, spacesToRemove, options)](./kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md) | | Updates one or more objects to add and/or remove them from specified spaces. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.openpointintimefortype.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.openpointintimefortype.md deleted file mode 100644 index e0eb4bc603a2d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.openpointintimefortype.md +++ /dev/null @@ -1,54 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [openPointInTimeForType](./kibana-plugin-core-server.savedobjectsrepository.openpointintimefortype.md) - -## SavedObjectsRepository.openPointInTimeForType() method - -Opens a Point In Time (PIT) against the indices for the specified Saved Object types. The returned `id` can then be passed to `SavedObjects.find` to search against that PIT. - -Only use this API if you have an advanced use case that's not solved by the [SavedObjectsRepository.createPointInTimeFinder()](./kibana-plugin-core-server.savedobjectsrepository.createpointintimefinder.md) method. - -Signature: - -```typescript -openPointInTimeForType(type: string | string[], { keepAlive, preference }?: SavedObjectsOpenPointInTimeOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string \| string\[\] | | -| { keepAlive, preference } | SavedObjectsOpenPointInTimeOptions | | - -Returns: - -Promise<SavedObjectsOpenPointInTimeResponse> - -{promise} - { id: string } - -## Example - - -```ts -const { id } = await savedObjectsClient.openPointInTimeForType( - type: 'visualization', - { keepAlive: '5m' }, -); -const page1 = await savedObjectsClient.find({ - type: 'visualization', - sortField: 'updated_at', - sortOrder: 'asc', - pit: { id, keepAlive: '2m' }, -}); -const lastHit = page1.saved_objects[page1.saved_objects.length - 1]; -const page2 = await savedObjectsClient.find({ - type: 'visualization', - sortField: 'updated_at', - sortOrder: 'asc', - pit: { id: page1.pit_id }, - searchAfter: lastHit.sort, -}); -await savedObjectsClient.closePointInTime(page2.pit_id); -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.removereferencesto.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.removereferencesto.md deleted file mode 100644 index 6691bf69e58dc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.removereferencesto.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [removeReferencesTo](./kibana-plugin-core-server.savedobjectsrepository.removereferencesto.md) - -## SavedObjectsRepository.removeReferencesTo() method - -Updates all objects containing a reference to the given {type, id} tuple to remove the said reference. - -Signature: - -```typescript -removeReferencesTo(type: string, id: string, options?: SavedObjectsRemoveReferencesToOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| options | SavedObjectsRemoveReferencesToOptions | | - -Returns: - -Promise<SavedObjectsRemoveReferencesToResponse> - -## Remarks - -Will throw a conflict error if the `update_by_query` operation returns any failure. In that case some references might have been removed, and some were not. It is the caller's responsibility to handle and fix this situation if it was to happen. - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.resolve.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.resolve.md deleted file mode 100644 index bf558eca975fd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.resolve.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [resolve](./kibana-plugin-core-server.savedobjectsrepository.resolve.md) - -## SavedObjectsRepository.resolve() method - -Resolves a single object, using any legacy URL alias if it exists - -Signature: - -```typescript -resolve(type: string, id: string, options?: SavedObjectsBaseOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| options | SavedObjectsBaseOptions | {string} \[options.namespace\] | - -Returns: - -Promise<SavedObjectsResolveResponse<T>> - -{promise} - { saved\_object, outcome } - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.update.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.update.md deleted file mode 100644 index 681ba9eb3f014..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.update.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [update](./kibana-plugin-core-server.savedobjectsrepository.update.md) - -## SavedObjectsRepository.update() method - -Updates an object - -Signature: - -```typescript -update(type: string, id: string, attributes: Partial, options?: SavedObjectsUpdateOptions): Promise>; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | -| id | string | | -| attributes | Partial<T> | | -| options | SavedObjectsUpdateOptions<T> | {string} options.version - ensures version matches that of persisted object {string} \[options.namespace\] {array} \[options.references\] - \[{ name, type, id }\] | - -Returns: - -Promise<SavedObjectsUpdateResponse<T>> - -{promise} - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md deleted file mode 100644 index c226e8d2d2b1d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md +++ /dev/null @@ -1,27 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepository](./kibana-plugin-core-server.savedobjectsrepository.md) > [updateObjectsSpaces](./kibana-plugin-core-server.savedobjectsrepository.updateobjectsspaces.md) - -## SavedObjectsRepository.updateObjectsSpaces() method - -Updates one or more objects to add and/or remove them from specified spaces. - -Signature: - -```typescript -updateObjectsSpaces(objects: SavedObjectsUpdateObjectsSpacesObject[], spacesToAdd: string[], spacesToRemove: string[], options?: SavedObjectsUpdateObjectsSpacesOptions): Promise; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| objects | SavedObjectsUpdateObjectsSpacesObject\[\] | | -| spacesToAdd | string\[\] | | -| spacesToRemove | string\[\] | | -| options | SavedObjectsUpdateObjectsSpacesOptions | | - -Returns: - -Promise<import("./update\_objects\_spaces").SavedObjectsUpdateObjectsSpacesResponse> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.createinternalrepository.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.createinternalrepository.md deleted file mode 100644 index e39ce020b930c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.createinternalrepository.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepositoryFactory](./kibana-plugin-core-server.savedobjectsrepositoryfactory.md) > [createInternalRepository](./kibana-plugin-core-server.savedobjectsrepositoryfactory.createinternalrepository.md) - -## SavedObjectsRepositoryFactory.createInternalRepository property - -Creates a [Saved Objects repository](./kibana-plugin-core-server.isavedobjectsrepository.md) that uses the internal Kibana user for authenticating with Elasticsearch. - -Signature: - -```typescript -createInternalRepository: (includedHiddenTypes?: string[]) => ISavedObjectsRepository; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.createscopedrepository.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.createscopedrepository.md deleted file mode 100644 index 9cd0df9094277..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.createscopedrepository.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepositoryFactory](./kibana-plugin-core-server.savedobjectsrepositoryfactory.md) > [createScopedRepository](./kibana-plugin-core-server.savedobjectsrepositoryfactory.createscopedrepository.md) - -## SavedObjectsRepositoryFactory.createScopedRepository property - -Creates a [Saved Objects repository](./kibana-plugin-core-server.isavedobjectsrepository.md) that uses the credentials from the passed in request to authenticate with Elasticsearch. - -Signature: - -```typescript -createScopedRepository: (req: KibanaRequest, includedHiddenTypes?: string[]) => ISavedObjectsRepository; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.md deleted file mode 100644 index 72aa79ed4df29..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsrepositoryfactory.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsRepositoryFactory](./kibana-plugin-core-server.savedobjectsrepositoryfactory.md) - -## SavedObjectsRepositoryFactory interface - -Factory provided when invoking a [client factory provider](./kibana-plugin-core-server.savedobjectsclientfactoryprovider.md) See [SavedObjectsServiceSetup.setClientFactoryProvider](./kibana-plugin-core-server.savedobjectsservicesetup.setclientfactoryprovider.md) - -Signature: - -```typescript -export interface SavedObjectsRepositoryFactory -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [createInternalRepository](./kibana-plugin-core-server.savedobjectsrepositoryfactory.createinternalrepository.md) | (includedHiddenTypes?: string\[\]) => ISavedObjectsRepository | Creates a [Saved Objects repository](./kibana-plugin-core-server.isavedobjectsrepository.md) that uses the internal Kibana user for authenticating with Elasticsearch. | -| [createScopedRepository](./kibana-plugin-core-server.savedobjectsrepositoryfactory.createscopedrepository.md) | (req: KibanaRequest, includedHiddenTypes?: string\[\]) => ISavedObjectsRepository | Creates a [Saved Objects repository](./kibana-plugin-core-server.isavedobjectsrepository.md) that uses the credentials from the passed in request to authenticate with Elasticsearch. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.createnewcopies.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.createnewcopies.md deleted file mode 100644 index 82831eae37d7b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.createnewcopies.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsResolveImportErrorsOptions](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md) > [createNewCopies](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.createnewcopies.md) - -## SavedObjectsResolveImportErrorsOptions.createNewCopies property - -If true, will create new copies of import objects, each with a random `id` and undefined `originId`. - -Signature: - -```typescript -createNewCopies: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md deleted file mode 100644 index 7a005db4334ba..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsResolveImportErrorsOptions](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md) - -## SavedObjectsResolveImportErrorsOptions interface - -Options to control the "resolve import" operation. - -Signature: - -```typescript -export interface SavedObjectsResolveImportErrorsOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [createNewCopies](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.createnewcopies.md) | boolean | If true, will create new copies of import objects, each with a random id and undefined originId. | -| [namespace?](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.namespace.md) | string | (Optional) if specified, will import in given namespace | -| [readStream](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.readstream.md) | Readable | The stream of [saved objects](./kibana-plugin-core-server.savedobject.md) to resolve errors from | -| [retries](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.retries.md) | SavedObjectsImportRetry\[\] | saved object import references to retry | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.namespace.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.namespace.md deleted file mode 100644 index 0ab9e02f9dfe5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.namespace.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsResolveImportErrorsOptions](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md) > [namespace](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.namespace.md) - -## SavedObjectsResolveImportErrorsOptions.namespace property - -if specified, will import in given namespace - -Signature: - -```typescript -namespace?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.readstream.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.readstream.md deleted file mode 100644 index 8f5aa9bad3747..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.readstream.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsResolveImportErrorsOptions](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md) > [readStream](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.readstream.md) - -## SavedObjectsResolveImportErrorsOptions.readStream property - -The stream of [saved objects](./kibana-plugin-core-server.savedobject.md) to resolve errors from - -Signature: - -```typescript -readStream: Readable; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.retries.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.retries.md deleted file mode 100644 index 78b8cfdb72e3a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.retries.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsResolveImportErrorsOptions](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.md) > [retries](./kibana-plugin-core-server.savedobjectsresolveimporterrorsoptions.retries.md) - -## SavedObjectsResolveImportErrorsOptions.retries property - -saved object import references to retry - -Signature: - -```typescript -retries: SavedObjectsImportRetry[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.alias_purpose.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.alias_purpose.md deleted file mode 100644 index afad46f9a84cd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.alias_purpose.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsResolveResponse](./kibana-plugin-core-server.savedobjectsresolveresponse.md) > [alias\_purpose](./kibana-plugin-core-server.savedobjectsresolveresponse.alias_purpose.md) - -## SavedObjectsResolveResponse.alias\_purpose property - -The reason this alias was created. - -Currently this is used to determine whether or not a toast should be shown when a user is redirected from a legacy URL; if the alias was created because of saved object conversion, then we will display a toast telling the user that the object has a new URL. - -\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is `'aliasMatch'` or `'conflict'`). - -Signature: - -```typescript -alias_purpose?: 'savedObjectConversion' | 'savedObjectImport'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.alias_target_id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.alias_target_id.md deleted file mode 100644 index 52419918c0831..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.alias_target_id.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsResolveResponse](./kibana-plugin-core-server.savedobjectsresolveresponse.md) > [alias\_target\_id](./kibana-plugin-core-server.savedobjectsresolveresponse.alias_target_id.md) - -## SavedObjectsResolveResponse.alias\_target\_id property - -The ID of the object that the legacy URL alias points to. - -\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is `'aliasMatch'` or `'conflict'`). - -Signature: - -```typescript -alias_target_id?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.md deleted file mode 100644 index 0228c624f69d0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsResolveResponse](./kibana-plugin-core-server.savedobjectsresolveresponse.md) - -## SavedObjectsResolveResponse interface - - -Signature: - -```typescript -export interface SavedObjectsResolveResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [alias\_purpose?](./kibana-plugin-core-server.savedobjectsresolveresponse.alias_purpose.md) | 'savedObjectConversion' \| 'savedObjectImport' | (Optional) The reason this alias was created.Currently this is used to determine whether or not a toast should be shown when a user is redirected from a legacy URL; if the alias was created because of saved object conversion, then we will display a toast telling the user that the object has a new URL.\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is 'aliasMatch' or 'conflict'). | -| [alias\_target\_id?](./kibana-plugin-core-server.savedobjectsresolveresponse.alias_target_id.md) | string | (Optional) The ID of the object that the legacy URL alias points to.\*\*Note:\*\* this field is \*only\* included when an alias was found (in other words, when the outcome is 'aliasMatch' or 'conflict'). | -| [outcome](./kibana-plugin-core-server.savedobjectsresolveresponse.outcome.md) | 'exactMatch' \| 'aliasMatch' \| 'conflict' | The outcome for a successful resolve call is one of the following values:\* 'exactMatch' -- One document exactly matched the given ID. \* 'aliasMatch' -- One document with a legacy URL alias matched the given ID; in this case the saved_object.id field is different than the given ID. \* 'conflict' -- Two documents matched the given ID, one was an exact match and another with a legacy URL alias; in this case the saved_object object is the exact match, and the saved_object.id field is the same as the given ID. | -| [saved\_object](./kibana-plugin-core-server.savedobjectsresolveresponse.saved_object.md) | SavedObject<T> | The saved object that was found. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.outcome.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.outcome.md deleted file mode 100644 index eadd85b175375..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.outcome.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsResolveResponse](./kibana-plugin-core-server.savedobjectsresolveresponse.md) > [outcome](./kibana-plugin-core-server.savedobjectsresolveresponse.outcome.md) - -## SavedObjectsResolveResponse.outcome property - -The outcome for a successful `resolve` call is one of the following values: - -\* `'exactMatch'` -- One document exactly matched the given ID. \* `'aliasMatch'` -- One document with a legacy URL alias matched the given ID; in this case the `saved_object.id` field is different than the given ID. \* `'conflict'` -- Two documents matched the given ID, one was an exact match and another with a legacy URL alias; in this case the `saved_object` object is the exact match, and the `saved_object.id` field is the same as the given ID. - -Signature: - -```typescript -outcome: 'exactMatch' | 'aliasMatch' | 'conflict'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.saved_object.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.saved_object.md deleted file mode 100644 index c7748a2f97025..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsresolveresponse.saved_object.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsResolveResponse](./kibana-plugin-core-server.savedobjectsresolveresponse.md) > [saved\_object](./kibana-plugin-core-server.savedobjectsresolveresponse.saved_object.md) - -## SavedObjectsResolveResponse.saved\_object property - -The saved object that was found. - -Signature: - -```typescript -saved_object: SavedObject; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawid.md deleted file mode 100644 index 6172a05d5c8fa..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawid.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsSerializer](./kibana-plugin-core-server.savedobjectsserializer.md) > [generateRawId](./kibana-plugin-core-server.savedobjectsserializer.generaterawid.md) - -## SavedObjectsSerializer.generateRawId() method - -Given a saved object type and id, generates the compound id that is stored in the raw document. - -Signature: - -```typescript -generateRawId(namespace: string | undefined, type: string, id: string): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| namespace | string \| undefined | The namespace of the saved object | -| type | string | The saved object type | -| id | string | The id of the saved object | - -Returns: - -string - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawlegacyurlaliasid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawlegacyurlaliasid.md deleted file mode 100644 index 0f7c3dc22faf1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.generaterawlegacyurlaliasid.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsSerializer](./kibana-plugin-core-server.savedobjectsserializer.md) > [generateRawLegacyUrlAliasId](./kibana-plugin-core-server.savedobjectsserializer.generaterawlegacyurlaliasid.md) - -## SavedObjectsSerializer.generateRawLegacyUrlAliasId() method - -Given a saved object type and id, generates the compound id that is stored in the raw document for its legacy URL alias. - -Signature: - -```typescript -generateRawLegacyUrlAliasId(namespace: string | undefined, type: string, id: string): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| namespace | string \| undefined | The namespace of the saved object | -| type | string | The saved object type | -| id | string | The id of the saved object | - -Returns: - -string - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.israwsavedobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.israwsavedobject.md deleted file mode 100644 index 00963e353aa20..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.israwsavedobject.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsSerializer](./kibana-plugin-core-server.savedobjectsserializer.md) > [isRawSavedObject](./kibana-plugin-core-server.savedobjectsserializer.israwsavedobject.md) - -## SavedObjectsSerializer.isRawSavedObject() method - -Determines whether or not the raw document can be converted to a saved object. - -Signature: - -```typescript -isRawSavedObject(doc: SavedObjectsRawDoc, options?: SavedObjectsRawDocParseOptions): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| doc | SavedObjectsRawDoc | The raw ES document to be tested | -| options | SavedObjectsRawDocParseOptions | Options for parsing the raw document. | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.md deleted file mode 100644 index c7fa5fc85c613..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsSerializer](./kibana-plugin-core-server.savedobjectsserializer.md) - -## SavedObjectsSerializer class - -A serializer that can be used to manually convert [raw](./kibana-plugin-core-server.savedobjectsrawdoc.md) or [sanitized](./kibana-plugin-core-server.savedobjectsanitizeddoc.md) documents to the other kind. - -Signature: - -```typescript -export declare class SavedObjectsSerializer -``` - -## Remarks - -Serializer instances should only be created and accessed by calling [SavedObjectsServiceStart.createSerializer](./kibana-plugin-core-server.savedobjectsservicestart.createserializer.md) - -The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `SavedObjectsSerializer` class. - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [generateRawId(namespace, type, id)](./kibana-plugin-core-server.savedobjectsserializer.generaterawid.md) | | Given a saved object type and id, generates the compound id that is stored in the raw document. | -| [generateRawLegacyUrlAliasId(namespace, type, id)](./kibana-plugin-core-server.savedobjectsserializer.generaterawlegacyurlaliasid.md) | | Given a saved object type and id, generates the compound id that is stored in the raw document for its legacy URL alias. | -| [isRawSavedObject(doc, options)](./kibana-plugin-core-server.savedobjectsserializer.israwsavedobject.md) | | Determines whether or not the raw document can be converted to a saved object. | -| [rawToSavedObject(doc, options)](./kibana-plugin-core-server.savedobjectsserializer.rawtosavedobject.md) | | Converts a document from the format that is stored in elasticsearch to the saved object client format. | -| [savedObjectToRaw(savedObj)](./kibana-plugin-core-server.savedobjectsserializer.savedobjecttoraw.md) | | Converts a document from the saved object client format to the format that is stored in elasticsearch. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.rawtosavedobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.rawtosavedobject.md deleted file mode 100644 index 9ac0ae0feee09..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.rawtosavedobject.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsSerializer](./kibana-plugin-core-server.savedobjectsserializer.md) > [rawToSavedObject](./kibana-plugin-core-server.savedobjectsserializer.rawtosavedobject.md) - -## SavedObjectsSerializer.rawToSavedObject() method - -Converts a document from the format that is stored in elasticsearch to the saved object client format. - -Signature: - -```typescript -rawToSavedObject(doc: SavedObjectsRawDoc, options?: SavedObjectsRawDocParseOptions): SavedObjectSanitizedDoc; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| doc | SavedObjectsRawDoc | The raw ES document to be converted to saved object format. | -| options | SavedObjectsRawDocParseOptions | Options for parsing the raw document. | - -Returns: - -SavedObjectSanitizedDoc<T> - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.savedobjecttoraw.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.savedobjecttoraw.md deleted file mode 100644 index 560011fc09638..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsserializer.savedobjecttoraw.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsSerializer](./kibana-plugin-core-server.savedobjectsserializer.md) > [savedObjectToRaw](./kibana-plugin-core-server.savedobjectsserializer.savedobjecttoraw.md) - -## SavedObjectsSerializer.savedObjectToRaw() method - -Converts a document from the saved object client format to the format that is stored in elasticsearch. - -Signature: - -```typescript -savedObjectToRaw(savedObj: SavedObjectSanitizedDoc): SavedObjectsRawDoc; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| savedObj | SavedObjectSanitizedDoc | The saved object to be converted to raw ES format. | - -Returns: - -SavedObjectsRawDoc - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.addclientwrapper.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.addclientwrapper.md deleted file mode 100644 index 1c2a15a8b322e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.addclientwrapper.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceSetup](./kibana-plugin-core-server.savedobjectsservicesetup.md) > [addClientWrapper](./kibana-plugin-core-server.savedobjectsservicesetup.addclientwrapper.md) - -## SavedObjectsServiceSetup.addClientWrapper property - -Add a [client wrapper factory](./kibana-plugin-core-server.savedobjectsclientwrapperfactory.md) with the given priority. - -Signature: - -```typescript -addClientWrapper: (priority: number, id: string, factory: SavedObjectsClientWrapperFactory) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.getkibanaindex.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.getkibanaindex.md deleted file mode 100644 index 9319ae987ad44..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.getkibanaindex.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceSetup](./kibana-plugin-core-server.savedobjectsservicesetup.md) > [getKibanaIndex](./kibana-plugin-core-server.savedobjectsservicesetup.getkibanaindex.md) - -## SavedObjectsServiceSetup.getKibanaIndex property - -Returns the default index used for saved objects. - -Signature: - -```typescript -getKibanaIndex: () => string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.md deleted file mode 100644 index d9f7b888338fc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.md +++ /dev/null @@ -1,56 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceSetup](./kibana-plugin-core-server.savedobjectsservicesetup.md) - -## SavedObjectsServiceSetup interface - -Saved Objects is Kibana's data persistence mechanism allowing plugins to use Elasticsearch for storing and querying state. The SavedObjectsServiceSetup API exposes methods for registering Saved Object types, creating and registering Saved Object client wrappers and factories. - -Signature: - -```typescript -export interface SavedObjectsServiceSetup -``` - -## Remarks - -When plugins access the Saved Objects client, a new client is created using the factory provided to `setClientFactory` and wrapped by all wrappers registered through `addClientWrapper`. - -## Example 1 - - -```ts -import { SavedObjectsClient, CoreSetup } from 'src/core/server'; - -export class Plugin() { - setup: (core: CoreSetup) => { - core.savedObjects.setClientFactory(({ request: KibanaRequest }) => { - return new SavedObjectsClient(core.savedObjects.scopedRepository(request)); - }) - } -} -``` - -## Example 2 - - -```ts -import { SavedObjectsClient, CoreSetup } from 'src/core/server'; -import { mySoType } from './saved_objects' - -export class Plugin() { - setup: (core: CoreSetup) => { - core.savedObjects.registerType(mySoType); - } -} -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [addClientWrapper](./kibana-plugin-core-server.savedobjectsservicesetup.addclientwrapper.md) | (priority: number, id: string, factory: SavedObjectsClientWrapperFactory) => void | Add a [client wrapper factory](./kibana-plugin-core-server.savedobjectsclientwrapperfactory.md) with the given priority. | -| [getKibanaIndex](./kibana-plugin-core-server.savedobjectsservicesetup.getkibanaindex.md) | () => string | Returns the default index used for saved objects. | -| [registerType](./kibana-plugin-core-server.savedobjectsservicesetup.registertype.md) | <Attributes extends SavedObjectAttributes = any>(type: SavedObjectsType<Attributes>) => void | Register a [savedObjects type](./kibana-plugin-core-server.savedobjectstype.md) definition.See the [mappings format](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md) and [migration format](./kibana-plugin-core-server.savedobjectmigrationmap.md) for more details about these. | -| [setClientFactoryProvider](./kibana-plugin-core-server.savedobjectsservicesetup.setclientfactoryprovider.md) | (clientFactoryProvider: SavedObjectsClientFactoryProvider) => void | Set the default [factory provider](./kibana-plugin-core-server.savedobjectsclientfactoryprovider.md) for creating Saved Objects clients. Only one provider can be set, subsequent calls to this method will fail. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md deleted file mode 100644 index afe3098ef1813..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.registertype.md +++ /dev/null @@ -1,60 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceSetup](./kibana-plugin-core-server.savedobjectsservicesetup.md) > [registerType](./kibana-plugin-core-server.savedobjectsservicesetup.registertype.md) - -## SavedObjectsServiceSetup.registerType property - -Register a [savedObjects type](./kibana-plugin-core-server.savedobjectstype.md) definition. - -See the [mappings format](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md) and [migration format](./kibana-plugin-core-server.savedobjectmigrationmap.md) for more details about these. - -Signature: - -```typescript -registerType: (type: SavedObjectsType) => void; -``` - -## Example - - -```ts -// src/plugins/my_plugin/server/saved_objects/my_type.ts -import { SavedObjectsType } from 'src/core/server'; -import * as migrations from './migrations'; -import * as schemas from './schemas'; - -export const myType: SavedObjectsType = { - name: 'MyType', - hidden: false, - namespaceType: 'multiple', - mappings: { - properties: { - textField: { - type: 'text', - }, - boolField: { - type: 'boolean', - }, - }, - }, - migrations: { - '2.0.0': migrations.migrateToV2, - '2.1.0': migrations.migrateToV2_1 - }, - schemas: { - '2.0.0': schemas.v2, - '2.1.0': schemas.v2_1, - }, -}; - -// src/plugins/my_plugin/server/plugin.ts -import { SavedObjectsClient, CoreSetup } from 'src/core/server'; -import { myType } from './saved_objects'; - -export class Plugin() { - setup: (core: CoreSetup) => { - core.savedObjects.registerType(myType); - } -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.setclientfactoryprovider.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.setclientfactoryprovider.md deleted file mode 100644 index e098245e369f1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicesetup.setclientfactoryprovider.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceSetup](./kibana-plugin-core-server.savedobjectsservicesetup.md) > [setClientFactoryProvider](./kibana-plugin-core-server.savedobjectsservicesetup.setclientfactoryprovider.md) - -## SavedObjectsServiceSetup.setClientFactoryProvider property - -Set the default [factory provider](./kibana-plugin-core-server.savedobjectsclientfactoryprovider.md) for creating Saved Objects clients. Only one provider can be set, subsequent calls to this method will fail. - -Signature: - -```typescript -setClientFactoryProvider: (clientFactoryProvider: SavedObjectsClientFactoryProvider) => void; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createexporter.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createexporter.md deleted file mode 100644 index 273d80983f15d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createexporter.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceStart](./kibana-plugin-core-server.savedobjectsservicestart.md) > [createExporter](./kibana-plugin-core-server.savedobjectsservicestart.createexporter.md) - -## SavedObjectsServiceStart.createExporter property - -Creates an [exporter](./kibana-plugin-core-server.isavedobjectsexporter.md) bound to given client. - -Signature: - -```typescript -createExporter: (client: SavedObjectsClientContract) => ISavedObjectsExporter; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createimporter.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createimporter.md deleted file mode 100644 index f2617c5c6c12a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createimporter.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceStart](./kibana-plugin-core-server.savedobjectsservicestart.md) > [createImporter](./kibana-plugin-core-server.savedobjectsservicestart.createimporter.md) - -## SavedObjectsServiceStart.createImporter property - -Creates an [importer](./kibana-plugin-core-server.isavedobjectsimporter.md) bound to given client. - -Signature: - -```typescript -createImporter: (client: SavedObjectsClientContract) => ISavedObjectsImporter; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createinternalrepository.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createinternalrepository.md deleted file mode 100644 index d03e9ca223c53..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createinternalrepository.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceStart](./kibana-plugin-core-server.savedobjectsservicestart.md) > [createInternalRepository](./kibana-plugin-core-server.savedobjectsservicestart.createinternalrepository.md) - -## SavedObjectsServiceStart.createInternalRepository property - -Creates a [Saved Objects repository](./kibana-plugin-core-server.isavedobjectsrepository.md) that uses the internal Kibana user for authenticating with Elasticsearch. - -Signature: - -```typescript -createInternalRepository: (includedHiddenTypes?: string[]) => ISavedObjectsRepository; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createscopedrepository.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createscopedrepository.md deleted file mode 100644 index 762f77b98e74d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createscopedrepository.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceStart](./kibana-plugin-core-server.savedobjectsservicestart.md) > [createScopedRepository](./kibana-plugin-core-server.savedobjectsservicestart.createscopedrepository.md) - -## SavedObjectsServiceStart.createScopedRepository property - -Creates a [Saved Objects repository](./kibana-plugin-core-server.isavedobjectsrepository.md) that uses the credentials from the passed in request to authenticate with Elasticsearch. - -Signature: - -```typescript -createScopedRepository: (req: KibanaRequest, includedHiddenTypes?: string[]) => ISavedObjectsRepository; -``` - -## Remarks - -Prefer using `getScopedClient`. This should only be used when using methods not exposed on [SavedObjectsClientContract](./kibana-plugin-core-server.savedobjectsclientcontract.md) - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createserializer.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createserializer.md deleted file mode 100644 index 434d6a0270ca3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.createserializer.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceStart](./kibana-plugin-core-server.savedobjectsservicestart.md) > [createSerializer](./kibana-plugin-core-server.savedobjectsservicestart.createserializer.md) - -## SavedObjectsServiceStart.createSerializer property - -Creates a [serializer](./kibana-plugin-core-server.savedobjectsserializer.md) that is aware of all registered types. - -Signature: - -```typescript -createSerializer: () => SavedObjectsSerializer; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.getscopedclient.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.getscopedclient.md deleted file mode 100644 index e4d3129ece549..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.getscopedclient.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceStart](./kibana-plugin-core-server.savedobjectsservicestart.md) > [getScopedClient](./kibana-plugin-core-server.savedobjectsservicestart.getscopedclient.md) - -## SavedObjectsServiceStart.getScopedClient property - -Creates a [Saved Objects client](./kibana-plugin-core-server.savedobjectsclientcontract.md) that uses the credentials from the passed in request to authenticate with Elasticsearch. If other plugins have registered Saved Objects client wrappers, these will be applied to extend the functionality of the client. - -A client that is already scoped to the incoming request is also exposed from the route handler context see [RequestHandlerContext](./kibana-plugin-core-server.requesthandlercontext.md). - -Signature: - -```typescript -getScopedClient: (req: KibanaRequest, options?: SavedObjectsClientProviderOptions) => SavedObjectsClientContract; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.gettyperegistry.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.gettyperegistry.md deleted file mode 100644 index aac2f89b545d1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.gettyperegistry.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceStart](./kibana-plugin-core-server.savedobjectsservicestart.md) > [getTypeRegistry](./kibana-plugin-core-server.savedobjectsservicestart.gettyperegistry.md) - -## SavedObjectsServiceStart.getTypeRegistry property - -Returns the [registry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) containing all registered [saved object types](./kibana-plugin-core-server.savedobjectstype.md) - -Signature: - -```typescript -getTypeRegistry: () => ISavedObjectTypeRegistry; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.md deleted file mode 100644 index ae7480ab1e65b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsservicestart.md +++ /dev/null @@ -1,26 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsServiceStart](./kibana-plugin-core-server.savedobjectsservicestart.md) - -## SavedObjectsServiceStart interface - -Saved Objects is Kibana's data persisentence mechanism allowing plugins to use Elasticsearch for storing and querying state. The SavedObjectsServiceStart API provides a scoped Saved Objects client for interacting with Saved Objects. - -Signature: - -```typescript -export interface SavedObjectsServiceStart -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [createExporter](./kibana-plugin-core-server.savedobjectsservicestart.createexporter.md) | (client: SavedObjectsClientContract) => ISavedObjectsExporter | Creates an [exporter](./kibana-plugin-core-server.isavedobjectsexporter.md) bound to given client. | -| [createImporter](./kibana-plugin-core-server.savedobjectsservicestart.createimporter.md) | (client: SavedObjectsClientContract) => ISavedObjectsImporter | Creates an [importer](./kibana-plugin-core-server.isavedobjectsimporter.md) bound to given client. | -| [createInternalRepository](./kibana-plugin-core-server.savedobjectsservicestart.createinternalrepository.md) | (includedHiddenTypes?: string\[\]) => ISavedObjectsRepository | Creates a [Saved Objects repository](./kibana-plugin-core-server.isavedobjectsrepository.md) that uses the internal Kibana user for authenticating with Elasticsearch. | -| [createScopedRepository](./kibana-plugin-core-server.savedobjectsservicestart.createscopedrepository.md) | (req: KibanaRequest, includedHiddenTypes?: string\[\]) => ISavedObjectsRepository | Creates a [Saved Objects repository](./kibana-plugin-core-server.isavedobjectsrepository.md) that uses the credentials from the passed in request to authenticate with Elasticsearch. | -| [createSerializer](./kibana-plugin-core-server.savedobjectsservicestart.createserializer.md) | () => SavedObjectsSerializer | Creates a [serializer](./kibana-plugin-core-server.savedobjectsserializer.md) that is aware of all registered types. | -| [getScopedClient](./kibana-plugin-core-server.savedobjectsservicestart.getscopedclient.md) | (req: KibanaRequest, options?: SavedObjectsClientProviderOptions) => SavedObjectsClientContract | Creates a [Saved Objects client](./kibana-plugin-core-server.savedobjectsclientcontract.md) that uses the credentials from the passed in request to authenticate with Elasticsearch. If other plugins have registered Saved Objects client wrappers, these will be applied to extend the functionality of the client.A client that is already scoped to the incoming request is also exposed from the route handler context see [RequestHandlerContext](./kibana-plugin-core-server.requesthandlercontext.md). | -| [getTypeRegistry](./kibana-plugin-core-server.savedobjectsservicestart.gettyperegistry.md) | () => ISavedObjectTypeRegistry | Returns the [registry](./kibana-plugin-core-server.isavedobjecttyperegistry.md) containing all registered [saved object types](./kibana-plugin-core-server.savedobjectstype.md) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstatusmeta.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstatusmeta.md deleted file mode 100644 index 890ed36535b3f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstatusmeta.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectStatusMeta](./kibana-plugin-core-server.savedobjectstatusmeta.md) - -## SavedObjectStatusMeta interface - -Meta information about the SavedObjectService's status. Available to plugins via [CoreSetup.status](./kibana-plugin-core-server.coresetup.status.md). - -Signature: - -```typescript -export interface SavedObjectStatusMeta -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [migratedIndices](./kibana-plugin-core-server.savedobjectstatusmeta.migratedindices.md) | { \[status: string\]: number; skipped: number; migrated: number; } | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstatusmeta.migratedindices.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstatusmeta.migratedindices.md deleted file mode 100644 index 6a29623b2f122..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstatusmeta.migratedindices.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectStatusMeta](./kibana-plugin-core-server.savedobjectstatusmeta.md) > [migratedIndices](./kibana-plugin-core-server.savedobjectstatusmeta.migratedindices.md) - -## SavedObjectStatusMeta.migratedIndices property - -Signature: - -```typescript -migratedIndices: { - [status: string]: number; - skipped: number; - migrated: number; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.converttoaliasscript.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.converttoaliasscript.md deleted file mode 100644 index 296f7ba3044f6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.converttoaliasscript.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) > [convertToAliasScript](./kibana-plugin-core-server.savedobjectstype.converttoaliasscript.md) - -## SavedObjectsType.convertToAliasScript property - -If defined, will be used to convert the type to an alias. - -Signature: - -```typescript -convertToAliasScript?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.converttomultinamespacetypeversion.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.converttomultinamespacetypeversion.md deleted file mode 100644 index a3fac34153633..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.converttomultinamespacetypeversion.md +++ /dev/null @@ -1,51 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) > [convertToMultiNamespaceTypeVersion](./kibana-plugin-core-server.savedobjectstype.converttomultinamespacetypeversion.md) - -## SavedObjectsType.convertToMultiNamespaceTypeVersion property - -If defined, objects of this type will be converted to a 'multiple' or 'multiple-isolated' namespace type when migrating to this version. - -Requirements: - -1. This string value must be a valid semver version 2. This type must have previously specified [\`namespaceType: 'single'\`](./kibana-plugin-core-server.savedobjectsnamespacetype.md) 3. This type must also specify [\`namespaceType: 'multiple'\`](./kibana-plugin-core-server.savedobjectsnamespacetype.md) \*or\* [\`namespaceType: 'multiple-isolated'\`](./kibana-plugin-core-server.savedobjectsnamespacetype.md) - -Example of a single-namespace type in 7.12: - -```ts -{ - name: 'foo', - hidden: false, - namespaceType: 'single', - mappings: {...} -} -``` -Example after converting to a multi-namespace (isolated) type in 8.0: - -```ts -{ - name: 'foo', - hidden: false, - namespaceType: 'multiple-isolated', - mappings: {...}, - convertToMultiNamespaceTypeVersion: '8.0.0' -} -``` -Example after converting to a multi-namespace (shareable) type in 8.1: - -```ts -{ - name: 'foo', - hidden: false, - namespaceType: 'multiple', - mappings: {...}, - convertToMultiNamespaceTypeVersion: '8.0.0' -} -``` -Note: migration function(s) can be optionally specified for any of these versions and will not interfere with the conversion process. - -Signature: - -```typescript -convertToMultiNamespaceTypeVersion?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.excludeonupgrade.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.excludeonupgrade.md deleted file mode 100644 index f5446b37dc29c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.excludeonupgrade.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) > [excludeOnUpgrade](./kibana-plugin-core-server.savedobjectstype.excludeonupgrade.md) - -## SavedObjectsType.excludeOnUpgrade property - -If defined, allows a type to exclude unneeded documents from the migration process and effectively be deleted. See [SavedObjectTypeExcludeFromUpgradeFilterHook](./kibana-plugin-core-server.savedobjecttypeexcludefromupgradefilterhook.md) for more details. - -Signature: - -```typescript -excludeOnUpgrade?: SavedObjectTypeExcludeFromUpgradeFilterHook; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.hidden.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.hidden.md deleted file mode 100644 index d13b9177394d4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.hidden.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) > [hidden](./kibana-plugin-core-server.savedobjectstype.hidden.md) - -## SavedObjectsType.hidden property - -Is the type hidden by default. If true, repositories will not have access to this type unless explicitly declared as an `extraType` when creating the repository. - -See [createInternalRepository](./kibana-plugin-core-server.savedobjectsservicestart.createinternalrepository.md). - -Signature: - -```typescript -hidden: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.indexpattern.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.indexpattern.md deleted file mode 100644 index 8db74b9bfdec4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.indexpattern.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) > [indexPattern](./kibana-plugin-core-server.savedobjectstype.indexpattern.md) - -## SavedObjectsType.indexPattern property - -If defined, the type instances will be stored in the given index instead of the default one. - -Signature: - -```typescript -indexPattern?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.management.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.management.md deleted file mode 100644 index d98c553656b1f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.management.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) > [management](./kibana-plugin-core-server.savedobjectstype.management.md) - -## SavedObjectsType.management property - -An optional [saved objects management section](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) definition for the type. - -Signature: - -```typescript -management?: SavedObjectsTypeManagementDefinition; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.mappings.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.mappings.md deleted file mode 100644 index 066561b8c8633..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.mappings.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) > [mappings](./kibana-plugin-core-server.savedobjectstype.mappings.md) - -## SavedObjectsType.mappings property - -The [mapping definition](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md) for the type. - -Signature: - -```typescript -mappings: SavedObjectsTypeMappingDefinition; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.md deleted file mode 100644 index cd6e724685777..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.md +++ /dev/null @@ -1,58 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) - -## SavedObjectsType interface - - -Signature: - -```typescript -export interface SavedObjectsType -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [convertToAliasScript?](./kibana-plugin-core-server.savedobjectstype.converttoaliasscript.md) | string | (Optional) If defined, will be used to convert the type to an alias. | -| [convertToMultiNamespaceTypeVersion?](./kibana-plugin-core-server.savedobjectstype.converttomultinamespacetypeversion.md) | string | (Optional) If defined, objects of this type will be converted to a 'multiple' or 'multiple-isolated' namespace type when migrating to this version.Requirements:1. This string value must be a valid semver version 2. This type must have previously specified [\`namespaceType: 'single'\`](./kibana-plugin-core-server.savedobjectsnamespacetype.md) 3. This type must also specify [\`namespaceType: 'multiple'\`](./kibana-plugin-core-server.savedobjectsnamespacetype.md) \*or\* [\`namespaceType: 'multiple-isolated'\`](./kibana-plugin-core-server.savedobjectsnamespacetype.md)Example of a single-namespace type in 7.12: -```ts -{ - name: 'foo', - hidden: false, - namespaceType: 'single', - mappings: {...} -} -``` -Example after converting to a multi-namespace (isolated) type in 8.0: -```ts -{ - name: 'foo', - hidden: false, - namespaceType: 'multiple-isolated', - mappings: {...}, - convertToMultiNamespaceTypeVersion: '8.0.0' -} -``` -Example after converting to a multi-namespace (shareable) type in 8.1: -```ts -{ - name: 'foo', - hidden: false, - namespaceType: 'multiple', - mappings: {...}, - convertToMultiNamespaceTypeVersion: '8.0.0' -} -``` -Note: migration function(s) can be optionally specified for any of these versions and will not interfere with the conversion process. | -| [excludeOnUpgrade?](./kibana-plugin-core-server.savedobjectstype.excludeonupgrade.md) | SavedObjectTypeExcludeFromUpgradeFilterHook | (Optional) If defined, allows a type to exclude unneeded documents from the migration process and effectively be deleted. See [SavedObjectTypeExcludeFromUpgradeFilterHook](./kibana-plugin-core-server.savedobjecttypeexcludefromupgradefilterhook.md) for more details. | -| [hidden](./kibana-plugin-core-server.savedobjectstype.hidden.md) | boolean | Is the type hidden by default. If true, repositories will not have access to this type unless explicitly declared as an extraType when creating the repository.See [createInternalRepository](./kibana-plugin-core-server.savedobjectsservicestart.createinternalrepository.md). | -| [indexPattern?](./kibana-plugin-core-server.savedobjectstype.indexpattern.md) | string | (Optional) If defined, the type instances will be stored in the given index instead of the default one. | -| [management?](./kibana-plugin-core-server.savedobjectstype.management.md) | SavedObjectsTypeManagementDefinition<Attributes> | (Optional) An optional [saved objects management section](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) definition for the type. | -| [mappings](./kibana-plugin-core-server.savedobjectstype.mappings.md) | SavedObjectsTypeMappingDefinition | The [mapping definition](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md) for the type. | -| [migrations?](./kibana-plugin-core-server.savedobjectstype.migrations.md) | SavedObjectMigrationMap \| (() => SavedObjectMigrationMap) | (Optional) An optional map of [migrations](./kibana-plugin-core-server.savedobjectmigrationfn.md) or a function returning a map of [migrations](./kibana-plugin-core-server.savedobjectmigrationfn.md) to be used to migrate the type. | -| [name](./kibana-plugin-core-server.savedobjectstype.name.md) | string | The name of the type, which is also used as the internal id. | -| [namespaceType](./kibana-plugin-core-server.savedobjectstype.namespacetype.md) | SavedObjectsNamespaceType | The [namespace type](./kibana-plugin-core-server.savedobjectsnamespacetype.md) for the type. | -| [schemas?](./kibana-plugin-core-server.savedobjectstype.schemas.md) | SavedObjectsValidationMap \| (() => SavedObjectsValidationMap) | (Optional) An optional schema that can be used to validate the attributes of the type.When provided, calls to [create](./kibana-plugin-core-server.savedobjectsclient.create.md) will be validated against this schema.See [SavedObjectsValidationMap](./kibana-plugin-core-server.savedobjectsvalidationmap.md) for more details. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.migrations.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.migrations.md deleted file mode 100644 index 6550d48a1c26a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.migrations.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) > [migrations](./kibana-plugin-core-server.savedobjectstype.migrations.md) - -## SavedObjectsType.migrations property - -An optional map of [migrations](./kibana-plugin-core-server.savedobjectmigrationfn.md) or a function returning a map of [migrations](./kibana-plugin-core-server.savedobjectmigrationfn.md) to be used to migrate the type. - -Signature: - -```typescript -migrations?: SavedObjectMigrationMap | (() => SavedObjectMigrationMap); -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.name.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.name.md deleted file mode 100644 index 4c63500498085..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) > [name](./kibana-plugin-core-server.savedobjectstype.name.md) - -## SavedObjectsType.name property - -The name of the type, which is also used as the internal id. - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.namespacetype.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.namespacetype.md deleted file mode 100644 index 3a3b0f7f3a9a5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.namespacetype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) > [namespaceType](./kibana-plugin-core-server.savedobjectstype.namespacetype.md) - -## SavedObjectsType.namespaceType property - -The [namespace type](./kibana-plugin-core-server.savedobjectsnamespacetype.md) for the type. - -Signature: - -```typescript -namespaceType: SavedObjectsNamespaceType; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.schemas.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.schemas.md deleted file mode 100644 index 466d8e361f995..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstype.schemas.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md) > [schemas](./kibana-plugin-core-server.savedobjectstype.schemas.md) - -## SavedObjectsType.schemas property - -An optional schema that can be used to validate the attributes of the type. - -When provided, calls to [create](./kibana-plugin-core-server.savedobjectsclient.create.md) will be validated against this schema. - -See [SavedObjectsValidationMap](./kibana-plugin-core-server.savedobjectsvalidationmap.md) for more details. - -Signature: - -```typescript -schemas?: SavedObjectsValidationMap | (() => SavedObjectsValidationMap); -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.defaultsearchfield.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.defaultsearchfield.md deleted file mode 100644 index d922a8daaac93..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.defaultsearchfield.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) > [defaultSearchField](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.defaultsearchfield.md) - -## SavedObjectsTypeManagementDefinition.defaultSearchField property - -The default search field to use for this type. Defaults to `id`. - -Signature: - -```typescript -defaultSearchField?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.displayname.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.displayname.md deleted file mode 100644 index 71325318a68e6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.displayname.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) > [displayName](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.displayname.md) - -## SavedObjectsTypeManagementDefinition.displayName property - -When specified, will be used instead of the type's name in SO management section's labels. - -Signature: - -```typescript -displayName?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.getediturl.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.getediturl.md deleted file mode 100644 index 75f820d7a8e56..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.getediturl.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) > [getEditUrl](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.getediturl.md) - -## SavedObjectsTypeManagementDefinition.getEditUrl property - -Function returning the url to use to redirect to the editing page of this object. If not defined, editing will not be allowed. - -Signature: - -```typescript -getEditUrl?: (savedObject: SavedObject) => string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.getinappurl.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.getinappurl.md deleted file mode 100644 index d6d50840aaadb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.getinappurl.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) > [getInAppUrl](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.getinappurl.md) - -## SavedObjectsTypeManagementDefinition.getInAppUrl property - -Function returning the url to use to redirect to this object from the management section. If not defined, redirecting to the object will not be allowed. - -Signature: - -```typescript -getInAppUrl?: (savedObject: SavedObject) => { - path: string; - uiCapabilitiesPath: string; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.gettitle.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.gettitle.md deleted file mode 100644 index 75784666ef963..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.gettitle.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) > [getTitle](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.gettitle.md) - -## SavedObjectsTypeManagementDefinition.getTitle property - -Function returning the title to display in the management table. If not defined, will use the object's type and id to generate a label. - -Signature: - -```typescript -getTitle?: (savedObject: SavedObject) => string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.icon.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.icon.md deleted file mode 100644 index d4bbea50b5692..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.icon.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) > [icon](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.icon.md) - -## SavedObjectsTypeManagementDefinition.icon property - -The eui icon name to display in the management table. If not defined, the default icon will be used. - -Signature: - -```typescript -icon?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.importableandexportable.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.importableandexportable.md deleted file mode 100644 index 9300f830e105b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.importableandexportable.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) > [importableAndExportable](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.importableandexportable.md) - -## SavedObjectsTypeManagementDefinition.importableAndExportable property - -Is the type importable or exportable. Defaults to `false`. - -Signature: - -```typescript -importableAndExportable?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.isexportable.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.isexportable.md deleted file mode 100644 index c6dff60610990..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.isexportable.md +++ /dev/null @@ -1,48 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) > [isExportable](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.isexportable.md) - -## SavedObjectsTypeManagementDefinition.isExportable property - -Optional hook to specify whether an object should be exportable. - -If specified, `isExportable` will be called during export for each of this type's objects in the export, and the ones not matching the predicate will be excluded from the export. - -When implementing both `isExportable` and `onExport`, it is mandatory that `isExportable` returns the same value for an object before and after going though the export transform. E.g `isExportable(objectBeforeTransform) === isExportable(objectAfterTransform)` - -Signature: - -```typescript -isExportable?: SavedObjectsExportablePredicate; -``` - -## Remarks - -`importableAndExportable` must be `true` to specify this property. - -## Example - -Registering a type with a per-object exportability predicate - -```ts -// src/plugins/my_plugin/server/plugin.ts -import { myType } from './saved_objects'; - -export class Plugin() { - setup: (core: CoreSetup) => { - core.savedObjects.registerType({ - ...myType, - management: { - ...myType.management, - isExportable: (object) => { - if (object.attributes.myCustomAttr === 'foo') { - return false; - } - return true; - } - }, - }); - } -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.md deleted file mode 100644 index eeda40cd59664..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) - -## SavedObjectsTypeManagementDefinition interface - -Configuration options for the [type](./kibana-plugin-core-server.savedobjectstype.md)'s management section. - -Signature: - -```typescript -export interface SavedObjectsTypeManagementDefinition -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [defaultSearchField?](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.defaultsearchfield.md) | string | (Optional) The default search field to use for this type. Defaults to id. | -| [displayName?](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.displayname.md) | string | (Optional) When specified, will be used instead of the type's name in SO management section's labels. | -| [getEditUrl?](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.getediturl.md) | (savedObject: SavedObject<Attributes>) => string | (Optional) Function returning the url to use to redirect to the editing page of this object. If not defined, editing will not be allowed. | -| [getInAppUrl?](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.getinappurl.md) | (savedObject: SavedObject<Attributes>) => { path: string; uiCapabilitiesPath: string; } | (Optional) Function returning the url to use to redirect to this object from the management section. If not defined, redirecting to the object will not be allowed. | -| [getTitle?](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.gettitle.md) | (savedObject: SavedObject<Attributes>) => string | (Optional) Function returning the title to display in the management table. If not defined, will use the object's type and id to generate a label. | -| [icon?](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.icon.md) | string | (Optional) The eui icon name to display in the management table. If not defined, the default icon will be used. | -| [importableAndExportable?](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.importableandexportable.md) | boolean | (Optional) Is the type importable or exportable. Defaults to false. | -| [isExportable?](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.isexportable.md) | SavedObjectsExportablePredicate<Attributes> | (Optional) Optional hook to specify whether an object should be exportable.If specified, isExportable will be called during export for each of this type's objects in the export, and the ones not matching the predicate will be excluded from the export.When implementing both isExportable and onExport, it is mandatory that isExportable returns the same value for an object before and after going though the export transform. E.g isExportable(objectBeforeTransform) === isExportable(objectAfterTransform) | -| [onExport?](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.onexport.md) | SavedObjectsExportTransform<Attributes> | (Optional) An optional export transform function that can be used transform the objects of the registered type during the export process.It can be used to either mutate the exported objects, or add additional objects (of any type) to the export list.See [the transform type documentation](./kibana-plugin-core-server.savedobjectsexporttransform.md) for more info and examples.When implementing both isExportable and onExport, it is mandatory that isExportable returns the same value for an object before and after going though the export transform. E.g isExportable(objectBeforeTransform) === isExportable(objectAfterTransform) | -| [onImport?](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.onimport.md) | SavedObjectsImportHook<Attributes> | (Optional) An optional [import hook](./kibana-plugin-core-server.savedobjectsimporthook.md) to use when importing given type.Import hooks are executed during the savedObjects import process and allow to interact with the imported objects. See the [hook documentation](./kibana-plugin-core-server.savedobjectsimporthook.md) for more info. | -| [visibleInManagement?](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.visibleinmanagement.md) | boolean | (Optional) When set to false, the type will not be listed or searchable in the SO management section. Main usage of setting this property to false for a type is when objects from the type should be included in the export via references or export hooks, but should not directly appear in the SOM. Defaults to true. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.onexport.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.onexport.md deleted file mode 100644 index a0d41d2d64967..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.onexport.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) > [onExport](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.onexport.md) - -## SavedObjectsTypeManagementDefinition.onExport property - -An optional export transform function that can be used transform the objects of the registered type during the export process. - -It can be used to either mutate the exported objects, or add additional objects (of any type) to the export list. - -See [the transform type documentation](./kibana-plugin-core-server.savedobjectsexporttransform.md) for more info and examples. - -When implementing both `isExportable` and `onExport`, it is mandatory that `isExportable` returns the same value for an object before and after going though the export transform. E.g `isExportable(objectBeforeTransform) === isExportable(objectAfterTransform)` - -Signature: - -```typescript -onExport?: SavedObjectsExportTransform; -``` - -## Remarks - -`importableAndExportable` must be `true` to specify this property. - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.onimport.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.onimport.md deleted file mode 100644 index c54570d79a7e2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.onimport.md +++ /dev/null @@ -1,54 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) > [onImport](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.onimport.md) - -## SavedObjectsTypeManagementDefinition.onImport property - -An optional [import hook](./kibana-plugin-core-server.savedobjectsimporthook.md) to use when importing given type. - -Import hooks are executed during the savedObjects import process and allow to interact with the imported objects. See the [hook documentation](./kibana-plugin-core-server.savedobjectsimporthook.md) for more info. - -Signature: - -```typescript -onImport?: SavedObjectsImportHook; -``` - -## Remarks - -`importableAndExportable` must be `true` to specify this property. - -## Example - -Registering a hook displaying a warning about a specific type of object - -```ts -// src/plugins/my_plugin/server/plugin.ts -import { myType } from './saved_objects'; - -export class Plugin() { - setup: (core: CoreSetup) => { - core.savedObjects.registerType({ - ...myType, - management: { - ...myType.management, - onImport: (objects) => { - if(someActionIsNeeded(objects)) { - return { - warnings: [ - { - type: 'action_required', - message: 'Objects need to be manually enabled after import', - actionPath: '/app/my-app/require-activation', - }, - ] - } - } - return {}; - } - }, - }); - } -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.visibleinmanagement.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.visibleinmanagement.md deleted file mode 100644 index 33ddc8e8c8307..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemanagementdefinition.visibleinmanagement.md +++ /dev/null @@ -1,18 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeManagementDefinition](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.md) > [visibleInManagement](./kibana-plugin-core-server.savedobjectstypemanagementdefinition.visibleinmanagement.md) - -## SavedObjectsTypeManagementDefinition.visibleInManagement property - -When set to false, the type will not be listed or searchable in the SO management section. Main usage of setting this property to false for a type is when objects from the type should be included in the export via references or export hooks, but should not directly appear in the SOM. Defaults to `true`. - -Signature: - -```typescript -visibleInManagement?: boolean; -``` - -## Remarks - -`importableAndExportable` must be `true` to specify this property. - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.dynamic.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.dynamic.md deleted file mode 100644 index 70775760ac77d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.dynamic.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeMappingDefinition](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md) > [dynamic](./kibana-plugin-core-server.savedobjectstypemappingdefinition.dynamic.md) - -## SavedObjectsTypeMappingDefinition.dynamic property - -The dynamic property of the mapping, either `false` or `'strict'`. If unspecified `dynamic: 'strict'` will be inherited from the top-level index mappings. - -Signature: - -```typescript -dynamic?: false | 'strict'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.md deleted file mode 100644 index 7f4c82c23e2ca..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.md +++ /dev/null @@ -1,45 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeMappingDefinition](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md) - -## SavedObjectsTypeMappingDefinition interface - -Describe a saved object type mapping. - -Signature: - -```typescript -export interface SavedObjectsTypeMappingDefinition -``` - -## Example - - -```ts -const typeDefinition: SavedObjectsTypeMappingDefinition = { - properties: { - enabled: { - type: "boolean" - }, - sendUsageFrom: { - ignore_above: 256, - type: "keyword" - }, - lastReported: { - type: "date" - }, - lastVersionChecked: { - ignore_above: 256, - type: "keyword" - }, - } -} -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [dynamic?](./kibana-plugin-core-server.savedobjectstypemappingdefinition.dynamic.md) | false \| 'strict' | (Optional) The dynamic property of the mapping, either false or 'strict'. If unspecified dynamic: 'strict' will be inherited from the top-level index mappings. | -| [properties](./kibana-plugin-core-server.savedobjectstypemappingdefinition.properties.md) | SavedObjectsMappingProperties | The underlying properties of the type mapping | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.properties.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.properties.md deleted file mode 100644 index 6ccf2e2c90d0b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectstypemappingdefinition.properties.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsTypeMappingDefinition](./kibana-plugin-core-server.savedobjectstypemappingdefinition.md) > [properties](./kibana-plugin-core-server.savedobjectstypemappingdefinition.properties.md) - -## SavedObjectsTypeMappingDefinition.properties property - -The underlying properties of the type mapping - -Signature: - -```typescript -properties: SavedObjectsMappingProperties; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md deleted file mode 100644 index dac110ac4f475..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md) > [id](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md) - -## SavedObjectsUpdateObjectsSpacesObject.id property - -The type of the object to update - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md deleted file mode 100644 index 6fa04623c96a6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md) - -## SavedObjectsUpdateObjectsSpacesObject interface - -An object that should have its spaces updated. - -Signature: - -```typescript -export interface SavedObjectsUpdateObjectsSpacesObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [id](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.id.md) | string | The type of the object to update | -| [type](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md) | string | The ID of the object to update | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md deleted file mode 100644 index 2e54d1636c5e9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.md) > [type](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesobject.type.md) - -## SavedObjectsUpdateObjectsSpacesObject.type property - -The ID of the object to update - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md deleted file mode 100644 index b8f17699b1841..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesOptions](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md) - -## SavedObjectsUpdateObjectsSpacesOptions interface - -Options for the update operation. - -Signature: - -```typescript -export interface SavedObjectsUpdateObjectsSpacesOptions extends SavedObjectsBaseOptions -``` -Extends: SavedObjectsBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [refresh?](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md) | MutatingOperationRefreshSetting | (Optional) The Elasticsearch Refresh setting for this operation | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md deleted file mode 100644 index 3d210f6ac51c7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesOptions](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesoptions.refresh.md) - -## SavedObjectsUpdateObjectsSpacesOptions.refresh property - -The Elasticsearch Refresh setting for this operation - -Signature: - -```typescript -refresh?: MutatingOperationRefreshSetting; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md deleted file mode 100644 index aff67e0c54e66..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponse](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md) - -## SavedObjectsUpdateObjectsSpacesResponse interface - -The response when objects' spaces are updated. - -Signature: - -```typescript -export interface SavedObjectsUpdateObjectsSpacesResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [objects](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md) | SavedObjectsUpdateObjectsSpacesResponseObject\[\] | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md deleted file mode 100644 index 13328e2aed094..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponse](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.md) > [objects](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponse.objects.md) - -## SavedObjectsUpdateObjectsSpacesResponse.objects property - -Signature: - -```typescript -objects: SavedObjectsUpdateObjectsSpacesResponseObject[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md deleted file mode 100644 index 7d7ac4ada884d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) > [error](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md) - -## SavedObjectsUpdateObjectsSpacesResponseObject.error property - -Included if there was an error updating this object's spaces - -Signature: - -```typescript -error?: SavedObjectError; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md deleted file mode 100644 index 28a81ee5dfd6a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) > [id](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md) - -## SavedObjectsUpdateObjectsSpacesResponseObject.id property - -The ID of the referenced object - -Signature: - -```typescript -id: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md deleted file mode 100644 index 5078473e9e6bd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md +++ /dev/null @@ -1,23 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) - -## SavedObjectsUpdateObjectsSpacesResponseObject interface - -Details about a specific object's update result. - -Signature: - -```typescript -export interface SavedObjectsUpdateObjectsSpacesResponseObject -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [error?](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.error.md) | SavedObjectError | (Optional) Included if there was an error updating this object's spaces | -| [id](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.id.md) | string | The ID of the referenced object | -| [spaces](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md) | string\[\] | The space(s) that the referenced object exists in | -| [type](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md) | string | The type of the referenced object | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md deleted file mode 100644 index 52b1ca187925c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) > [spaces](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.spaces.md) - -## SavedObjectsUpdateObjectsSpacesResponseObject.spaces property - -The space(s) that the referenced object exists in - -Signature: - -```typescript -spaces: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md deleted file mode 100644 index da0bbb1088507..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateObjectsSpacesResponseObject](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.md) > [type](./kibana-plugin-core-server.savedobjectsupdateobjectsspacesresponseobject.type.md) - -## SavedObjectsUpdateObjectsSpacesResponseObject.type property - -The type of the referenced object - -Signature: - -```typescript -type: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.md deleted file mode 100644 index 7044f3007c382..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateOptions](./kibana-plugin-core-server.savedobjectsupdateoptions.md) - -## SavedObjectsUpdateOptions interface - - -Signature: - -```typescript -export interface SavedObjectsUpdateOptions extends SavedObjectsBaseOptions -``` -Extends: SavedObjectsBaseOptions - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [references?](./kibana-plugin-core-server.savedobjectsupdateoptions.references.md) | SavedObjectReference\[\] | (Optional) A reference to another saved object. | -| [refresh?](./kibana-plugin-core-server.savedobjectsupdateoptions.refresh.md) | MutatingOperationRefreshSetting | (Optional) The Elasticsearch Refresh setting for this operation | -| [retryOnConflict?](./kibana-plugin-core-server.savedobjectsupdateoptions.retryonconflict.md) | number | (Optional) The Elasticsearch retry_on_conflict setting for this operation. Defaults to 0 when version is provided, 3 otherwise. | -| [upsert?](./kibana-plugin-core-server.savedobjectsupdateoptions.upsert.md) | Attributes | (Optional) If specified, will be used to perform an upsert if the document doesn't exist | -| [version?](./kibana-plugin-core-server.savedobjectsupdateoptions.version.md) | string | (Optional) An opaque version number which changes on each successful write operation. Can be used for implementing optimistic concurrency control. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.references.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.references.md deleted file mode 100644 index 2cea0a7bdf0da..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.references.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateOptions](./kibana-plugin-core-server.savedobjectsupdateoptions.md) > [references](./kibana-plugin-core-server.savedobjectsupdateoptions.references.md) - -## SavedObjectsUpdateOptions.references property - -A reference to another saved object. - -Signature: - -```typescript -references?: SavedObjectReference[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.refresh.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.refresh.md deleted file mode 100644 index 16ad763df46d2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.refresh.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateOptions](./kibana-plugin-core-server.savedobjectsupdateoptions.md) > [refresh](./kibana-plugin-core-server.savedobjectsupdateoptions.refresh.md) - -## SavedObjectsUpdateOptions.refresh property - -The Elasticsearch Refresh setting for this operation - -Signature: - -```typescript -refresh?: MutatingOperationRefreshSetting; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.retryonconflict.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.retryonconflict.md deleted file mode 100644 index 2fc54d0fb41ff..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.retryonconflict.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateOptions](./kibana-plugin-core-server.savedobjectsupdateoptions.md) > [retryOnConflict](./kibana-plugin-core-server.savedobjectsupdateoptions.retryonconflict.md) - -## SavedObjectsUpdateOptions.retryOnConflict property - -The Elasticsearch `retry_on_conflict` setting for this operation. Defaults to `0` when `version` is provided, `3` otherwise. - -Signature: - -```typescript -retryOnConflict?: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.upsert.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.upsert.md deleted file mode 100644 index 53b769afd0938..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.upsert.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateOptions](./kibana-plugin-core-server.savedobjectsupdateoptions.md) > [upsert](./kibana-plugin-core-server.savedobjectsupdateoptions.upsert.md) - -## SavedObjectsUpdateOptions.upsert property - -If specified, will be used to perform an upsert if the document doesn't exist - -Signature: - -```typescript -upsert?: Attributes; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.version.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.version.md deleted file mode 100644 index b92e517509c5c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateoptions.version.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateOptions](./kibana-plugin-core-server.savedobjectsupdateoptions.md) > [version](./kibana-plugin-core-server.savedobjectsupdateoptions.version.md) - -## SavedObjectsUpdateOptions.version property - -An opaque version number which changes on each successful write operation. Can be used for implementing optimistic concurrency control. - -Signature: - -```typescript -version?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.attributes.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.attributes.md deleted file mode 100644 index df80e7ec56803..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.attributes.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateResponse](./kibana-plugin-core-server.savedobjectsupdateresponse.md) > [attributes](./kibana-plugin-core-server.savedobjectsupdateresponse.attributes.md) - -## SavedObjectsUpdateResponse.attributes property - -Signature: - -```typescript -attributes: Partial; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.md deleted file mode 100644 index 5c773d92c6364..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateResponse](./kibana-plugin-core-server.savedobjectsupdateresponse.md) - -## SavedObjectsUpdateResponse interface - - -Signature: - -```typescript -export interface SavedObjectsUpdateResponse extends Omit, 'attributes' | 'references'> -``` -Extends: Omit<SavedObject<T>, 'attributes' \| 'references'> - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [attributes](./kibana-plugin-core-server.savedobjectsupdateresponse.attributes.md) | Partial<T> | | -| [references](./kibana-plugin-core-server.savedobjectsupdateresponse.references.md) | SavedObjectReference\[\] \| undefined | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.references.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.references.md deleted file mode 100644 index 262a4733e7beb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsupdateresponse.references.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUpdateResponse](./kibana-plugin-core-server.savedobjectsupdateresponse.md) > [references](./kibana-plugin-core-server.savedobjectsupdateresponse.references.md) - -## SavedObjectsUpdateResponse.references property - -Signature: - -```typescript -references: SavedObjectReference[] | undefined; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.createemptyfindresponse.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.createemptyfindresponse.md deleted file mode 100644 index 23cbebf22aa21..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.createemptyfindresponse.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUtils](./kibana-plugin-core-server.savedobjectsutils.md) > [createEmptyFindResponse](./kibana-plugin-core-server.savedobjectsutils.createemptyfindresponse.md) - -## SavedObjectsUtils.createEmptyFindResponse property - -Creates an empty response for a find operation. This is only intended to be used by saved objects client wrappers. - -Signature: - -```typescript -static createEmptyFindResponse: ({ page, perPage, }: SavedObjectsFindOptions) => SavedObjectsFindResponse; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.generateid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.generateid.md deleted file mode 100644 index 887f2fb5d9fe1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.generateid.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUtils](./kibana-plugin-core-server.savedobjectsutils.md) > [generateId](./kibana-plugin-core-server.savedobjectsutils.generateid.md) - -## SavedObjectsUtils.generateId() method - -Generates a random ID for a saved objects. - -Signature: - -```typescript -static generateId(): string; -``` -Returns: - -string - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.getconvertedobjectid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.getconvertedobjectid.md deleted file mode 100644 index 502d9dcab8cf7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.getconvertedobjectid.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUtils](./kibana-plugin-core-server.savedobjectsutils.md) > [getConvertedObjectId](./kibana-plugin-core-server.savedobjectsutils.getconvertedobjectid.md) - -## SavedObjectsUtils.getConvertedObjectId() method - -Uses a single-namespace object's "legacy ID" to determine what its new ID will be after it is converted to a multi-namespace type. - -Signature: - -```typescript -static getConvertedObjectId(namespace: string | undefined, type: string, id: string): string; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| namespace | string \| undefined | The namespace of the saved object before it is converted. | -| type | string | The type of the saved object before it is converted. | -| id | string | The ID of the saved object before it is converted. | - -Returns: - -string - -{string} The ID of the saved object after it is converted. - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.israndomid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.israndomid.md deleted file mode 100644 index 75db00c449654..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.israndomid.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUtils](./kibana-plugin-core-server.savedobjectsutils.md) > [isRandomId](./kibana-plugin-core-server.savedobjectsutils.israndomid.md) - -## SavedObjectsUtils.isRandomId() method - -Validates that a saved object ID has been randomly generated. - -Signature: - -```typescript -static isRandomId(id: string | undefined): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| id | string \| undefined | The ID of a saved object. Use uuid.validate once upgraded to v5.3+ | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.md deleted file mode 100644 index 9a8c5cf9889b2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.md +++ /dev/null @@ -1,29 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUtils](./kibana-plugin-core-server.savedobjectsutils.md) - -## SavedObjectsUtils class - - -Signature: - -```typescript -export declare class SavedObjectsUtils -``` - -## Properties - -| Property | Modifiers | Type | Description | -| --- | --- | --- | --- | -| [createEmptyFindResponse](./kibana-plugin-core-server.savedobjectsutils.createemptyfindresponse.md) | static | <T, A>({ page, perPage, }: SavedObjectsFindOptions) => SavedObjectsFindResponse<T, A> | Creates an empty response for a find operation. This is only intended to be used by saved objects client wrappers. | -| [namespaceIdToString](./kibana-plugin-core-server.savedobjectsutils.namespaceidtostring.md) | static | (namespace?: string \| undefined) => string | Converts a given saved object namespace ID to its string representation. All namespace IDs have an identical string representation, with the exception of the undefined namespace ID (which has a namespace string of 'default'). | -| [namespaceStringToId](./kibana-plugin-core-server.savedobjectsutils.namespacestringtoid.md) | static | (namespace: string) => string \| undefined | Converts a given saved object namespace string to its ID representation. All namespace strings have an identical ID representation, with the exception of the 'default' namespace string (which has a namespace ID of undefined). | - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [generateId()](./kibana-plugin-core-server.savedobjectsutils.generateid.md) | static | Generates a random ID for a saved objects. | -| [getConvertedObjectId(namespace, type, id)](./kibana-plugin-core-server.savedobjectsutils.getconvertedobjectid.md) | static | Uses a single-namespace object's "legacy ID" to determine what its new ID will be after it is converted to a multi-namespace type. | -| [isRandomId(id)](./kibana-plugin-core-server.savedobjectsutils.israndomid.md) | static | Validates that a saved object ID has been randomly generated. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.namespaceidtostring.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.namespaceidtostring.md deleted file mode 100644 index 591505892e64f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.namespaceidtostring.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUtils](./kibana-plugin-core-server.savedobjectsutils.md) > [namespaceIdToString](./kibana-plugin-core-server.savedobjectsutils.namespaceidtostring.md) - -## SavedObjectsUtils.namespaceIdToString property - -Converts a given saved object namespace ID to its string representation. All namespace IDs have an identical string representation, with the exception of the `undefined` namespace ID (which has a namespace string of `'default'`). - -Signature: - -```typescript -static namespaceIdToString: (namespace?: string | undefined) => string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.namespacestringtoid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.namespacestringtoid.md deleted file mode 100644 index e052fe493b5ea..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsutils.namespacestringtoid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsUtils](./kibana-plugin-core-server.savedobjectsutils.md) > [namespaceStringToId](./kibana-plugin-core-server.savedobjectsutils.namespacestringtoid.md) - -## SavedObjectsUtils.namespaceStringToId property - -Converts a given saved object namespace string to its ID representation. All namespace strings have an identical ID representation, with the exception of the `'default'` namespace string (which has a namespace ID of `undefined`). - -Signature: - -```typescript -static namespaceStringToId: (namespace: string) => string | undefined; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsvalidationmap.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsvalidationmap.md deleted file mode 100644 index 3716db5c3d9ac..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsvalidationmap.md +++ /dev/null @@ -1,37 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsValidationMap](./kibana-plugin-core-server.savedobjectsvalidationmap.md) - -## SavedObjectsValidationMap interface - -A map of [validation specs](./kibana-plugin-core-server.savedobjectsvalidationspec.md) to be used for a given type. The map's keys must be valid semver versions. - -Any time you change the schema of a [SavedObjectsType](./kibana-plugin-core-server.savedobjectstype.md), you should add a new entry to this map for the Kibana version the change was introduced in. - -Signature: - -```typescript -export interface SavedObjectsValidationMap -``` - -## Example - - -```typescript -const validationMap: SavedObjectsValidationMap = { - '1.0.0': schema.object({ - foo: schema.string(), - }), - '2.0.0': schema.object({ - foo: schema.string({ - minLength: 2, - validate(value) { - if (!/^[a-z]+$/.test(value)) { - return 'must be lowercase letters only'; - } - } - }), - }), -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectsvalidationspec.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectsvalidationspec.md deleted file mode 100644 index 55938fb4b4b6c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectsvalidationspec.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectsValidationSpec](./kibana-plugin-core-server.savedobjectsvalidationspec.md) - -## SavedObjectsValidationSpec type - -Allows for validating properties using @kbn/config-schema validations. - -Signature: - -```typescript -export declare type SavedObjectsValidationSpec = ObjectType; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttypeexcludefromupgradefilterhook.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttypeexcludefromupgradefilterhook.md deleted file mode 100644 index bd1c43529895c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttypeexcludefromupgradefilterhook.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeExcludeFromUpgradeFilterHook](./kibana-plugin-core-server.savedobjecttypeexcludefromupgradefilterhook.md) - -## SavedObjectTypeExcludeFromUpgradeFilterHook type - -If defined, allows a type to run a search query and return a query filter that may match any documents which may be excluded from the next migration upgrade process. Useful for cleaning up large numbers of old documents which are no longer needed and may slow the migration process. - -If this hook fails, the migration will proceed without these documents having been filtered out, so this should not be used as a guarantee that these documents have been deleted. - -Experimental and subject to change - -Signature: - -```typescript -export declare type SavedObjectTypeExcludeFromUpgradeFilterHook = (toolkit: { - readonlyEsClient: Pick; -}) => estypes.QueryDslQueryContainer | Promise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getalltypes.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getalltypes.md deleted file mode 100644 index 7e4733f892955..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getalltypes.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [getAllTypes](./kibana-plugin-core-server.savedobjecttyperegistry.getalltypes.md) - -## SavedObjectTypeRegistry.getAllTypes() method - -Return all [types](./kibana-plugin-core-server.savedobjectstype.md) currently registered, including the hidden ones. - -To only get the visible types (which is the most common use case), use `getVisibleTypes` instead. - -Signature: - -```typescript -getAllTypes(): SavedObjectsType[]; -``` -Returns: - -SavedObjectsType<any>\[\] - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getimportableandexportabletypes.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getimportableandexportabletypes.md deleted file mode 100644 index a20360128406a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getimportableandexportabletypes.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [getImportableAndExportableTypes](./kibana-plugin-core-server.savedobjecttyperegistry.getimportableandexportabletypes.md) - -## SavedObjectTypeRegistry.getImportableAndExportableTypes() method - -Return all [types](./kibana-plugin-core-server.savedobjectstype.md) currently registered that are importable/exportable. - -Signature: - -```typescript -getImportableAndExportableTypes(): SavedObjectsType[]; -``` -Returns: - -SavedObjectsType<any>\[\] - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getindex.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getindex.md deleted file mode 100644 index 9da28c7f01278..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getindex.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [getIndex](./kibana-plugin-core-server.savedobjecttyperegistry.getindex.md) - -## SavedObjectTypeRegistry.getIndex() method - -Returns the `indexPattern` property for given type, or `undefined` if the type is not registered. - -Signature: - -```typescript -getIndex(type: string): string | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -string \| undefined - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.gettype.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.gettype.md deleted file mode 100644 index d6fc255958c8c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.gettype.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [getType](./kibana-plugin-core-server.savedobjecttyperegistry.gettype.md) - -## SavedObjectTypeRegistry.getType() method - -Return the [type](./kibana-plugin-core-server.savedobjectstype.md) definition for given type name. - -Signature: - -```typescript -getType(type: string): SavedObjectsType | undefined; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -SavedObjectsType<any> \| undefined - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getvisibletypes.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getvisibletypes.md deleted file mode 100644 index 9588e77e646fc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.getvisibletypes.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [getVisibleTypes](./kibana-plugin-core-server.savedobjecttyperegistry.getvisibletypes.md) - -## SavedObjectTypeRegistry.getVisibleTypes() method - -Returns all visible [types](./kibana-plugin-core-server.savedobjectstype.md). - -A visible type is a type that doesn't explicitly define `hidden=true` during registration. - -Signature: - -```typescript -getVisibleTypes(): SavedObjectsType[]; -``` -Returns: - -SavedObjectsType<any>\[\] - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.ishidden.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.ishidden.md deleted file mode 100644 index 2d29e753218d7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.ishidden.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [isHidden](./kibana-plugin-core-server.savedobjecttyperegistry.ishidden.md) - -## SavedObjectTypeRegistry.isHidden() method - -Returns the `hidden` property for given type, or `false` if the type is not registered. - -Signature: - -```typescript -isHidden(type: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isimportableandexportable.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isimportableandexportable.md deleted file mode 100644 index 8487af6a58911..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isimportableandexportable.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [isImportableAndExportable](./kibana-plugin-core-server.savedobjecttyperegistry.isimportableandexportable.md) - -## SavedObjectTypeRegistry.isImportableAndExportable() method - -Returns the `management.importableAndExportable` property for given type, or `false` if the type is not registered or does not define a management section. - -Signature: - -```typescript -isImportableAndExportable(type: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.ismultinamespace.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.ismultinamespace.md deleted file mode 100644 index d4ec6de2392dd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.ismultinamespace.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [isMultiNamespace](./kibana-plugin-core-server.savedobjecttyperegistry.ismultinamespace.md) - -## SavedObjectTypeRegistry.isMultiNamespace() method - -Returns whether the type is multi-namespace (shareable \*or\* isolated); resolves to `false` if the type is not registered - -Signature: - -```typescript -isMultiNamespace(type: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isnamespaceagnostic.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isnamespaceagnostic.md deleted file mode 100644 index d6eca4981f7ab..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isnamespaceagnostic.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [isNamespaceAgnostic](./kibana-plugin-core-server.savedobjecttyperegistry.isnamespaceagnostic.md) - -## SavedObjectTypeRegistry.isNamespaceAgnostic() method - -Returns whether the type is namespace-agnostic (global); resolves to `false` if the type is not registered - -Signature: - -```typescript -isNamespaceAgnostic(type: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isshareable.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isshareable.md deleted file mode 100644 index 0b67992e53080..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.isshareable.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [isShareable](./kibana-plugin-core-server.savedobjecttyperegistry.isshareable.md) - -## SavedObjectTypeRegistry.isShareable() method - -Returns whether the type is multi-namespace (shareable); resolves to `false` if the type is not registered - -Signature: - -```typescript -isShareable(type: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.issinglenamespace.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.issinglenamespace.md deleted file mode 100644 index d1db00d0c8162..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.issinglenamespace.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [isSingleNamespace](./kibana-plugin-core-server.savedobjecttyperegistry.issinglenamespace.md) - -## SavedObjectTypeRegistry.isSingleNamespace() method - -Returns whether the type is single-namespace (isolated); resolves to `true` if the type is not registered - -Signature: - -```typescript -isSingleNamespace(type: string): boolean; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | string | | - -Returns: - -boolean - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.md deleted file mode 100644 index 0f2de8c8ef9b3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.md +++ /dev/null @@ -1,31 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) - -## SavedObjectTypeRegistry class - -Registry holding information about all the registered [saved object types](./kibana-plugin-core-server.savedobjectstype.md). - -Signature: - -```typescript -export declare class SavedObjectTypeRegistry -``` - -## Methods - -| Method | Modifiers | Description | -| --- | --- | --- | -| [getAllTypes()](./kibana-plugin-core-server.savedobjecttyperegistry.getalltypes.md) | | Return all [types](./kibana-plugin-core-server.savedobjectstype.md) currently registered, including the hidden ones.To only get the visible types (which is the most common use case), use getVisibleTypes instead. | -| [getImportableAndExportableTypes()](./kibana-plugin-core-server.savedobjecttyperegistry.getimportableandexportabletypes.md) | | Return all [types](./kibana-plugin-core-server.savedobjectstype.md) currently registered that are importable/exportable. | -| [getIndex(type)](./kibana-plugin-core-server.savedobjecttyperegistry.getindex.md) | | Returns the indexPattern property for given type, or undefined if the type is not registered. | -| [getType(type)](./kibana-plugin-core-server.savedobjecttyperegistry.gettype.md) | | Return the [type](./kibana-plugin-core-server.savedobjectstype.md) definition for given type name. | -| [getVisibleTypes()](./kibana-plugin-core-server.savedobjecttyperegistry.getvisibletypes.md) | | Returns all visible [types](./kibana-plugin-core-server.savedobjectstype.md).A visible type is a type that doesn't explicitly define hidden=true during registration. | -| [isHidden(type)](./kibana-plugin-core-server.savedobjecttyperegistry.ishidden.md) | | Returns the hidden property for given type, or false if the type is not registered. | -| [isImportableAndExportable(type)](./kibana-plugin-core-server.savedobjecttyperegistry.isimportableandexportable.md) | | Returns the management.importableAndExportable property for given type, or false if the type is not registered or does not define a management section. | -| [isMultiNamespace(type)](./kibana-plugin-core-server.savedobjecttyperegistry.ismultinamespace.md) | | Returns whether the type is multi-namespace (shareable \*or\* isolated); resolves to false if the type is not registered | -| [isNamespaceAgnostic(type)](./kibana-plugin-core-server.savedobjecttyperegistry.isnamespaceagnostic.md) | | Returns whether the type is namespace-agnostic (global); resolves to false if the type is not registered | -| [isShareable(type)](./kibana-plugin-core-server.savedobjecttyperegistry.isshareable.md) | | Returns whether the type is multi-namespace (shareable); resolves to false if the type is not registered | -| [isSingleNamespace(type)](./kibana-plugin-core-server.savedobjecttyperegistry.issinglenamespace.md) | | Returns whether the type is single-namespace (isolated); resolves to true if the type is not registered | -| [registerType(type)](./kibana-plugin-core-server.savedobjecttyperegistry.registertype.md) | | Register a [type](./kibana-plugin-core-server.savedobjectstype.md) inside the registry. A type can only be registered once. subsequent calls with the same type name will throw an error. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.registertype.md b/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.registertype.md deleted file mode 100644 index c0442e2aaa4ce..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjecttyperegistry.registertype.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectTypeRegistry](./kibana-plugin-core-server.savedobjecttyperegistry.md) > [registerType](./kibana-plugin-core-server.savedobjecttyperegistry.registertype.md) - -## SavedObjectTypeRegistry.registerType() method - -Register a [type](./kibana-plugin-core-server.savedobjectstype.md) inside the registry. A type can only be registered once. subsequent calls with the same type name will throw an error. - -Signature: - -```typescript -registerType(type: SavedObjectsType): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| type | SavedObjectsType | | - -Returns: - -void - diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectunsanitizeddoc.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectunsanitizeddoc.md deleted file mode 100644 index 8e2395ee6310d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectunsanitizeddoc.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectUnsanitizedDoc](./kibana-plugin-core-server.savedobjectunsanitizeddoc.md) - -## SavedObjectUnsanitizedDoc type - -Describes Saved Object documents from Kibana < 7.0.0 which don't have a `references` root property defined. This type should only be used in migrations. - -Signature: - -```typescript -export declare type SavedObjectUnsanitizedDoc = SavedObjectDoc & Partial; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.scopeablerequest.md b/docs/development/core/server/kibana-plugin-core-server.scopeablerequest.md deleted file mode 100644 index f8f05823ae81f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.scopeablerequest.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ScopeableRequest](./kibana-plugin-core-server.scopeablerequest.md) - -## ScopeableRequest type - -A user credentials container. It accommodates the necessary auth credentials to impersonate the current user. - -See [KibanaRequest](./kibana-plugin-core-server.kibanarequest.md). - -Signature: - -```typescript -export declare type ScopeableRequest = KibanaRequest | FakeRequest; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.searchresponse._scroll_id.md b/docs/development/core/server/kibana-plugin-core-server.searchresponse._scroll_id.md deleted file mode 100644 index a9dd0e76475fd..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.searchresponse._scroll_id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SearchResponse](./kibana-plugin-core-server.searchresponse.md) > [\_scroll\_id](./kibana-plugin-core-server.searchresponse._scroll_id.md) - -## SearchResponse.\_scroll\_id property - -Signature: - -```typescript -_scroll_id?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.searchresponse._shards.md b/docs/development/core/server/kibana-plugin-core-server.searchresponse._shards.md deleted file mode 100644 index e090ad20e8bc8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.searchresponse._shards.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SearchResponse](./kibana-plugin-core-server.searchresponse.md) > [\_shards](./kibana-plugin-core-server.searchresponse._shards.md) - -## SearchResponse.\_shards property - -Signature: - -```typescript -_shards: ShardsResponse; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.searchresponse.aggregations.md b/docs/development/core/server/kibana-plugin-core-server.searchresponse.aggregations.md deleted file mode 100644 index 686e6f2aa05e9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.searchresponse.aggregations.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SearchResponse](./kibana-plugin-core-server.searchresponse.md) > [aggregations](./kibana-plugin-core-server.searchresponse.aggregations.md) - -## SearchResponse.aggregations property - -Signature: - -```typescript -aggregations?: any; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.searchresponse.hits.md b/docs/development/core/server/kibana-plugin-core-server.searchresponse.hits.md deleted file mode 100644 index 599c4e3ad6319..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.searchresponse.hits.md +++ /dev/null @@ -1,28 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SearchResponse](./kibana-plugin-core-server.searchresponse.md) > [hits](./kibana-plugin-core-server.searchresponse.hits.md) - -## SearchResponse.hits property - -Signature: - -```typescript -hits: { - total: number; - max_score: number; - hits: Array<{ - _index: string; - _type: string; - _id: string; - _score: number; - _source: T; - _version?: number; - _explanation?: Explanation; - fields?: any; - highlight?: any; - inner_hits?: any; - matched_queries?: string[]; - sort?: unknown[]; - }>; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.searchresponse.md b/docs/development/core/server/kibana-plugin-core-server.searchresponse.md deleted file mode 100644 index 7deca96e4054c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.searchresponse.md +++ /dev/null @@ -1,25 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SearchResponse](./kibana-plugin-core-server.searchresponse.md) - -## SearchResponse interface - - -Signature: - -```typescript -export interface SearchResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [\_scroll\_id?](./kibana-plugin-core-server.searchresponse._scroll_id.md) | string | (Optional) | -| [\_shards](./kibana-plugin-core-server.searchresponse._shards.md) | ShardsResponse | | -| [aggregations?](./kibana-plugin-core-server.searchresponse.aggregations.md) | any | (Optional) | -| [hits](./kibana-plugin-core-server.searchresponse.hits.md) | { total: number; max\_score: number; hits: Array<{ \_index: string; \_type: string; \_id: string; \_score: number; \_source: T; \_version?: number; \_explanation?: Explanation; fields?: any; highlight?: any; inner\_hits?: any; matched\_queries?: string\[\]; sort?: unknown\[\]; }>; } | | -| [pit\_id?](./kibana-plugin-core-server.searchresponse.pit_id.md) | string | (Optional) | -| [timed\_out](./kibana-plugin-core-server.searchresponse.timed_out.md) | boolean | | -| [took](./kibana-plugin-core-server.searchresponse.took.md) | number | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.searchresponse.pit_id.md b/docs/development/core/server/kibana-plugin-core-server.searchresponse.pit_id.md deleted file mode 100644 index f214bc0538045..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.searchresponse.pit_id.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SearchResponse](./kibana-plugin-core-server.searchresponse.md) > [pit\_id](./kibana-plugin-core-server.searchresponse.pit_id.md) - -## SearchResponse.pit\_id property - -Signature: - -```typescript -pit_id?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.searchresponse.timed_out.md b/docs/development/core/server/kibana-plugin-core-server.searchresponse.timed_out.md deleted file mode 100644 index a3488117cd874..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.searchresponse.timed_out.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SearchResponse](./kibana-plugin-core-server.searchresponse.md) > [timed\_out](./kibana-plugin-core-server.searchresponse.timed_out.md) - -## SearchResponse.timed\_out property - -Signature: - -```typescript -timed_out: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.searchresponse.took.md b/docs/development/core/server/kibana-plugin-core-server.searchresponse.took.md deleted file mode 100644 index 8c9c0b0f7c420..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.searchresponse.took.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SearchResponse](./kibana-plugin-core-server.searchresponse.md) > [took](./kibana-plugin-core-server.searchresponse.took.md) - -## SearchResponse.took property - -Signature: - -```typescript -took: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.servicestatus.detail.md b/docs/development/core/server/kibana-plugin-core-server.servicestatus.detail.md deleted file mode 100644 index fa369aa0bdfbb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.servicestatus.detail.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ServiceStatus](./kibana-plugin-core-server.servicestatus.md) > [detail](./kibana-plugin-core-server.servicestatus.detail.md) - -## ServiceStatus.detail property - -A more detailed description of the service status. - -Signature: - -```typescript -detail?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.servicestatus.documentationurl.md b/docs/development/core/server/kibana-plugin-core-server.servicestatus.documentationurl.md deleted file mode 100644 index 5ef8c1251a602..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.servicestatus.documentationurl.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ServiceStatus](./kibana-plugin-core-server.servicestatus.md) > [documentationUrl](./kibana-plugin-core-server.servicestatus.documentationurl.md) - -## ServiceStatus.documentationUrl property - -A URL to open in a new tab about how to resolve or troubleshoot the problem. - -Signature: - -```typescript -documentationUrl?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.servicestatus.level.md b/docs/development/core/server/kibana-plugin-core-server.servicestatus.level.md deleted file mode 100644 index 551c10c9bff82..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.servicestatus.level.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ServiceStatus](./kibana-plugin-core-server.servicestatus.md) > [level](./kibana-plugin-core-server.servicestatus.level.md) - -## ServiceStatus.level property - -The current availability level of the service. - -Signature: - -```typescript -level: ServiceStatusLevel; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.servicestatus.md b/docs/development/core/server/kibana-plugin-core-server.servicestatus.md deleted file mode 100644 index 5c04cb33a7529..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.servicestatus.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ServiceStatus](./kibana-plugin-core-server.servicestatus.md) - -## ServiceStatus interface - -The current status of a service at a point in time. - -Signature: - -```typescript -export interface ServiceStatus | unknown = unknown> -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [detail?](./kibana-plugin-core-server.servicestatus.detail.md) | string | (Optional) A more detailed description of the service status. | -| [documentationUrl?](./kibana-plugin-core-server.servicestatus.documentationurl.md) | string | (Optional) A URL to open in a new tab about how to resolve or troubleshoot the problem. | -| [level](./kibana-plugin-core-server.servicestatus.level.md) | ServiceStatusLevel | The current availability level of the service. | -| [meta?](./kibana-plugin-core-server.servicestatus.meta.md) | Meta | (Optional) Any JSON-serializable data to be included in the HTTP API response. Useful for providing more fine-grained, machine-readable information about the service status. May include status information for underlying features. | -| [summary](./kibana-plugin-core-server.servicestatus.summary.md) | string | A high-level summary of the service status. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.servicestatus.meta.md b/docs/development/core/server/kibana-plugin-core-server.servicestatus.meta.md deleted file mode 100644 index a48994daa5a4e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.servicestatus.meta.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ServiceStatus](./kibana-plugin-core-server.servicestatus.md) > [meta](./kibana-plugin-core-server.servicestatus.meta.md) - -## ServiceStatus.meta property - -Any JSON-serializable data to be included in the HTTP API response. Useful for providing more fine-grained, machine-readable information about the service status. May include status information for underlying features. - -Signature: - -```typescript -meta?: Meta; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.servicestatus.summary.md b/docs/development/core/server/kibana-plugin-core-server.servicestatus.summary.md deleted file mode 100644 index db90afd6f74a6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.servicestatus.summary.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ServiceStatus](./kibana-plugin-core-server.servicestatus.md) > [summary](./kibana-plugin-core-server.servicestatus.summary.md) - -## ServiceStatus.summary property - -A high-level summary of the service status. - -Signature: - -```typescript -summary: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.servicestatuslevel.md b/docs/development/core/server/kibana-plugin-core-server.servicestatuslevel.md deleted file mode 100644 index 5f995ff5e13e3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.servicestatuslevel.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ServiceStatusLevel](./kibana-plugin-core-server.servicestatuslevel.md) - -## ServiceStatusLevel type - -A convenience type that represents the union of each value in [ServiceStatusLevels](./kibana-plugin-core-server.servicestatuslevels.md). - -Signature: - -```typescript -export declare type ServiceStatusLevel = typeof ServiceStatusLevels[keyof typeof ServiceStatusLevels]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.servicestatuslevels.md b/docs/development/core/server/kibana-plugin-core-server.servicestatuslevels.md deleted file mode 100644 index e57dc192cd572..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.servicestatuslevels.md +++ /dev/null @@ -1,41 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ServiceStatusLevels](./kibana-plugin-core-server.servicestatuslevels.md) - -## ServiceStatusLevels variable - -The current "level" of availability of a service. - -Signature: - -```typescript -ServiceStatusLevels: Readonly<{ - available: Readonly<{ - toString: () => "available"; - valueOf: () => 0; - toJSON: () => "available"; - }>; - degraded: Readonly<{ - toString: () => "degraded"; - valueOf: () => 1; - toJSON: () => "degraded"; - }>; - unavailable: Readonly<{ - toString: () => "unavailable"; - valueOf: () => 2; - toJSON: () => "unavailable"; - }>; - critical: Readonly<{ - toString: () => "critical"; - valueOf: () => 3; - toJSON: () => "critical"; - }>; -}> -``` - -## Remarks - -The values implement `valueOf` to allow for easy comparisons between status levels with <, >, etc. Higher values represent higher severities. Note that the default `Array.prototype.sort` implementation does not correctly sort these values. - -A snapshot serializer is available in `src/core/server/test_utils` to ease testing of these values with Jest. - diff --git a/docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.isvalid.md b/docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.isvalid.md deleted file mode 100644 index c9132b9692318..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.isvalid.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionCookieValidationResult](./kibana-plugin-core-server.sessioncookievalidationresult.md) > [isValid](./kibana-plugin-core-server.sessioncookievalidationresult.isvalid.md) - -## SessionCookieValidationResult.isValid property - -Whether the cookie is valid or not. - -Signature: - -```typescript -isValid: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.md b/docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.md deleted file mode 100644 index 6c1a5e7af78a7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionCookieValidationResult](./kibana-plugin-core-server.sessioncookievalidationresult.md) - -## SessionCookieValidationResult interface - -Return type from a function to validate cookie contents. - -Signature: - -```typescript -export interface SessionCookieValidationResult -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [isValid](./kibana-plugin-core-server.sessioncookievalidationresult.isvalid.md) | boolean | Whether the cookie is valid or not. | -| [path?](./kibana-plugin-core-server.sessioncookievalidationresult.path.md) | string | (Optional) The "Path" attribute of the cookie; if the cookie is invalid, this is used to clear it. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.path.md b/docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.path.md deleted file mode 100644 index 59b6cb7ca6e6b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessioncookievalidationresult.path.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionCookieValidationResult](./kibana-plugin-core-server.sessioncookievalidationresult.md) > [path](./kibana-plugin-core-server.sessioncookievalidationresult.path.md) - -## SessionCookieValidationResult.path property - -The "Path" attribute of the cookie; if the cookie is invalid, this is used to clear it. - -Signature: - -```typescript -path?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstorage.clear.md b/docs/development/core/server/kibana-plugin-core-server.sessionstorage.clear.md deleted file mode 100644 index ac34c9b17be8d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstorage.clear.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorage](./kibana-plugin-core-server.sessionstorage.md) > [clear](./kibana-plugin-core-server.sessionstorage.clear.md) - -## SessionStorage.clear() method - -Clears current session. - -Signature: - -```typescript -clear(): void; -``` -Returns: - -void - diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstorage.get.md b/docs/development/core/server/kibana-plugin-core-server.sessionstorage.get.md deleted file mode 100644 index 9e867b9e0fcc8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstorage.get.md +++ /dev/null @@ -1,17 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorage](./kibana-plugin-core-server.sessionstorage.md) > [get](./kibana-plugin-core-server.sessionstorage.get.md) - -## SessionStorage.get() method - -Retrieves session value from the session storage. - -Signature: - -```typescript -get(): Promise; -``` -Returns: - -Promise<T \| null> - diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstorage.md b/docs/development/core/server/kibana-plugin-core-server.sessionstorage.md deleted file mode 100644 index e6ddef20c22a4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstorage.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorage](./kibana-plugin-core-server.sessionstorage.md) - -## SessionStorage interface - -Provides an interface to store and retrieve data across requests. - -Signature: - -```typescript -export interface SessionStorage -``` - -## Methods - -| Method | Description | -| --- | --- | -| [clear()](./kibana-plugin-core-server.sessionstorage.clear.md) | Clears current session. | -| [get()](./kibana-plugin-core-server.sessionstorage.get.md) | Retrieves session value from the session storage. | -| [set(sessionValue)](./kibana-plugin-core-server.sessionstorage.set.md) | Puts current session value into the session storage. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstorage.set.md b/docs/development/core/server/kibana-plugin-core-server.sessionstorage.set.md deleted file mode 100644 index a17aadf8fb984..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstorage.set.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorage](./kibana-plugin-core-server.sessionstorage.md) > [set](./kibana-plugin-core-server.sessionstorage.set.md) - -## SessionStorage.set() method - -Puts current session value into the session storage. - -Signature: - -```typescript -set(sessionValue: T): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| sessionValue | T | value to put | - -Returns: - -void - diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.encryptionkey.md b/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.encryptionkey.md deleted file mode 100644 index 377ce19b31601..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.encryptionkey.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorageCookieOptions](./kibana-plugin-core-server.sessionstoragecookieoptions.md) > [encryptionKey](./kibana-plugin-core-server.sessionstoragecookieoptions.encryptionkey.md) - -## SessionStorageCookieOptions.encryptionKey property - -A key used to encrypt a cookie's value. Should be at least 32 characters long. - -Signature: - -```typescript -encryptionKey: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.issecure.md b/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.issecure.md deleted file mode 100644 index fc401fa99b83c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.issecure.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorageCookieOptions](./kibana-plugin-core-server.sessionstoragecookieoptions.md) > [isSecure](./kibana-plugin-core-server.sessionstoragecookieoptions.issecure.md) - -## SessionStorageCookieOptions.isSecure property - -Flag indicating whether the cookie should be sent only via a secure connection. - -Signature: - -```typescript -isSecure: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.md b/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.md deleted file mode 100644 index 425daf32f5cb3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorageCookieOptions](./kibana-plugin-core-server.sessionstoragecookieoptions.md) - -## SessionStorageCookieOptions interface - -Configuration used to create HTTP session storage based on top of cookie mechanism. - -Signature: - -```typescript -export interface SessionStorageCookieOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [encryptionKey](./kibana-plugin-core-server.sessionstoragecookieoptions.encryptionkey.md) | string | A key used to encrypt a cookie's value. Should be at least 32 characters long. | -| [isSecure](./kibana-plugin-core-server.sessionstoragecookieoptions.issecure.md) | boolean | Flag indicating whether the cookie should be sent only via a secure connection. | -| [name](./kibana-plugin-core-server.sessionstoragecookieoptions.name.md) | string | Name of the session cookie. | -| [sameSite?](./kibana-plugin-core-server.sessionstoragecookieoptions.samesite.md) | 'Strict' \| 'Lax' \| 'None' | (Optional) Defines SameSite attribute of the Set-Cookie Header. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite | -| [validate](./kibana-plugin-core-server.sessionstoragecookieoptions.validate.md) | (sessionValue: T \| T\[\]) => SessionCookieValidationResult | Function called to validate a cookie's decrypted value. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.name.md b/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.name.md deleted file mode 100644 index 47c1926415221..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorageCookieOptions](./kibana-plugin-core-server.sessionstoragecookieoptions.md) > [name](./kibana-plugin-core-server.sessionstoragecookieoptions.name.md) - -## SessionStorageCookieOptions.name property - -Name of the session cookie. - -Signature: - -```typescript -name: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.samesite.md b/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.samesite.md deleted file mode 100644 index a2bf79a52d521..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.samesite.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorageCookieOptions](./kibana-plugin-core-server.sessionstoragecookieoptions.md) > [sameSite](./kibana-plugin-core-server.sessionstoragecookieoptions.samesite.md) - -## SessionStorageCookieOptions.sameSite property - -Defines SameSite attribute of the Set-Cookie Header. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite - -Signature: - -```typescript -sameSite?: 'Strict' | 'Lax' | 'None'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.validate.md b/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.validate.md deleted file mode 100644 index 2626c94f6afb1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstoragecookieoptions.validate.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorageCookieOptions](./kibana-plugin-core-server.sessionstoragecookieoptions.md) > [validate](./kibana-plugin-core-server.sessionstoragecookieoptions.validate.md) - -## SessionStorageCookieOptions.validate property - -Function called to validate a cookie's decrypted value. - -Signature: - -```typescript -validate: (sessionValue: T | T[]) => SessionCookieValidationResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstoragefactory.asscoped.md b/docs/development/core/server/kibana-plugin-core-server.sessionstoragefactory.asscoped.md deleted file mode 100644 index be3c997a0aa71..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstoragefactory.asscoped.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorageFactory](./kibana-plugin-core-server.sessionstoragefactory.md) > [asScoped](./kibana-plugin-core-server.sessionstoragefactory.asscoped.md) - -## SessionStorageFactory.asScoped property - -Signature: - -```typescript -asScoped: (request: KibanaRequest) => SessionStorage; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.sessionstoragefactory.md b/docs/development/core/server/kibana-plugin-core-server.sessionstoragefactory.md deleted file mode 100644 index 7bdea28beeda1..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sessionstoragefactory.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SessionStorageFactory](./kibana-plugin-core-server.sessionstoragefactory.md) - -## SessionStorageFactory interface - -SessionStorage factory to bind one to an incoming request - -Signature: - -```typescript -export interface SessionStorageFactory -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [asScoped](./kibana-plugin-core-server.sessionstoragefactory.asscoped.md) | (request: KibanaRequest) => SessionStorage<T> | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.shardsinfo.failed.md b/docs/development/core/server/kibana-plugin-core-server.shardsinfo.failed.md deleted file mode 100644 index a47fc1263be41..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.shardsinfo.failed.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ShardsInfo](./kibana-plugin-core-server.shardsinfo.md) > [failed](./kibana-plugin-core-server.shardsinfo.failed.md) - -## ShardsInfo.failed property - -Signature: - -```typescript -failed: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.shardsinfo.md b/docs/development/core/server/kibana-plugin-core-server.shardsinfo.md deleted file mode 100644 index 6c006c020d3fb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.shardsinfo.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ShardsInfo](./kibana-plugin-core-server.shardsinfo.md) - -## ShardsInfo interface - - -Signature: - -```typescript -export interface ShardsInfo -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [failed](./kibana-plugin-core-server.shardsinfo.failed.md) | number | | -| [skipped](./kibana-plugin-core-server.shardsinfo.skipped.md) | number | | -| [successful](./kibana-plugin-core-server.shardsinfo.successful.md) | number | | -| [total](./kibana-plugin-core-server.shardsinfo.total.md) | number | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.shardsinfo.skipped.md b/docs/development/core/server/kibana-plugin-core-server.shardsinfo.skipped.md deleted file mode 100644 index 0c87831edd6ca..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.shardsinfo.skipped.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ShardsInfo](./kibana-plugin-core-server.shardsinfo.md) > [skipped](./kibana-plugin-core-server.shardsinfo.skipped.md) - -## ShardsInfo.skipped property - -Signature: - -```typescript -skipped: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.shardsinfo.successful.md b/docs/development/core/server/kibana-plugin-core-server.shardsinfo.successful.md deleted file mode 100644 index c927adb39932a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.shardsinfo.successful.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ShardsInfo](./kibana-plugin-core-server.shardsinfo.md) > [successful](./kibana-plugin-core-server.shardsinfo.successful.md) - -## ShardsInfo.successful property - -Signature: - -```typescript -successful: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.shardsinfo.total.md b/docs/development/core/server/kibana-plugin-core-server.shardsinfo.total.md deleted file mode 100644 index 820c8a70fd222..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.shardsinfo.total.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ShardsInfo](./kibana-plugin-core-server.shardsinfo.md) > [total](./kibana-plugin-core-server.shardsinfo.total.md) - -## ShardsInfo.total property - -Signature: - -```typescript -total: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.shardsresponse.failed.md b/docs/development/core/server/kibana-plugin-core-server.shardsresponse.failed.md deleted file mode 100644 index 7f7a173af2e58..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.shardsresponse.failed.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ShardsResponse](./kibana-plugin-core-server.shardsresponse.md) > [failed](./kibana-plugin-core-server.shardsresponse.failed.md) - -## ShardsResponse.failed property - -Signature: - -```typescript -failed: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.shardsresponse.md b/docs/development/core/server/kibana-plugin-core-server.shardsresponse.md deleted file mode 100644 index 65e113f05212f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.shardsresponse.md +++ /dev/null @@ -1,22 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ShardsResponse](./kibana-plugin-core-server.shardsresponse.md) - -## ShardsResponse interface - - -Signature: - -```typescript -export interface ShardsResponse -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [failed](./kibana-plugin-core-server.shardsresponse.failed.md) | number | | -| [skipped](./kibana-plugin-core-server.shardsresponse.skipped.md) | number | | -| [successful](./kibana-plugin-core-server.shardsresponse.successful.md) | number | | -| [total](./kibana-plugin-core-server.shardsresponse.total.md) | number | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.shardsresponse.skipped.md b/docs/development/core/server/kibana-plugin-core-server.shardsresponse.skipped.md deleted file mode 100644 index b01c3501fe022..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.shardsresponse.skipped.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ShardsResponse](./kibana-plugin-core-server.shardsresponse.md) > [skipped](./kibana-plugin-core-server.shardsresponse.skipped.md) - -## ShardsResponse.skipped property - -Signature: - -```typescript -skipped: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.shardsresponse.successful.md b/docs/development/core/server/kibana-plugin-core-server.shardsresponse.successful.md deleted file mode 100644 index 23c6ff0519ed7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.shardsresponse.successful.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ShardsResponse](./kibana-plugin-core-server.shardsresponse.md) > [successful](./kibana-plugin-core-server.shardsresponse.successful.md) - -## ShardsResponse.successful property - -Signature: - -```typescript -successful: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.shardsresponse.total.md b/docs/development/core/server/kibana-plugin-core-server.shardsresponse.total.md deleted file mode 100644 index e669f6216a10f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.shardsresponse.total.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [ShardsResponse](./kibana-plugin-core-server.shardsresponse.md) > [total](./kibana-plugin-core-server.shardsresponse.total.md) - -## ShardsResponse.total property - -Signature: - -```typescript -total: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.sharedglobalconfig.md b/docs/development/core/server/kibana-plugin-core-server.sharedglobalconfig.md deleted file mode 100644 index 477cd5a651a56..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.sharedglobalconfig.md +++ /dev/null @@ -1,16 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SharedGlobalConfig](./kibana-plugin-core-server.sharedglobalconfig.md) - -## SharedGlobalConfig type - - -Signature: - -```typescript -export declare type SharedGlobalConfig = RecursiveReadonly<{ - elasticsearch: Pick; - path: Pick; - savedObjects: Pick; -}>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.startservicesaccessor.md b/docs/development/core/server/kibana-plugin-core-server.startservicesaccessor.md deleted file mode 100644 index 7f90060d3ffa8..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.startservicesaccessor.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [StartServicesAccessor](./kibana-plugin-core-server.startservicesaccessor.md) - -## StartServicesAccessor type - -Allows plugins to get access to APIs available in start inside async handlers. Promise will not resolve until Core and plugin dependencies have completed `start`. This should only be used inside handlers registered during `setup` that will only be executed after `start` lifecycle. - -Signature: - -```typescript -export declare type StartServicesAccessor = () => Promise<[CoreStart, TPluginsStart, TStart]>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.core_.md b/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.core_.md deleted file mode 100644 index 6662e68b44d36..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.core_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [StatusServiceSetup](./kibana-plugin-core-server.statusservicesetup.md) > [core$](./kibana-plugin-core-server.statusservicesetup.core_.md) - -## StatusServiceSetup.core$ property - -Current status for all Core services. - -Signature: - -```typescript -core$: Observable; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.dependencies_.md b/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.dependencies_.md deleted file mode 100644 index 7475f0e3a4c1c..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.dependencies_.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [StatusServiceSetup](./kibana-plugin-core-server.statusservicesetup.md) > [dependencies$](./kibana-plugin-core-server.statusservicesetup.dependencies_.md) - -## StatusServiceSetup.dependencies$ property - -Current status for all plugins this plugin depends on. Each key of the `Record` is a plugin id. - -Signature: - -```typescript -dependencies$: Observable>; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.derivedstatus_.md b/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.derivedstatus_.md deleted file mode 100644 index 96784359457fb..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.derivedstatus_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [StatusServiceSetup](./kibana-plugin-core-server.statusservicesetup.md) > [derivedStatus$](./kibana-plugin-core-server.statusservicesetup.derivedstatus_.md) - -## StatusServiceSetup.derivedStatus$ property - -The status of this plugin as derived from its dependencies. - -Signature: - -```typescript -derivedStatus$: Observable; -``` - -## Remarks - -By default, plugins inherit this derived status from their dependencies. Calling overrides this default status. - -This may emit multiple times for a single status change event as propagates through the dependency tree - diff --git a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.isstatuspageanonymous.md b/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.isstatuspageanonymous.md deleted file mode 100644 index c417aaa2cef48..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.isstatuspageanonymous.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [StatusServiceSetup](./kibana-plugin-core-server.statusservicesetup.md) > [isStatusPageAnonymous](./kibana-plugin-core-server.statusservicesetup.isstatuspageanonymous.md) - -## StatusServiceSetup.isStatusPageAnonymous property - -Whether or not the status HTTP APIs are available to unauthenticated users when an authentication provider is present. - -Signature: - -```typescript -isStatusPageAnonymous: () => boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.md deleted file mode 100644 index 5409772c369c2..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.md +++ /dev/null @@ -1,83 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [StatusServiceSetup](./kibana-plugin-core-server.statusservicesetup.md) - -## StatusServiceSetup interface - -API for accessing status of Core and this plugin's dependencies as well as for customizing this plugin's status. - -Signature: - -```typescript -export interface StatusServiceSetup -``` - -## Remarks - -By default, a plugin inherits it's current status from the most severe status level of any Core services and any plugins that it depends on. This default status is available on the API. - -Plugins may customize their status calculation by calling the API with an Observable. Within this Observable, a plugin may choose to only depend on the status of some of its dependencies, to ignore severe status levels of particular Core services they are not concerned with, or to make its status dependent on other external services. - -## Example 1 - -Customize a plugin's status to only depend on the status of SavedObjects: - -```ts -core.status.set( - core.status.core$.pipe( -. map((coreStatus) => { - return coreStatus.savedObjects; - }) ; - ); -); -``` - -## Example 2 - -Customize a plugin's status to include an external service: - -```ts -const externalStatus$ = interval(1000).pipe( - switchMap(async () => { - const resp = await fetch(`https://myexternaldep.com/_healthz`); - const body = await resp.json(); - if (body.ok) { - return of({ level: ServiceStatusLevels.available, summary: 'External Service is up'}); - } else { - return of({ level: ServiceStatusLevels.available, summary: 'External Service is unavailable'}); - } - }), - catchError((error) => { - of({ level: ServiceStatusLevels.unavailable, summary: `External Service is down`, meta: { error }}) - }) -); - -core.status.set( - combineLatest([core.status.derivedStatus$, externalStatus$]).pipe( - map(([derivedStatus, externalStatus]) => { - if (externalStatus.level > derivedStatus) { - return externalStatus; - } else { - return derivedStatus; - } - }) - ) -); -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [core$](./kibana-plugin-core-server.statusservicesetup.core_.md) | Observable<CoreStatus> | Current status for all Core services. | -| [dependencies$](./kibana-plugin-core-server.statusservicesetup.dependencies_.md) | Observable<Record<string, ServiceStatus>> | Current status for all plugins this plugin depends on. Each key of the Record is a plugin id. | -| [derivedStatus$](./kibana-plugin-core-server.statusservicesetup.derivedstatus_.md) | Observable<ServiceStatus> | The status of this plugin as derived from its dependencies. | -| [isStatusPageAnonymous](./kibana-plugin-core-server.statusservicesetup.isstatuspageanonymous.md) | () => boolean | Whether or not the status HTTP APIs are available to unauthenticated users when an authentication provider is present. | -| [overall$](./kibana-plugin-core-server.statusservicesetup.overall_.md) | Observable<ServiceStatus> | Overall system status for all of Kibana. | - -## Methods - -| Method | Description | -| --- | --- | -| [set(status$)](./kibana-plugin-core-server.statusservicesetup.set.md) | Allows a plugin to specify a custom status dependent on its own criteria. Completely overrides the default inherited status. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.overall_.md b/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.overall_.md deleted file mode 100644 index bb7c31311d520..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.overall_.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [StatusServiceSetup](./kibana-plugin-core-server.statusservicesetup.md) > [overall$](./kibana-plugin-core-server.statusservicesetup.overall_.md) - -## StatusServiceSetup.overall$ property - -Overall system status for all of Kibana. - -Signature: - -```typescript -overall$: Observable; -``` - -## Remarks - -The level of the overall status will reflect the most severe status of any core service or plugin. - -Exposed only for reporting purposes to outside systems and should not be used by plugins. Instead, plugins should only depend on the statuses of [Core](./kibana-plugin-core-server.statusservicesetup.core_.md) or their dependencies. - diff --git a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.set.md b/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.set.md deleted file mode 100644 index b60319e19529a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.statusservicesetup.set.md +++ /dev/null @@ -1,30 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [StatusServiceSetup](./kibana-plugin-core-server.statusservicesetup.md) > [set](./kibana-plugin-core-server.statusservicesetup.set.md) - -## StatusServiceSetup.set() method - -Allows a plugin to specify a custom status dependent on its own criteria. Completely overrides the default inherited status. - -Signature: - -```typescript -set(status$: Observable): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| status$ | Observable<ServiceStatus> | | - -Returns: - -void - -## Remarks - -The first emission from this Observable should occur within 30s, else this plugin's status will fallback to `unavailable` until the first emission. - -See the [StatusServiceSetup.derivedStatus$](./kibana-plugin-core-server.statusservicesetup.derivedstatus_.md) API for leveraging the default status calculation that is provided by Core. - diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.category.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.category.md deleted file mode 100644 index 224df5f073eb7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.category.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [category](./kibana-plugin-core-server.uisettingsparams.category.md) - -## UiSettingsParams.category property - -used to group the configured setting in the UI - -Signature: - -```typescript -category?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.deprecation.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.deprecation.md deleted file mode 100644 index 0be426d609606..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.deprecation.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [deprecation](./kibana-plugin-core-server.uisettingsparams.deprecation.md) - -## UiSettingsParams.deprecation property - -optional deprecation information. Used to generate a deprecation warning. - -Signature: - -```typescript -deprecation?: DeprecationSettings; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.description.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.description.md deleted file mode 100644 index 5ba8244e6cfb4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.description.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [description](./kibana-plugin-core-server.uisettingsparams.description.md) - -## UiSettingsParams.description property - -description provided to a user in UI - -Signature: - -```typescript -description?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md deleted file mode 100644 index 531a0e75c97b0..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md +++ /dev/null @@ -1,33 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) - -## UiSettingsParams interface - -UiSettings parameters defined by the plugins. - -Signature: - -```typescript -export interface UiSettingsParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [category?](./kibana-plugin-core-server.uisettingsparams.category.md) | string\[\] | (Optional) used to group the configured setting in the UI | -| [deprecation?](./kibana-plugin-core-server.uisettingsparams.deprecation.md) | DeprecationSettings | (Optional) optional deprecation information. Used to generate a deprecation warning. | -| [description?](./kibana-plugin-core-server.uisettingsparams.description.md) | string | (Optional) description provided to a user in UI | -| [metric?](./kibana-plugin-core-server.uisettingsparams.metric.md) | { type: UiCounterMetricType; name: string; } | (Optional) Metric to track once this property changes | -| [name?](./kibana-plugin-core-server.uisettingsparams.name.md) | string | (Optional) title in the UI | -| [optionLabels?](./kibana-plugin-core-server.uisettingsparams.optionlabels.md) | Record<string, string> | (Optional) text labels for 'select' type UI element | -| [options?](./kibana-plugin-core-server.uisettingsparams.options.md) | string\[\] | (Optional) array of permitted values for this setting | -| [order?](./kibana-plugin-core-server.uisettingsparams.order.md) | number | (Optional) index of the settings within its category (ascending order, smallest will be displayed first). Used for ordering in the UI. settings without order defined will be displayed last and ordered by name | -| [readonly?](./kibana-plugin-core-server.uisettingsparams.readonly.md) | boolean | (Optional) a flag indicating that value cannot be changed | -| [requiresPageReload?](./kibana-plugin-core-server.uisettingsparams.requirespagereload.md) | boolean | (Optional) a flag indicating whether new value applying requires page reloading | -| [schema](./kibana-plugin-core-server.uisettingsparams.schema.md) | Type<T> | | -| [sensitive?](./kibana-plugin-core-server.uisettingsparams.sensitive.md) | boolean | (Optional) a flag indicating that value might contain user sensitive data. used by telemetry to mask the value of the setting when sent. | -| [type?](./kibana-plugin-core-server.uisettingsparams.type.md) | UiSettingsType | (Optional) defines a type of UI element [UiSettingsType](./kibana-plugin-core-server.uisettingstype.md) | -| [value?](./kibana-plugin-core-server.uisettingsparams.value.md) | T | (Optional) default value to fall back to if a user doesn't provide any | - diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.metric.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.metric.md deleted file mode 100644 index 8491de9a8f5dc..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.metric.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [metric](./kibana-plugin-core-server.uisettingsparams.metric.md) - -## UiSettingsParams.metric property - -> Warning: This API is now obsolete. -> -> Temporary measure until https://github.com/elastic/kibana/issues/83084 is in place -> - -Metric to track once this property changes - -Signature: - -```typescript -metric?: { - type: UiCounterMetricType; - name: string; - }; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.name.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.name.md deleted file mode 100644 index 248498c232c9f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.name.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [name](./kibana-plugin-core-server.uisettingsparams.name.md) - -## UiSettingsParams.name property - -title in the UI - -Signature: - -```typescript -name?: string; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.optionlabels.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.optionlabels.md deleted file mode 100644 index 97a66e71fb846..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.optionlabels.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [optionLabels](./kibana-plugin-core-server.uisettingsparams.optionlabels.md) - -## UiSettingsParams.optionLabels property - -text labels for 'select' type UI element - -Signature: - -```typescript -optionLabels?: Record; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.options.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.options.md deleted file mode 100644 index 94eff9f0a0146..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.options.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [options](./kibana-plugin-core-server.uisettingsparams.options.md) - -## UiSettingsParams.options property - -array of permitted values for this setting - -Signature: - -```typescript -options?: string[]; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.order.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.order.md deleted file mode 100644 index 140bdad5d786b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.order.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [order](./kibana-plugin-core-server.uisettingsparams.order.md) - -## UiSettingsParams.order property - -index of the settings within its category (ascending order, smallest will be displayed first). Used for ordering in the UI. - - settings without order defined will be displayed last and ordered by name - -Signature: - -```typescript -order?: number; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.readonly.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.readonly.md deleted file mode 100644 index b9342eff345c9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.readonly.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [readonly](./kibana-plugin-core-server.uisettingsparams.readonly.md) - -## UiSettingsParams.readonly property - -a flag indicating that value cannot be changed - -Signature: - -```typescript -readonly?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.requirespagereload.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.requirespagereload.md deleted file mode 100644 index 46bfa291857d4..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.requirespagereload.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [requiresPageReload](./kibana-plugin-core-server.uisettingsparams.requirespagereload.md) - -## UiSettingsParams.requiresPageReload property - -a flag indicating whether new value applying requires page reloading - -Signature: - -```typescript -requiresPageReload?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.schema.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.schema.md deleted file mode 100644 index f181fbd309b7f..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.schema.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [schema](./kibana-plugin-core-server.uisettingsparams.schema.md) - -## UiSettingsParams.schema property - -Signature: - -```typescript -schema: Type; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.sensitive.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.sensitive.md deleted file mode 100644 index f2c7de19dde1a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.sensitive.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [sensitive](./kibana-plugin-core-server.uisettingsparams.sensitive.md) - -## UiSettingsParams.sensitive property - -a flag indicating that value might contain user sensitive data. used by telemetry to mask the value of the setting when sent. - -Signature: - -```typescript -sensitive?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.type.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.type.md deleted file mode 100644 index 9d663f05713c6..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.type.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [type](./kibana-plugin-core-server.uisettingsparams.type.md) - -## UiSettingsParams.type property - -defines a type of UI element [UiSettingsType](./kibana-plugin-core-server.uisettingstype.md) - -Signature: - -```typescript -type?: UiSettingsType; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.value.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.value.md deleted file mode 100644 index 78c8f0c8fcf8d..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.value.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [value](./kibana-plugin-core-server.uisettingsparams.value.md) - -## UiSettingsParams.value property - -default value to fall back to if a user doesn't provide any - -Signature: - -```typescript -value?: T; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsservicesetup.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsservicesetup.md deleted file mode 100644 index 97b711bca303a..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsservicesetup.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsServiceSetup](./kibana-plugin-core-server.uisettingsservicesetup.md) - -## UiSettingsServiceSetup interface - - -Signature: - -```typescript -export interface UiSettingsServiceSetup -``` - -## Methods - -| Method | Description | -| --- | --- | -| [register(settings)](./kibana-plugin-core-server.uisettingsservicesetup.register.md) | Sets settings with default values for the uiSettings. | - diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsservicesetup.register.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsservicesetup.register.md deleted file mode 100644 index 97b06ddb00e70..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsservicesetup.register.md +++ /dev/null @@ -1,39 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsServiceSetup](./kibana-plugin-core-server.uisettingsservicesetup.md) > [register](./kibana-plugin-core-server.uisettingsservicesetup.register.md) - -## UiSettingsServiceSetup.register() method - -Sets settings with default values for the uiSettings. - -Signature: - -```typescript -register(settings: Record): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| settings | Record<string, UiSettingsParams> | | - -Returns: - -void - -## Example - - -```ts -setup(core: CoreSetup){ - core.uiSettings.register([{ - foo: { - name: i18n.translate('my foo settings'), - value: true, - description: 'add some awesomeness', - }, - }]); -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsservicestart.asscopedtoclient.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsservicestart.asscopedtoclient.md deleted file mode 100644 index 1d76bc26a4150..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsservicestart.asscopedtoclient.md +++ /dev/null @@ -1,36 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsServiceStart](./kibana-plugin-core-server.uisettingsservicestart.md) > [asScopedToClient](./kibana-plugin-core-server.uisettingsservicestart.asscopedtoclient.md) - -## UiSettingsServiceStart.asScopedToClient() method - -Creates a [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) with provided \*scoped\* saved objects client. - -This should only be used in the specific case where the client needs to be accessed from outside of the scope of a [RequestHandler](./kibana-plugin-core-server.requesthandler.md). - -Signature: - -```typescript -asScopedToClient(savedObjectsClient: SavedObjectsClientContract): IUiSettingsClient; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| savedObjectsClient | SavedObjectsClientContract | | - -Returns: - -IUiSettingsClient - -## Example - - -```ts -start(core: CoreStart) { - const soClient = core.savedObjects.getScopedClient(arbitraryRequest); - const uiSettingsClient = core.uiSettings.asScopedToClient(soClient); -} -``` - diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsservicestart.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsservicestart.md deleted file mode 100644 index 014f7d533b2ff..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingsservicestart.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsServiceStart](./kibana-plugin-core-server.uisettingsservicestart.md) - -## UiSettingsServiceStart interface - - -Signature: - -```typescript -export interface UiSettingsServiceStart -``` - -## Methods - -| Method | Description | -| --- | --- | -| [asScopedToClient(savedObjectsClient)](./kibana-plugin-core-server.uisettingsservicestart.asscopedtoclient.md) | Creates a [IUiSettingsClient](./kibana-plugin-core-server.iuisettingsclient.md) with provided \*scoped\* saved objects client.This should only be used in the specific case where the client needs to be accessed from outside of the scope of a [RequestHandler](./kibana-plugin-core-server.requesthandler.md). | - diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingstype.md b/docs/development/core/server/kibana-plugin-core-server.uisettingstype.md deleted file mode 100644 index 7edee442baa24..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.uisettingstype.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsType](./kibana-plugin-core-server.uisettingstype.md) - -## UiSettingsType type - -UI element type to represent the settings. - -Signature: - -```typescript -export declare type UiSettingsType = 'undefined' | 'json' | 'markdown' | 'number' | 'select' | 'boolean' | 'string' | 'array' | 'image' | 'color'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederror.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederror.md deleted file mode 100644 index a79d62ab7f3c7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederror.md +++ /dev/null @@ -1,14 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedError](./kibana-plugin-core-server.unauthorizederror.md) - -## UnauthorizedError type - - -Signature: - -```typescript -export declare type UnauthorizedError = errors.ResponseError & { - statusCode: 401; -}; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandler.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandler.md deleted file mode 100644 index 10c6253619217..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandler.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandler](./kibana-plugin-core-server.unauthorizederrorhandler.md) - -## UnauthorizedErrorHandler type - -A handler used to handle unauthorized error returned by elasticsearch - -Signature: - -```typescript -export declare type UnauthorizedErrorHandler = (options: UnauthorizedErrorHandlerOptions, toolkit: UnauthorizedErrorHandlerToolkit) => MaybePromise; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.md deleted file mode 100644 index 2300d53816e07..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerNotHandledResult](./kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.md) - -## UnauthorizedErrorHandlerNotHandledResult interface - - -Signature: - -```typescript -export interface UnauthorizedErrorHandlerNotHandledResult -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [type](./kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.type.md) | 'notHandled' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.type.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.type.md deleted file mode 100644 index 9a8fc62517bce..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerNotHandledResult](./kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.md) > [type](./kibana-plugin-core-server.unauthorizederrorhandlernothandledresult.type.md) - -## UnauthorizedErrorHandlerNotHandledResult.type property - -Signature: - -```typescript -type: 'notHandled'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.error.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.error.md deleted file mode 100644 index b3b355dfdc97e..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.error.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerOptions](./kibana-plugin-core-server.unauthorizederrorhandleroptions.md) > [error](./kibana-plugin-core-server.unauthorizederrorhandleroptions.error.md) - -## UnauthorizedErrorHandlerOptions.error property - -Signature: - -```typescript -error: UnauthorizedError; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.md deleted file mode 100644 index efaf5109568be..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerOptions](./kibana-plugin-core-server.unauthorizederrorhandleroptions.md) - -## UnauthorizedErrorHandlerOptions interface - - -Signature: - -```typescript -export interface UnauthorizedErrorHandlerOptions -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [error](./kibana-plugin-core-server.unauthorizederrorhandleroptions.error.md) | UnauthorizedError | | -| [request](./kibana-plugin-core-server.unauthorizederrorhandleroptions.request.md) | KibanaRequest | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.request.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.request.md deleted file mode 100644 index 94a0970844615..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandleroptions.request.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerOptions](./kibana-plugin-core-server.unauthorizederrorhandleroptions.md) > [request](./kibana-plugin-core-server.unauthorizederrorhandleroptions.request.md) - -## UnauthorizedErrorHandlerOptions.request property - -Signature: - -```typescript -request: KibanaRequest; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresult.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresult.md deleted file mode 100644 index fb5d8ad7d35c5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresult.md +++ /dev/null @@ -1,12 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerResult](./kibana-plugin-core-server.unauthorizederrorhandlerresult.md) - -## UnauthorizedErrorHandlerResult type - - -Signature: - -```typescript -export declare type UnauthorizedErrorHandlerResult = UnauthorizedErrorHandlerRetryResult | UnauthorizedErrorHandlerNotHandledResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.authheaders.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.authheaders.md deleted file mode 100644 index f6a8cb3d5b613..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.authheaders.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerResultRetryParams](./kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.md) > [authHeaders](./kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.authheaders.md) - -## UnauthorizedErrorHandlerResultRetryParams.authHeaders property - -Signature: - -```typescript -authHeaders: AuthHeaders; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.md deleted file mode 100644 index d9c8e4c0733a7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.md +++ /dev/null @@ -1,19 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerResultRetryParams](./kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.md) - -## UnauthorizedErrorHandlerResultRetryParams interface - - -Signature: - -```typescript -export interface UnauthorizedErrorHandlerResultRetryParams -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [authHeaders](./kibana-plugin-core-server.unauthorizederrorhandlerresultretryparams.authheaders.md) | AuthHeaders | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerretryresult.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerretryresult.md deleted file mode 100644 index 09d7f08229be3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerretryresult.md +++ /dev/null @@ -1,20 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerRetryResult](./kibana-plugin-core-server.unauthorizederrorhandlerretryresult.md) - -## UnauthorizedErrorHandlerRetryResult interface - - -Signature: - -```typescript -export interface UnauthorizedErrorHandlerRetryResult extends UnauthorizedErrorHandlerResultRetryParams -``` -Extends: UnauthorizedErrorHandlerResultRetryParams - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [type](./kibana-plugin-core-server.unauthorizederrorhandlerretryresult.type.md) | 'retry' | | - diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerretryresult.type.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerretryresult.type.md deleted file mode 100644 index 64d1e9270682b..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlerretryresult.type.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerRetryResult](./kibana-plugin-core-server.unauthorizederrorhandlerretryresult.md) > [type](./kibana-plugin-core-server.unauthorizederrorhandlerretryresult.type.md) - -## UnauthorizedErrorHandlerRetryResult.type property - -Signature: - -```typescript -type: 'retry'; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.md deleted file mode 100644 index f28dae053b351..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerToolkit](./kibana-plugin-core-server.unauthorizederrorhandlertoolkit.md) - -## UnauthorizedErrorHandlerToolkit interface - -Toolkit passed to a [UnauthorizedErrorHandler](./kibana-plugin-core-server.unauthorizederrorhandler.md) used to generate responses from the handler - -Signature: - -```typescript -export interface UnauthorizedErrorHandlerToolkit -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [notHandled](./kibana-plugin-core-server.unauthorizederrorhandlertoolkit.nothandled.md) | () => UnauthorizedErrorHandlerNotHandledResult | The handler cannot handle the error, or was not able to authenticate. | -| [retry](./kibana-plugin-core-server.unauthorizederrorhandlertoolkit.retry.md) | (params: UnauthorizedErrorHandlerResultRetryParams) => UnauthorizedErrorHandlerRetryResult | The handler was able to authenticate. Will retry the failed request with new auth headers | - diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.nothandled.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.nothandled.md deleted file mode 100644 index 76fc3dd48ff74..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.nothandled.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerToolkit](./kibana-plugin-core-server.unauthorizederrorhandlertoolkit.md) > [notHandled](./kibana-plugin-core-server.unauthorizederrorhandlertoolkit.nothandled.md) - -## UnauthorizedErrorHandlerToolkit.notHandled property - -The handler cannot handle the error, or was not able to authenticate. - -Signature: - -```typescript -notHandled: () => UnauthorizedErrorHandlerNotHandledResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.retry.md b/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.retry.md deleted file mode 100644 index 6a5e5c78414ac..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.unauthorizederrorhandlertoolkit.retry.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UnauthorizedErrorHandlerToolkit](./kibana-plugin-core-server.unauthorizederrorhandlertoolkit.md) > [retry](./kibana-plugin-core-server.unauthorizederrorhandlertoolkit.retry.md) - -## UnauthorizedErrorHandlerToolkit.retry property - -The handler was able to authenticate. Will retry the failed request with new auth headers - -Signature: - -```typescript -retry: (params: UnauthorizedErrorHandlerResultRetryParams) => UnauthorizedErrorHandlerRetryResult; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.isoverridden.md b/docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.isoverridden.md deleted file mode 100644 index 12fc1af0d6ae9..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.isoverridden.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UserProvidedValues](./kibana-plugin-core-server.userprovidedvalues.md) > [isOverridden](./kibana-plugin-core-server.userprovidedvalues.isoverridden.md) - -## UserProvidedValues.isOverridden property - -Signature: - -```typescript -isOverridden?: boolean; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.md b/docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.md deleted file mode 100644 index fe8aaf233fbf7..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UserProvidedValues](./kibana-plugin-core-server.userprovidedvalues.md) - -## UserProvidedValues interface - -Describes the values explicitly set by user. - -Signature: - -```typescript -export interface UserProvidedValues -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [isOverridden?](./kibana-plugin-core-server.userprovidedvalues.isoverridden.md) | boolean | (Optional) | -| [userValue?](./kibana-plugin-core-server.userprovidedvalues.uservalue.md) | T | (Optional) | - diff --git a/docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.uservalue.md b/docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.uservalue.md deleted file mode 100644 index 6840f66d6f9f3..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.userprovidedvalues.uservalue.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UserProvidedValues](./kibana-plugin-core-server.userprovidedvalues.md) > [userValue](./kibana-plugin-core-server.userprovidedvalues.uservalue.md) - -## UserProvidedValues.userValue property - -Signature: - -```typescript -userValue?: T; -``` diff --git a/docs/development/core/server/kibana-plugin-core-server.validbodyoutput.md b/docs/development/core/server/kibana-plugin-core-server.validbodyoutput.md deleted file mode 100644 index 97d6a42602ab5..0000000000000 --- a/docs/development/core/server/kibana-plugin-core-server.validbodyoutput.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [validBodyOutput](./kibana-plugin-core-server.validbodyoutput.md) - -## validBodyOutput variable - -The set of valid body.output - -Signature: - -```typescript -validBodyOutput: readonly ["data", "stream"] -``` diff --git a/package.json b/package.json index 0cf2676cdc172..dcf846f3dd039 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,6 @@ "debug": "node --nolazy --inspect scripts/kibana --dev", "debug-break": "node --nolazy --inspect-brk scripts/kibana --dev", "dev-docs": "scripts/dev_docs.sh", - "docs:acceptApiChanges": "node --max-old-space-size=6144 scripts/check_published_api_changes.js --accept", "es": "node scripts/es", "preinstall": "node ./preinstall_check", "kbn": "node scripts/kbn", diff --git a/scripts/check_published_api_changes.js b/scripts/check_published_api_changes.js deleted file mode 100644 index 44d98ca51361b..0000000000000 --- a/scripts/check_published_api_changes.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -require('../src/setup_node_env'); -require('../src/dev/run_check_published_api_changes'); diff --git a/src/core/README.md b/src/core/README.md index 4dd045f37b483..08dd2f49f7f72 100644 --- a/src/core/README.md +++ b/src/core/README.md @@ -32,17 +32,3 @@ by the "legacy" Kibana may be rejected by the `core` now. `core` has its own [logging system](./server/logging/README.mdx) and will output log records directly (e.g. to file or terminal) when configured. When no specific configuration is provided, logs are forwarded to the "legacy" Kibana so that they look the same as the rest of the log records throughout Kibana. - -## Core API Review -To provide a stable API for plugin developers, it is important that the Core Public and Server API's are stable and -well documented. To reduce the chance of regressions, development on the Core API's includes an API signature review -process described below. Changes to the API signature which have not been accepted will cause the build to fail. - -When changes to the Core API's signatures are made, the following process needs to be followed: -1. After changes have been made, run `yarn docs:acceptApiChanges` which performs the following: - - Recompiles all typescript typings files - - Updates the API review files `src/core/public/kibana.api.md` and `src/core/server/kibana.api.md` - - Updates the Core API documentation in `docs/development/core/` -2. Review and commit the updated API Review files and documentation -3. Clearly flag any breaking changes in your pull request - diff --git a/src/dev/run_check_published_api_changes.ts b/src/dev/run_check_published_api_changes.ts deleted file mode 100644 index 7ca27e51dd4b5..0000000000000 --- a/src/dev/run_check_published_api_changes.ts +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { ToolingLog } from '@kbn/tooling-log'; -import { getTimeReporter } from '@kbn/ci-stats-reporter'; -import { - Extractor, - IConfigFile, - ExtractorLogLevel, - ExtractorConfig, - ExtractorResult, - ExtractorMessage, -} from '@microsoft/api-extractor'; -import chalk from 'chalk'; -import dedent from 'dedent'; -import execa from 'execa'; -import fs from 'fs'; -import path from 'path'; -import getopts from 'getopts'; - -const log = new ToolingLog({ - level: 'info', - writeTo: process.stdout, -}); - -const runStartTime = Date.now(); -const reportTime = getTimeReporter(log, 'scripts/check_published_api_changes'); - -/* - * Step 1: execute build:types - * This users tsconfig.types.json to generate types in `target/types` - * Step 2: run Api Extractor to detect API changes - * Step 3: generate new docs if needed - */ - -const getReportFileName = (folder: string) => { - switch (true) { - case folder.includes('public'): - return 'public'; - case folder.includes('server'): - return 'server'; - case folder.includes('common'): - return 'common'; - default: - throw new Error( - `folder "${folder}" expected to include one of ["public", "server", "common"]` - ); - } -}; - -const apiExtractorConfig = (folder: string): ExtractorConfig => { - const fname = getReportFileName(folder); - const config: IConfigFile = { - newlineKind: 'lf', - compiler: { - tsconfigFilePath: '/tsconfig.json', - }, - projectFolder: path.resolve('./'), - mainEntryPointFilePath: `target/types/${folder}/index.d.ts`, - apiReport: { - enabled: true, - reportFileName: `${fname}.api.md`, - reportFolder: `/src/${folder}/`, - reportTempFolder: `/build/${folder}/`, - }, - docModel: { - enabled: true, - apiJsonFilePath: `./build/${folder}/${fname}.api.json`, - }, - tsdocMetadata: { - enabled: false, - }, - messages: { - extractorMessageReporting: { - default: { - logLevel: 'warning' as ExtractorLogLevel.Warning, - addToApiReportFile: true, - }, - 'ae-internal-missing-underscore': { - logLevel: 'none' as ExtractorLogLevel.None, - addToApiReportFile: false, - }, - }, - }, - }; - const cfg = ExtractorConfig.prepare({ - configObject: config, - configObjectFullPath: undefined, - packageJsonFullPath: path.resolve('package.json'), - }); - - return cfg; -}; - -const runBuildTypes = async () => { - await execa('yarn', ['run', 'build:types']); -}; - -const runApiDocumenter = async (folder: string) => { - const sourceFolder = `./build/${folder}`; - const targetFolder = `./docs/development/${folder}`; - log.info(`Generating docs from ${sourceFolder} into ${targetFolder}...`); - await execa('api-documenter', ['generate', '-i', sourceFolder, '-o', targetFolder], { - preferLocal: true, - }); -}; - -const renameExtractedApiPackageName = async (folder: string) => { - const fname = getReportFileName(folder); - const jsonApiFile = `build/${folder}/${fname}.api.json`; - log.info(`Updating ${jsonApiFile}...`); - const json = JSON.parse(fs.readFileSync(jsonApiFile).toString()); - json.name = json.canonicalReference = `kibana-plugin-${folder.replace(/\//g, '-')}`; - fs.writeFileSync(jsonApiFile, JSON.stringify(json, null, 2)); -}; - -/** - * Runs api-extractor with a custom logger in order to extract results from the process - * - */ -const runApiExtractor = (folder: string, acceptChanges: boolean = false): ExtractorResult => { - const config = apiExtractorConfig(folder); - const options = { - // Indicates that API Extractor is running as part of a local build, - // e.g. on developer's machine. For example, if the *.api.md output file - // has differences, it will be automatically overwritten for a - // local build, whereas this should report an error for a production build. - localBuild: acceptChanges, - messageCallback: (message: ExtractorMessage) => { - if (message.messageId === 'console-api-report-not-copied') { - // ConsoleMessageId.ApiReportNotCopied - log.warning(`You have changed the signature of the ${folder} public API`); - log.warning( - 'To accept these changes run `node scripts/check_published_api_changes.js --accept` and then:\n' + - "\t 1. Commit the updated documentation and API review file '" + - config.reportFilePath + - "' \n" + - "\t 2. Describe the change in your PR including whether it's a major, minor or patch" - ); - message.handled = true; - } else if (message.messageId === 'console-api-report-copied') { - // ConsoleMessageId.ApiReportCopied - log.warning(`You have changed the signature of the ${folder} public API`); - log.warning( - "Please commit the updated API documentation and the API review file: '" + - config.reportFilePath - ); - message.handled = true; - } else if (message.messageId === 'console-api-report-unchanged') { - // ConsoleMessageId.ApiReportUnchanged - log.info(`${folder} API: no changes detected ✔`); - message.handled = true; - } - }, - }; - - return Extractor.invoke(config, options); -}; - -interface Options { - accept: boolean; - docs: boolean; - help: boolean; - filter: string; -} - -async function run(folder: string, { opts }: { opts: Options }): Promise { - log.info(`${folder} API: checking for changes in API signature...`); - - const { apiReportChanged, succeeded } = runApiExtractor(folder, opts.accept); - - // If we're not accepting changes and there's a failure, exit. - if (!opts.accept && !succeeded) { - return false; - } - - // Attempt to generate docs even if api-extractor didn't succeed - if ((opts.accept && apiReportChanged) || opts.docs) { - try { - await renameExtractedApiPackageName(folder); - await runApiDocumenter(folder); - } catch (e) { - log.error(e); - return false; - } - - log.info(`${folder} API: updated documentation ✔`); - } - - // If the api signature changed or any errors or warnings occured, exit with an error - // NOTE: Because of https://github.com/Microsoft/web-build-tools/issues/1258 - // api-extractor will not return `succeeded: false` when the API changes. - return !apiReportChanged && succeeded; -} - -(async () => { - const extraFlags: string[] = []; - const opts = getopts(process.argv.slice(2), { - boolean: ['accept', 'docs', 'help'], - string: ['filter'], - default: { - project: undefined, - }, - unknown(name) { - extraFlags.push(name); - return false; - }, - }) as any as Options; - - if (extraFlags.length > 0) { - for (const flag of extraFlags) { - log.error(`Unknown flag: ${flag}`); - } - - opts.help = true; - } - - const folders = ['core/public', 'core/server']; - - if (opts.help) { - process.stdout.write( - dedent(chalk` - {dim usage:} node scripts/check_published_api_changes [...options] - - Checks for any changes to the Kibana shared API - - Examples: - - {dim # Checks for any changes to the Kibana shared API} - {dim $} node scripts/check_published_api_changes - - {dim # Checks for any changes to the Kibana shared API and updates the documentation} - {dim $} node scripts/check_published_api_changes --docs - - {dim # Checks for and automatically accepts and updates documentation for any changes to the Kibana shared API} - {dim $} node scripts/check_published_api_changes --accept - - {dim # Only checks the core/public directory} - {dim $} node scripts/check_published_api_changes --filter=core/public - - Options: - --accept {dim Accepts all changes by updating the API Review files and documentation} - --docs {dim Updates the API documentation} - --filter {dim RegExp that folder names must match, folders: [${folders.join(', ')}]} - --help {dim Show this message} - `) - ); - process.stdout.write('\n'); - return !(extraFlags.length > 0); - } - - log.info('Building types for api extractor...'); - await runBuildTypes(); - log.info('Types for api extractor has been built'); - - const filteredFolders = folders.filter((folder) => - opts.filter.length ? folder.match(opts.filter) : true - ); - const results = []; - for (const folder of filteredFolders) { - results.push(await run(folder, { opts })); - } - - if (results.includes(false)) { - reportTime(runStartTime, 'error', { - success: false, - ...opts, - }); - process.exitCode = 1; - } else { - reportTime(runStartTime, 'total', { - success: true, - ...opts, - }); - } -})().catch((e) => { - reportTime(runStartTime, 'error', { - success: false, - error: e.message, - }); - log.error(e); - process.exitCode = 1; -}); diff --git a/test/scripts/checks/doc_api_changes.sh b/test/scripts/checks/doc_api_changes.sh deleted file mode 100755 index f2f508fd8f7d4..0000000000000 --- a/test/scripts/checks/doc_api_changes.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -source src/dev/ci_setup/setup_env.sh - -checks-reporter-with-killswitch "Check Doc API Changes" \ - node scripts/check_published_api_changes diff --git a/test/scripts/jenkins_unit.sh b/test/scripts/jenkins_unit.sh index b852a5b313ad9..e0ff16f387e3d 100755 --- a/test/scripts/jenkins_unit.sh +++ b/test/scripts/jenkins_unit.sh @@ -16,7 +16,6 @@ if [[ -z "$CODE_COVERAGE" ]] ; then ./test/scripts/checks/telemetry.sh ./test/scripts/checks/ts_projects.sh ./test/scripts/checks/jest_configs.sh - ./test/scripts/checks/doc_api_changes.sh ./test/scripts/checks/type_check.sh ./test/scripts/checks/bundle_limits.sh ./test/scripts/checks/i18n.sh diff --git a/vars/tasks.groovy b/vars/tasks.groovy index ee440c9c11731..0f44ad0658043 100644 --- a/vars/tasks.groovy +++ b/vars/tasks.groovy @@ -8,7 +8,6 @@ def check() { kibanaPipeline.scriptTask('Check Telemetry Schema', 'test/scripts/checks/telemetry.sh'), kibanaPipeline.scriptTask('Check TypeScript Projects', 'test/scripts/checks/ts_projects.sh'), kibanaPipeline.scriptTask('Check Jest Configs', 'test/scripts/checks/jest_configs.sh'), - kibanaPipeline.scriptTask('Check Doc API Changes', 'test/scripts/checks/doc_api_changes.sh'), kibanaPipeline.scriptTask('Check @kbn/pm Distributable', 'test/scripts/checks/kbn_pm_dist.sh'), kibanaPipeline.scriptTask('Check Plugin List Docs', 'test/scripts/checks/plugin_list_docs.sh'), kibanaPipeline.scriptTask('Check Types and Public API Docs', 'test/scripts/checks/type_check_plugin_public_api_docs.sh'), From 02bc0e97bbc109eb2c5f155c0769d0a9bab26030 Mon Sep 17 00:00:00 2001 From: "Joey F. Poon" Date: Tue, 21 Jun 2022 11:03:29 -0500 Subject: [PATCH 08/61] [Security Solution] redirect old isolate / release routes (#134536) * [Security Solution] redirect old isolate / release routes deprecate old isolate / release routes and 308 to newer routes * add header check to tests --- .../common/endpoint/constants.ts | 2 +- .../server/endpoint/routes/actions/index.ts | 4 - .../endpoint/routes/actions/isolation.test.ts | 568 ------------------ .../endpoint/routes/actions/isolation.ts | 294 --------- .../routes/actions/response_actions.test.ts | 32 +- .../routes/actions/response_actions.ts | 50 +- 6 files changed, 74 insertions(+), 876 deletions(-) delete mode 100644 x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts delete mode 100644 x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/constants.ts b/x-pack/plugins/security_solution/common/endpoint/constants.ts index 13747e53025c7..6d4a3407e644b 100644 --- a/x-pack/plugins/security_solution/common/endpoint/constants.ts +++ b/x-pack/plugins/security_solution/common/endpoint/constants.ts @@ -58,7 +58,7 @@ const BASE_ENDPOINT_ACTION_ROUTE = `${BASE_ENDPOINT_ROUTE}/action`; /** Action Response Routes */ export const ISOLATE_HOST_ROUTE_V2 = `${BASE_ENDPOINT_ACTION_ROUTE}/isolate`; -export const RELEASE_HOST_ROUTE = `${BASE_ENDPOINT_ACTION_ROUTE}/release`; +export const UNISOLATE_HOST_ROUTE_V2 = `${BASE_ENDPOINT_ACTION_ROUTE}/unisolate`; export const GET_RUNNING_PROCESSES_ROUTE = `${BASE_ENDPOINT_ACTION_ROUTE}/running_procs`; export const KILL_PROCESS_ROUTE = `${BASE_ENDPOINT_ACTION_ROUTE}/kill_process`; export const SUSPEND_PROCESS_ROUTE = `${BASE_ENDPOINT_ACTION_ROUTE}/suspend_process`; diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/index.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/index.ts index 318e479d7116b..e30b982fc2e9b 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/index.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/index.ts @@ -8,21 +8,17 @@ import { registerActionDetailsRoutes } from './details'; import { SecuritySolutionPluginRouter } from '../../../types'; import { EndpointAppContext } from '../../types'; -import { registerHostIsolationRoutes } from './isolation'; import { registerActionStatusRoutes } from './status'; import { registerActionAuditLogRoutes } from './audit_log'; import { registerActionListRoutes } from './list'; import { registerResponseActionRoutes } from './response_actions'; -export * from './isolation'; - // wrap route registration export function registerActionRoutes( router: SecuritySolutionPluginRouter, endpointContext: EndpointAppContext ) { - registerHostIsolationRoutes(router, endpointContext); registerActionStatusRoutes(router, endpointContext); registerActionAuditLogRoutes(router, endpointContext); registerActionListRoutes(router, endpointContext); diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts deleted file mode 100644 index bd3484a0e7518..0000000000000 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts +++ /dev/null @@ -1,568 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -/* eslint-disable @typescript-eslint/no-explicit-any */ - -import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { AwaitedProperties } from '@kbn/utility-types'; -import { - KibanaRequest, - KibanaResponseFactory, - RequestHandler, - RouteConfig, -} from '@kbn/core/server'; -import { - elasticsearchServiceMock, - httpServerMock, - httpServiceMock, - loggingSystemMock, - savedObjectsClientMock, -} from '@kbn/core/server/mocks'; -import { parseExperimentalConfigValue } from '../../../../common/experimental_features'; -import { EndpointAppContextService } from '../../endpoint_app_context_services'; -import { - createMockEndpointAppContextServiceSetupContract, - createMockEndpointAppContextServiceStartContract, - createRouteHandlerContext, -} from '../../mocks'; -import { NoParametersRequestSchema } from '../../../../common/endpoint/schema/actions'; -import { registerHostIsolationRoutes } from './isolation'; -import { createMockConfig } from '../../../lib/detection_engine/routes/__mocks__'; -import { LicenseService } from '../../../../common/license'; -import { Subject } from 'rxjs'; -import { ILicense } from '@kbn/licensing-plugin/common/types'; -import { licenseMock } from '@kbn/licensing-plugin/common/licensing.mock'; -import { License } from '@kbn/licensing-plugin/common/license'; -import { - ISOLATE_HOST_ROUTE, - UNISOLATE_HOST_ROUTE, - metadataTransformPrefix, - ENDPOINT_ACTIONS_INDEX, -} from '../../../../common/endpoint/constants'; -import { - EndpointAction, - HostIsolationRequestBody, - HostIsolationResponse, - HostMetadata, - LogsEndpointAction, -} from '../../../../common/endpoint/types'; -import { EndpointDocGenerator } from '../../../../common/endpoint/generate_data'; -import { legacyMetadataSearchResponseMock } from '../metadata/support/test_support'; -import { AGENT_ACTIONS_INDEX, ElasticsearchAssetType } from '@kbn/fleet-plugin/common'; -import { CasesClientMock } from '@kbn/cases-plugin/server/client/mocks'; -import { EndpointAuthz } from '../../../../common/endpoint/types/authz'; -import type { PackageClient } from '@kbn/fleet-plugin/server'; -import { createMockPackageService } from '@kbn/fleet-plugin/server/mocks'; -import { SecuritySolutionRequestHandlerContextMock } from '../../../lib/detection_engine/routes/__mocks__/request_context'; - -interface CallRouteInterface { - body?: HostIsolationRequestBody; - idxResponse?: any; - searchResponse?: HostMetadata; - mockUser?: any; - license?: License; - authz?: Partial; -} - -const Platinum = licenseMock.createLicense({ license: { type: 'platinum', mode: 'platinum' } }); -const Gold = licenseMock.createLicense({ license: { type: 'gold', mode: 'gold' } }); - -describe('Host Isolation', () => { - describe('schema', () => { - it('should require at least 1 Endpoint ID', () => { - expect(() => { - NoParametersRequestSchema.body.validate({}); - }).toThrow(); - }); - - it('should accept an Endpoint ID as the only required field', () => { - expect(() => { - NoParametersRequestSchema.body.validate({ - endpoint_ids: ['ABC-XYZ-000'], - }); - }).not.toThrow(); - }); - - it('should accept a comment', () => { - expect(() => { - NoParametersRequestSchema.body.validate({ - endpoint_ids: ['ABC-XYZ-000'], - comment: 'a user comment', - }); - }).not.toThrow(); - }); - - it('should accept alert IDs', () => { - expect(() => { - NoParametersRequestSchema.body.validate({ - endpoint_ids: ['ABC-XYZ-000'], - alert_ids: ['0000000-000-00'], - }); - }).not.toThrow(); - }); - - it('should accept case IDs', () => { - expect(() => { - NoParametersRequestSchema.body.validate({ - endpoint_ids: ['ABC-XYZ-000'], - case_ids: ['000000000-000-000'], - }); - }).not.toThrow(); - }); - }); - - describe('handler', () => { - let endpointAppContextService: EndpointAppContextService; - let mockResponse: jest.Mocked; - let licenseService: LicenseService; - let licenseEmitter: Subject; - - let callRoute: ( - routePrefix: string, - opts: CallRouteInterface, - indexExists?: { endpointDsExists: boolean } - ) => Promise>; - const superUser = { - username: 'superuser', - roles: ['superuser'], - }; - - const docGen = new EndpointDocGenerator(); - - beforeEach(() => { - // instantiate... everything - const mockScopedClient = elasticsearchServiceMock.createScopedClusterClient(); - const mockClusterClient = elasticsearchServiceMock.createClusterClient(); - mockClusterClient.asScoped.mockReturnValue(mockScopedClient); - const routerMock = httpServiceMock.createRouter(); - mockResponse = httpServerMock.createResponseFactory(); - const startContract = createMockEndpointAppContextServiceStartContract(); - endpointAppContextService = new EndpointAppContextService(); - const mockSavedObjectClient = savedObjectsClientMock.create(); - const mockPackageService = createMockPackageService(); - const mockedPackageClient = mockPackageService.asInternalUser as jest.Mocked; - mockedPackageClient.getInstallation.mockResolvedValue({ - installed_kibana: [], - package_assets: [], - es_index_patterns: {}, - name: '', - version: '', - install_status: 'installed', - install_version: '', - install_started_at: '', - install_source: 'registry', - installed_es: [ - { - id: 'logs-endpoint.events.security', - type: ElasticsearchAssetType.indexTemplate, - }, - { - id: `${metadataTransformPrefix}-0.16.0-dev.0`, - type: ElasticsearchAssetType.transform, - }, - ], - keep_policies_up_to_date: false, - }); - - licenseEmitter = new Subject(); - licenseService = new LicenseService(); - licenseService.start(licenseEmitter); - - endpointAppContextService.setup(createMockEndpointAppContextServiceSetupContract()); - endpointAppContextService.start({ - ...startContract, - licenseService, - packageService: mockPackageService, - }); - - // add the host isolation route handlers to routerMock - registerHostIsolationRoutes(routerMock, { - logFactory: loggingSystemMock.create(), - service: endpointAppContextService, - config: () => Promise.resolve(createMockConfig()), - experimentalFeatures: parseExperimentalConfigValue(createMockConfig().enableExperimental), - }); - - // define a convenience function to execute an API call for a given route, body, and mocked response from ES - // it returns the requestContext mock used in the call, to assert internal calls (e.g. the indexed document) - callRoute = async ( - routePrefix: string, - { body, idxResponse, searchResponse, mockUser, license, authz = {} }: CallRouteInterface, - indexExists?: { endpointDsExists: boolean } - ): Promise> => { - const asUser = mockUser ? mockUser : superUser; - (startContract.security.authc.getCurrentUser as jest.Mock).mockImplementationOnce( - () => asUser - ); - - const ctx = createRouteHandlerContext(mockScopedClient, mockSavedObjectClient); - - ctx.securitySolution.endpointAuthz = { - ...ctx.securitySolution.endpointAuthz, - ...authz, - }; - - // mock _index_template - ctx.core.elasticsearch.client.asInternalUser.indices.existsIndexTemplate.mockResponseImplementationOnce( - () => { - if (indexExists) { - return { - body: true, - statusCode: 200, - }; - } - return { - body: false, - statusCode: 404, - }; - } - ); - - const withIdxResp = idxResponse ? idxResponse : { statusCode: 201 }; - ctx.core.elasticsearch.client.asInternalUser.index.mockResponseImplementation( - () => withIdxResp - ); - ctx.core.elasticsearch.client.asCurrentUser.search.mockResponseImplementation(() => { - return { - body: legacyMetadataSearchResponseMock(searchResponse), - }; - }); - - const withLicense = license ? license : Platinum; - licenseEmitter.next(withLicense); - - const mockRequest = httpServerMock.createKibanaRequest({ body }); - const [, routeHandler]: [ - RouteConfig, - RequestHandler - ] = routerMock.post.mock.calls.find(([{ path }]) => path.startsWith(routePrefix))!; - - await routeHandler(ctx, mockRequest, mockResponse); - - return ctx; - }; - }); - - afterEach(() => { - endpointAppContextService.stop(); - licenseService.stop(); - licenseEmitter.complete(); - }); - it('succeeds when an endpoint ID is provided', async () => { - await callRoute(ISOLATE_HOST_ROUTE, { body: { endpoint_ids: ['XYZ'] } }); - expect(mockResponse.ok).toBeCalled(); - }); - it('reports elasticsearch errors creating an action', async () => { - const ErrMessage = 'something went wrong?'; - - await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - idxResponse: { - statusCode: 500, - body: { - result: ErrMessage, - }, - }, - }); - expect(mockResponse.ok).not.toBeCalled(); - const response = mockResponse.customError.mock.calls[0][0]; - expect(response.statusCode).toEqual(500); - expect((response.body as Error).message).toEqual(ErrMessage); - }); - it('accepts a comment field', async () => { - await callRoute(ISOLATE_HOST_ROUTE, { body: { endpoint_ids: ['XYZ'], comment: 'XYZ' } }); - expect(mockResponse.ok).toBeCalled(); - }); - it('sends the action to the requested agent', async () => { - const metadataResponse = docGen.generateHostMetadata(); - const AgentID = metadataResponse.elastic.agent.id; - const ctx = await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['ABC-XYZ-000'] }, - searchResponse: metadataResponse, - }); - const actionDoc: EndpointAction = ( - ctx.core.elasticsearch.client.asInternalUser.index.mock - .calls[0][0] as estypes.IndexRequest - ).body!; - expect(actionDoc.agents).toContain(AgentID); - }); - it('records the user who performed the action to the action record', async () => { - const testU = { username: 'testuser', roles: ['superuser'] }; - const ctx = await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - mockUser: testU, - }); - const actionDoc: EndpointAction = ( - ctx.core.elasticsearch.client.asInternalUser.index.mock - .calls[0][0] as estypes.IndexRequest - ).body!; - expect(actionDoc.user_id).toEqual(testU.username); - }); - it('records the comment in the action payload', async () => { - const CommentText = "I am isolating this because it's Friday"; - const ctx = await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'], comment: CommentText }, - }); - const actionDoc: EndpointAction = ( - ctx.core.elasticsearch.client.asInternalUser.index.mock - .calls[0][0] as estypes.IndexRequest - ).body!; - expect(actionDoc.data.comment).toEqual(CommentText); - }); - it('creates an action and returns its ID', async () => { - const ctx = await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'], comment: 'XYZ' }, - }); - const actionDoc: EndpointAction = ( - ctx.core.elasticsearch.client.asInternalUser.index.mock - .calls[0][0] as estypes.IndexRequest - ).body!; - const actionID = actionDoc.action_id; - expect(mockResponse.ok).toBeCalled(); - expect((mockResponse.ok.mock.calls[0][0]?.body as HostIsolationResponse).action).toEqual( - actionID - ); - }); - it('records the timeout in the action payload', async () => { - const ctx = await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - }); - const actionDoc: EndpointAction = ( - ctx.core.elasticsearch.client.asInternalUser.index.mock - .calls[0][0] as estypes.IndexRequest - ).body!; - expect(actionDoc.timeout).toEqual(300); - }); - it('sends the action to the correct agent when endpoint ID is given', async () => { - const doc = docGen.generateHostMetadata(); - const AgentID = doc.elastic.agent.id; - - const ctx = await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - searchResponse: doc, - }); - const actionDoc: EndpointAction = ( - ctx.core.elasticsearch.client.asInternalUser.index.mock - .calls[0][0] as estypes.IndexRequest - ).body!; - expect(actionDoc.agents).toContain(AgentID); - }); - - it('sends the isolate command payload from the isolate route', async () => { - const ctx = await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - }); - const actionDoc: EndpointAction = ( - ctx.core.elasticsearch.client.asInternalUser.index.mock - .calls[0][0] as estypes.IndexRequest - ).body!; - expect(actionDoc.data.command).toEqual('isolate'); - }); - it('sends the unisolate command payload from the unisolate route', async () => { - const ctx = await callRoute(UNISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - }); - const actionDoc: EndpointAction = ( - ctx.core.elasticsearch.client.asInternalUser.index.mock - .calls[0][0] as estypes.IndexRequest - ).body!; - expect(actionDoc.data.command).toEqual('unisolate'); - }); - - describe('With endpoint data streams', () => { - it('handles unisolation', async () => { - const ctx = await callRoute( - UNISOLATE_HOST_ROUTE, - { - body: { endpoint_ids: ['XYZ'] }, - }, - { endpointDsExists: true } - ); - - const indexDoc = ctx.core.elasticsearch.client.asInternalUser.index; - const actionDocs: [ - { index: string; body?: LogsEndpointAction }, - { index: string; body?: EndpointAction } - ] = [ - indexDoc.mock.calls[0][0] as estypes.IndexRequest, - indexDoc.mock.calls[1][0] as estypes.IndexRequest, - ]; - - expect(actionDocs[0].index).toEqual(ENDPOINT_ACTIONS_INDEX); - expect(actionDocs[1].index).toEqual(AGENT_ACTIONS_INDEX); - expect(actionDocs[0].body!.EndpointActions.data.command).toEqual('unisolate'); - expect(actionDocs[1].body!.data.command).toEqual('unisolate'); - }); - - it('handles isolation', async () => { - const ctx = await callRoute( - ISOLATE_HOST_ROUTE, - { - body: { endpoint_ids: ['XYZ'] }, - }, - { endpointDsExists: true } - ); - const indexDoc = ctx.core.elasticsearch.client.asInternalUser.index; - const actionDocs: [ - { index: string; body?: LogsEndpointAction }, - { index: string; body?: EndpointAction } - ] = [ - indexDoc.mock.calls[0][0] as estypes.IndexRequest, - indexDoc.mock.calls[1][0] as estypes.IndexRequest, - ]; - - expect(actionDocs[0].index).toEqual(ENDPOINT_ACTIONS_INDEX); - expect(actionDocs[1].index).toEqual(AGENT_ACTIONS_INDEX); - expect(actionDocs[0].body!.EndpointActions.data.command).toEqual('isolate'); - expect(actionDocs[1].body!.data.command).toEqual('isolate'); - }); - - it('handles errors', async () => { - const ErrMessage = 'Uh oh!'; - await callRoute( - UNISOLATE_HOST_ROUTE, - { - body: { endpoint_ids: ['XYZ'] }, - idxResponse: { - statusCode: 500, - body: { - result: ErrMessage, - }, - }, - }, - { endpointDsExists: true } - ); - - expect(mockResponse.ok).not.toBeCalled(); - const response = mockResponse.customError.mock.calls[0][0]; - expect(response.statusCode).toEqual(500); - expect((response.body as Error).message).toEqual(ErrMessage); - }); - }); - - describe('License Level', () => { - it('allows platinum license levels to isolate hosts', async () => { - await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - license: Platinum, - }); - expect(mockResponse.ok).toBeCalled(); - }); - - it('prohibits isolating hosts if no authz for it', async () => { - await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - authz: { canIsolateHost: false }, - license: Gold, - }); - - expect(mockResponse.forbidden).toBeCalled(); - }); - - it('allows any license level to unisolate', async () => { - licenseEmitter.next(Gold); - await callRoute(UNISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - license: Gold, - }); - expect(mockResponse.ok).toBeCalled(); - }); - }); - - describe('User Authorization Level', () => { - it('allows user to perform isolation when canIsolateHost is true', async () => { - await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - }); - expect(mockResponse.ok).toBeCalled(); - }); - - it('allows user to perform unisolation when canUnIsolateHost is true', async () => { - await callRoute(UNISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - }); - expect(mockResponse.ok).toBeCalled(); - }); - - it('prohibits user from performing isolation if canIsolateHost is false', async () => { - await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - authz: { canIsolateHost: false }, - }); - expect(mockResponse.forbidden).toBeCalled(); - }); - - it('prohibits user from performing un-isolation if canUnIsolateHost is false', async () => { - await callRoute(UNISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'] }, - authz: { canUnIsolateHost: false }, - }); - expect(mockResponse.forbidden).toBeCalled(); - }); - }); - - describe('Cases', () => { - let casesClient: CasesClientMock; - - const getCaseIdsFromAttachmentAddService = () => { - return casesClient.attachments.add.mock.calls.map(([addArgs]) => addArgs.caseId); - }; - - beforeEach(async () => { - casesClient = (await endpointAppContextService.getCasesClient( - {} as KibanaRequest - )) as CasesClientMock; - - let counter = 1; - casesClient.cases.getCasesByAlertID.mockImplementation(async () => { - return [ - { - id: `case-${counter++}`, - title: 'case', - }, - ]; - }); - }); - - it('logs a comment to the provided cases', async () => { - await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'], case_ids: ['one', 'two'] }, - }); - - expect(casesClient.attachments.add).toHaveBeenCalledTimes(2); - expect(getCaseIdsFromAttachmentAddService()).toEqual( - expect.arrayContaining(['one', 'two']) - ); - }); - - it('logs a comment to any cases associated with the given alerts', async () => { - await callRoute(ISOLATE_HOST_ROUTE, { - body: { endpoint_ids: ['XYZ'], alert_ids: ['one', 'two'] }, - }); - - expect(getCaseIdsFromAttachmentAddService()).toEqual( - expect.arrayContaining(['case-1', 'case-2']) - ); - }); - - it('logs a comment to any cases provided on input along with cases associated with the given alerts', async () => { - await callRoute(ISOLATE_HOST_ROUTE, { - // 'case-1` provided on `case_ids` should be dedupped - body: { - endpoint_ids: ['XYZ'], - case_ids: ['ONE', 'TWO', 'case-1'], - alert_ids: ['one', 'two'], - }, - }); - - expect(casesClient.attachments.add).toHaveBeenCalledTimes(4); - expect(getCaseIdsFromAttachmentAddService()).toEqual( - expect.arrayContaining(['ONE', 'TWO', 'case-1', 'case-2']) - ); - }); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.ts deleted file mode 100644 index bd0e3f07ce6a8..0000000000000 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.ts +++ /dev/null @@ -1,294 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import moment from 'moment'; -import { RequestHandler, Logger } from '@kbn/core/server'; -import uuid from 'uuid'; -import { TypeOf } from '@kbn/config-schema'; -import { CommentType } from '@kbn/cases-plugin/common'; -import { CasesByAlertId } from '@kbn/cases-plugin/common/api/cases/case'; -import { AGENT_ACTIONS_INDEX } from '@kbn/fleet-plugin/common'; -import { NoParametersRequestSchema } from '../../../../common/endpoint/schema/actions'; -import { - ENDPOINT_ACTIONS_DS, - ENDPOINT_ACTION_RESPONSES_DS, - ISOLATE_HOST_ROUTE, - UNISOLATE_HOST_ROUTE, - failedFleetActionErrorCode, -} from '../../../../common/endpoint/constants'; -import { - EndpointAction, - HostMetadata, - LogsEndpointAction, - LogsEndpointActionResponse, -} from '../../../../common/endpoint/types'; -import { - SecuritySolutionPluginRouter, - SecuritySolutionRequestHandlerContext, -} from '../../../types'; -import { getMetadataForEndpoints } from '../../services'; -import { EndpointAppContext } from '../../types'; -import { APP_ID } from '../../../../common/constants'; -import { doLogsEndpointActionDsExists } from '../../utils'; -import { withEndpointAuthz } from '../with_endpoint_authz'; - -/** - * Registers the Host-(un-)isolation routes - */ -export function registerHostIsolationRoutes( - router: SecuritySolutionPluginRouter, - endpointContext: EndpointAppContext -) { - const logger = endpointContext.logFactory.get('hostIsolation'); - - // perform isolation - router.post( - { - path: ISOLATE_HOST_ROUTE, - validate: NoParametersRequestSchema, - options: { authRequired: true, tags: ['access:securitySolution'] }, - }, - withEndpointAuthz( - { all: ['canIsolateHost'] }, - logger, - isolationRequestHandler(endpointContext, true) - ) - ); - - // perform UN-isolate - router.post( - { - path: UNISOLATE_HOST_ROUTE, - validate: NoParametersRequestSchema, - options: { authRequired: true, tags: ['access:securitySolution'] }, - }, - withEndpointAuthz( - { all: ['canUnIsolateHost'] }, - logger, - isolationRequestHandler(endpointContext, false) - ) - ); -} - -const createFailedActionResponseEntry = async ({ - context, - doc, - logger, -}: { - context: SecuritySolutionRequestHandlerContext; - doc: LogsEndpointActionResponse; - logger: Logger; -}): Promise => { - // 8.0+ requires internal user to write to system indices - const esClient = (await context.core).elasticsearch.client.asInternalUser; - try { - await esClient.index({ - index: `${ENDPOINT_ACTION_RESPONSES_DS}-default`, - body: { - ...doc, - error: { - code: failedFleetActionErrorCode, - message: 'Failed to deliver action request to fleet', - }, - }, - }); - } catch (e) { - logger.error(e); - } -}; - -export const isolationRequestHandler = function ( - endpointContext: EndpointAppContext, - isolate: boolean -): RequestHandler< - unknown, - unknown, - TypeOf, - SecuritySolutionRequestHandlerContext -> { - return async (context, req, res) => { - endpointContext.service.getFeatureUsageService().notifyUsage('HOST_ISOLATION'); - const user = endpointContext.service.security?.authc.getCurrentUser(req); - - // fetch the Agent IDs to send the commands to - const endpointIDs = [...new Set(req.body.endpoint_ids)]; // dedupe - const endpointData = await getMetadataForEndpoints(endpointIDs, context); - - const casesClient = await endpointContext.service.getCasesClient(req); - - // convert any alert IDs into cases - let caseIDs: string[] = req.body.case_ids?.slice() || []; - if (req.body.alert_ids && req.body.alert_ids.length > 0) { - const newIDs: string[][] = await Promise.all( - req.body.alert_ids.map(async (a: string) => { - const cases: CasesByAlertId = await casesClient.cases.getCasesByAlertID({ - alertID: a, - options: { owner: APP_ID }, - }); - return cases.map((caseInfo): string => { - return caseInfo.id; - }); - }) - ); - caseIDs = caseIDs.concat(...newIDs); - } - caseIDs = [...new Set(caseIDs)]; - - // create an Action ID and dispatch it to ES & Fleet Server - const actionID = uuid.v4(); - - let fleetActionIndexResult; - let logsEndpointActionsResult; - - const agents = endpointData.map((endpoint: HostMetadata) => endpoint.elastic.agent.id); - const doc = { - '@timestamp': moment().toISOString(), - agent: { - id: agents, - }, - EndpointActions: { - action_id: actionID, - expiration: moment().add(2, 'weeks').toISOString(), - type: 'INPUT_ACTION', - input_type: 'endpoint', - data: { - command: isolate ? 'isolate' : 'unisolate', - comment: req.body.comment ?? undefined, - }, - } as Omit, - user: { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - id: user!.username, - }, - }; - - // if .logs-endpoint.actions data stream exists - // try to create action request record in .logs-endpoint.actions DS as the current user - // (from >= v7.16, use this check to ensure the current user has privileges to write to the new index) - // and allow only users with superuser privileges to write to fleet indices - const logger = endpointContext.logFactory.get('host-isolation'); - const doesLogsEndpointActionsDsExist = await doLogsEndpointActionDsExists({ - context, - logger, - dataStreamName: ENDPOINT_ACTIONS_DS, - }); - - // 8.0+ requires internal user to write to system indices - const esClient = (await context.core).elasticsearch.client.asInternalUser; - - // if the new endpoint indices/data streams exists - // write the action request to the new endpoint index - if (doesLogsEndpointActionsDsExist) { - try { - logsEndpointActionsResult = await esClient.index( - { - index: `${ENDPOINT_ACTIONS_DS}-default`, - body: { - ...doc, - }, - refresh: 'wait_for', - }, - { meta: true } - ); - if (logsEndpointActionsResult.statusCode !== 201) { - return res.customError({ - statusCode: 500, - body: { - message: logsEndpointActionsResult.body.result, - }, - }); - } - } catch (e) { - return res.customError({ - statusCode: 500, - body: { message: e }, - }); - } - } - - // write actions to .fleet-actions index - try { - fleetActionIndexResult = await esClient.index( - { - index: AGENT_ACTIONS_INDEX, - body: { - ...doc.EndpointActions, - '@timestamp': doc['@timestamp'], - agents, - timeout: 300, // 5 minutes - user_id: doc.user.id, - }, - refresh: 'wait_for', - }, - { meta: true } - ); - - if (fleetActionIndexResult.statusCode !== 201) { - return res.customError({ - statusCode: 500, - body: { - message: fleetActionIndexResult.body.result, - }, - }); - } - } catch (e) { - // create entry in .logs-endpoint.action.responses-default data stream - // when writing to .fleet-actions fails - if (doesLogsEndpointActionsDsExist) { - await createFailedActionResponseEntry({ - context, - doc: { - '@timestamp': moment().toISOString(), - agent: doc.agent, - EndpointActions: { - action_id: doc.EndpointActions.action_id, - completed_at: moment().toISOString(), - started_at: moment().toISOString(), - data: doc.EndpointActions.data, - }, - }, - logger, - }); - } - return res.customError({ - statusCode: 500, - body: { message: e }, - }); - } - - // Update all cases with a comment - if (caseIDs.length > 0) { - const targets = endpointData.map((endpt: HostMetadata) => ({ - hostname: endpt.host.hostname, - endpointId: endpt.agent.id, - })); - - await Promise.all( - caseIDs.map((caseId) => - casesClient.attachments.add({ - caseId, - comment: { - type: CommentType.actions, - comment: req.body.comment || '', - actions: { - targets, - type: isolate ? 'isolate' : 'unisolate', - }, - owner: APP_ID, - }, - }) - ) - ); - } - - return res.ok({ - body: { - action: actionID, - }, - }); - }; -}; diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts index bbcb549f55f74..c91d000f8341c 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts @@ -35,12 +35,14 @@ import { parseExperimentalConfigValue } from '../../../../common/experimental_fe import { LicenseService } from '../../../../common/license'; import { ISOLATE_HOST_ROUTE_V2, - RELEASE_HOST_ROUTE, + UNISOLATE_HOST_ROUTE_V2, metadataTransformPrefix, ENDPOINT_ACTIONS_INDEX, KILL_PROCESS_ROUTE, SUSPEND_PROCESS_ROUTE, GET_RUNNING_PROCESSES_ROUTE, + ISOLATE_HOST_ROUTE, + UNISOLATE_HOST_ROUTE, } from '../../../../common/endpoint/constants'; import { ActionDetails, @@ -221,6 +223,22 @@ describe('Response actions', () => { getActionDetailsByIdSpy.mockClear(); }); + it('correctly redirects legacy isolate to new route', async () => { + await callRoute(ISOLATE_HOST_ROUTE, { body: { endpoint_ids: ['XYZ'] } }); + expect(mockResponse.custom).toBeCalled(); + const response = mockResponse.custom.mock.calls[0][0]; + expect(response.statusCode).toEqual(308); + expect(response.headers?.location).toEqual(ISOLATE_HOST_ROUTE_V2); + }); + + it('correctly redirects legacy release to new route', async () => { + await callRoute(UNISOLATE_HOST_ROUTE, { body: { endpoint_ids: ['XYZ'] } }); + expect(mockResponse.custom).toBeCalled(); + const response = mockResponse.custom.mock.calls[0][0]; + expect(response.statusCode).toEqual(308); + expect(response.headers?.location).toEqual(UNISOLATE_HOST_ROUTE_V2); + }); + it('succeeds when an endpoint ID is provided', async () => { await callRoute(ISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] } }); expect(mockResponse.ok).toBeCalled(); @@ -350,7 +368,7 @@ describe('Response actions', () => { }); it('sends the unisolate command payload from the unisolate route', async () => { - const ctx = await callRoute(RELEASE_HOST_ROUTE, { + const ctx = await callRoute(UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, }); const actionDoc: EndpointAction = ( @@ -396,7 +414,7 @@ describe('Response actions', () => { describe('With endpoint data streams', () => { it('handles unisolation', async () => { const ctx = await callRoute( - RELEASE_HOST_ROUTE, + UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, }, @@ -537,7 +555,7 @@ describe('Response actions', () => { it('handles errors', async () => { const ErrMessage = 'Uh oh!'; await callRoute( - RELEASE_HOST_ROUTE, + UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, idxResponse: { @@ -578,7 +596,7 @@ describe('Response actions', () => { it('allows any license level to unisolate', async () => { licenseEmitter.next(Gold); - await callRoute(RELEASE_HOST_ROUTE, { + await callRoute(UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, license: Gold, }); @@ -595,7 +613,7 @@ describe('Response actions', () => { }); it('allows user to perform unisolation when canUnIsolateHost is true', async () => { - await callRoute(RELEASE_HOST_ROUTE, { + await callRoute(UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, }); expect(mockResponse.ok).toBeCalled(); @@ -610,7 +628,7 @@ describe('Response actions', () => { }); it('prohibits user from performing un-isolation if canUnIsolateHost is false', async () => { - await callRoute(RELEASE_HOST_ROUTE, { + await callRoute(UNISOLATE_HOST_ROUTE_V2, { body: { endpoint_ids: ['XYZ'] }, authz: { canUnIsolateHost: false }, }); diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts index 71c61d8aacce8..5d024488d4958 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.ts @@ -22,13 +22,15 @@ import { import { APP_ID } from '../../../../common/constants'; import { ISOLATE_HOST_ROUTE_V2, - RELEASE_HOST_ROUTE, + UNISOLATE_HOST_ROUTE_V2, ENDPOINT_ACTIONS_DS, ENDPOINT_ACTION_RESPONSES_DS, failedFleetActionErrorCode, KILL_PROCESS_ROUTE, SUSPEND_PROCESS_ROUTE, GET_RUNNING_PROCESSES_ROUTE, + ISOLATE_HOST_ROUTE, + UNISOLATE_HOST_ROUTE, } from '../../../../common/endpoint/constants'; import type { EndpointAction, @@ -56,6 +58,34 @@ export function registerResponseActionRoutes( ) { const logger = endpointContext.logFactory.get('hostIsolation'); + /** + * @deprecated use ISOLATE_HOST_ROUTE_V2 instead + */ + router.post( + { + path: ISOLATE_HOST_ROUTE, + validate: NoParametersRequestSchema, + options: { authRequired: true, tags: ['access:securitySolution'] }, + }, + withEndpointAuthz({ all: ['canIsolateHost'] }, logger, redirectHandler(ISOLATE_HOST_ROUTE_V2)) + ); + + /** + * @deprecated use RELEASE_HOST_ROUTE instead + */ + router.post( + { + path: UNISOLATE_HOST_ROUTE, + validate: NoParametersRequestSchema, + options: { authRequired: true, tags: ['access:securitySolution'] }, + }, + withEndpointAuthz( + { all: ['canUnIsolateHost'] }, + logger, + redirectHandler(UNISOLATE_HOST_ROUTE_V2) + ) + ); + router.post( { path: ISOLATE_HOST_ROUTE_V2, @@ -71,7 +101,7 @@ export function registerResponseActionRoutes( router.post( { - path: RELEASE_HOST_ROUTE, + path: UNISOLATE_HOST_ROUTE_V2, validate: NoParametersRequestSchema, options: { authRequired: true, tags: ['access:securitySolution'] }, }, @@ -364,3 +394,19 @@ const createFailedActionResponseEntry = async ({ logger.error(e); } }; + +function redirectHandler( + location: string +): RequestHandler< + unknown, + unknown, + TypeOf, + SecuritySolutionRequestHandlerContext +> { + return async (_context, _req, res) => { + return res.custom({ + statusCode: 308, + headers: { location }, + }); + }; +} From e1eb3db9161243e881089019e2e3b6e1bc61cdc3 Mon Sep 17 00:00:00 2001 From: Clint Andrew Hall Date: Tue, 21 Jun 2022 11:10:00 -0500 Subject: [PATCH 09/61] [Shared UX] Move No Data Cards to packages (#134503) * [Shared UX] Move No Data Cards to packages * Consolidate cards * Fix some Regex mistakes * Adjust Storybook a bit * Adjust tests and context arrangement * Fix bugs; kill bad snapshots; improve tests --- package.json | 2 + packages/BUILD.bazel | 2 + packages/kbn-shared-ux-components/BUILD.bazel | 2 + .../src/page_template/index.ts | 2 +- .../__snapshots__/no_data_page.test.tsx.snap | 55 --- .../src/page_template/no_data_page/index.ts | 1 - ...elastic_agent_card.component.test.tsx.snap | 104 ----- .../elastic_agent_card.test.tsx.snap | 75 ---- .../__snapshots__/no_data_card.test.tsx.snap | 231 ------------ .../elastic_agent_card.component.test.tsx | 43 --- .../elastic_agent_card.component.tsx | 83 ---- .../elastic_agent_card.stories.tsx | 42 --- .../no_data_card/elastic_agent_card.test.tsx | 78 ---- .../no_data_card/elastic_agent_card.tsx | 45 --- .../no_data_card/no_data_card.stories.tsx | 37 -- .../no_data_card/no_data_card.tsx | 65 ---- .../no_data_page/no_data_card/types.ts | 34 -- .../no_data_page/no_data_page.test.tsx | 29 +- .../no_data_page/no_data_page.tsx | 21 +- .../src/page_template/no_data_page/types.ts | 4 +- .../src/config/main.ts | 3 + packages/shared-ux/card/no_data/BUILD.bazel | 143 +++++++ packages/shared-ux/card/no_data/README.mdx | 29 ++ .../card/no_data/jest.config.js} | 9 +- packages/shared-ux/card/no_data/package.json | 8 + .../no_data_card.component.test.tsx.snap | 117 ++++++ .../__snapshots__/no_data_card.test.tsx.snap | 356 ++++++++++++++++++ .../src}/assets/elastic_agent_card.svg | 0 packages/shared-ux/card/no_data/src/index.ts | 19 + packages/shared-ux/card/no_data/src/mocks.ts | 88 +++++ .../src/no_data_card.component.test.tsx | 36 ++ .../no_data/src/no_data_card.component.tsx | 136 +++++++ .../card/no_data/src/no_data_card.stories.tsx | 45 +++ .../card/no_data/src}/no_data_card.styles.ts | 0 .../card/no_data/src}/no_data_card.test.tsx | 24 +- .../card/no_data/src/no_data_card.tsx | 41 ++ .../shared-ux/card/no_data/src/services.tsx | 97 +++++ packages/shared-ux/card/no_data/tsconfig.json | 20 + .../shared-ux/link/redirect_app/src/index.tsx | 35 +- .../shared-ux/link/redirect_app/src/mocks.ts | 46 +++ .../src/redirect_app_links.component.tsx | 9 +- .../src/redirect_app_links.stories.tsx | 19 +- .../redirect_app/src/redirect_app_links.tsx | 13 +- .../link/redirect_app/src/services.tsx | 7 +- .../src/analytics_no_data_page.stories.tsx | 2 +- .../src/kibana_no_data_page.stories.tsx | 2 +- .../page/kibana_no_data/src/mocks.ts | 15 + .../page/kibana_no_data/src/services.tsx | 10 +- .../translations/translations/fr-FR.json | 9 +- .../translations/translations/ja-JP.json | 9 +- .../translations/translations/zh-CN.json | 9 +- yarn.lock | 8 + 52 files changed, 1341 insertions(+), 978 deletions(-) delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/__snapshots__/no_data_page.test.tsx.snap delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.component.test.tsx.snap delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/no_data_card.test.tsx.snap delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.component.test.tsx delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.component.tsx delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.stories.tsx delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.test.tsx delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.tsx delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.stories.tsx delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.tsx delete mode 100644 packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/types.ts create mode 100644 packages/shared-ux/card/no_data/BUILD.bazel create mode 100644 packages/shared-ux/card/no_data/README.mdx rename packages/{kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/index.ts => shared-ux/card/no_data/jest.config.js} (67%) create mode 100644 packages/shared-ux/card/no_data/package.json create mode 100644 packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.component.test.tsx.snap create mode 100644 packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.test.tsx.snap rename packages/{kbn-shared-ux-components/src/page_template/no_data_page/no_data_card => shared-ux/card/no_data/src}/assets/elastic_agent_card.svg (100%) create mode 100644 packages/shared-ux/card/no_data/src/index.ts create mode 100644 packages/shared-ux/card/no_data/src/mocks.ts create mode 100644 packages/shared-ux/card/no_data/src/no_data_card.component.test.tsx create mode 100644 packages/shared-ux/card/no_data/src/no_data_card.component.tsx create mode 100644 packages/shared-ux/card/no_data/src/no_data_card.stories.tsx rename packages/{kbn-shared-ux-components/src/page_template/no_data_page/no_data_card => shared-ux/card/no_data/src}/no_data_card.styles.ts (100%) rename packages/{kbn-shared-ux-components/src/page_template/no_data_page/no_data_card => shared-ux/card/no_data/src}/no_data_card.test.tsx (73%) create mode 100644 packages/shared-ux/card/no_data/src/no_data_card.tsx create mode 100644 packages/shared-ux/card/no_data/src/services.tsx create mode 100644 packages/shared-ux/card/no_data/tsconfig.json create mode 100644 packages/shared-ux/link/redirect_app/src/mocks.ts diff --git a/package.json b/package.json index dcf846f3dd039..57492fc0c6b6a 100644 --- a/package.json +++ b/package.json @@ -210,6 +210,7 @@ "@kbn/shared-ux-avatar-solution": "link:bazel-bin/packages/shared-ux/avatar/solution", "@kbn/shared-ux-button-exit-full-screen": "link:bazel-bin/packages/shared-ux/button/exit_full_screen", "@kbn/shared-ux-button-toolbar": "link:bazel-bin/packages/shared-ux/button_toolbar", + "@kbn/shared-ux-card-no-data": "link:bazel-bin/packages/shared-ux/card/no_data", "@kbn/shared-ux-components": "link:bazel-bin/packages/kbn-shared-ux-components", "@kbn/shared-ux-link-redirect-app": "link:bazel-bin/packages/shared-ux/link/redirect_app", "@kbn/shared-ux-page-analytics-no-data": "link:bazel-bin/packages/shared-ux/page/analytics_no_data", @@ -750,6 +751,7 @@ "@types/kbn__shared-ux-avatar-solution": "link:bazel-bin/packages/shared-ux/avatar/solution/npm_module_types", "@types/kbn__shared-ux-button-exit-full-screen": "link:bazel-bin/packages/shared-ux/button/exit_full_screen/npm_module_types", "@types/kbn__shared-ux-button-toolbar": "link:bazel-bin/packages/shared-ux/button_toolbar/npm_module_types", + "@types/kbn__shared-ux-card-no-data": "link:bazel-bin/packages/shared-ux/card/no_data/npm_module_types", "@types/kbn__shared-ux-components": "link:bazel-bin/packages/kbn-shared-ux-components/npm_module_types", "@types/kbn__shared-ux-link-redirect-app": "link:bazel-bin/packages/shared-ux/link/redirect_app/npm_module_types", "@types/kbn__shared-ux-page-analytics-no-data": "link:bazel-bin/packages/shared-ux/page/analytics_no_data/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index cc5c0e13dcccf..6c65af1a97e91 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -146,6 +146,7 @@ filegroup( "//packages/shared-ux/avatar/solution:build", "//packages/shared-ux/button_toolbar:build", "//packages/shared-ux/button/exit_full_screen:build", + "//packages/shared-ux/card/no_data:build", "//packages/shared-ux/link/redirect_app:build", "//packages/shared-ux/page/analytics_no_data:build", "//packages/shared-ux/page/kibana_no_data:build", @@ -279,6 +280,7 @@ filegroup( "//packages/shared-ux/avatar/solution:build_types", "//packages/shared-ux/button_toolbar:build_types", "//packages/shared-ux/button/exit_full_screen:build_types", + "//packages/shared-ux/card/no_data:build_types", "//packages/shared-ux/link/redirect_app:build_types", "//packages/shared-ux/page/analytics_no_data:build_types", "//packages/shared-ux/page/kibana_no_data:build_types", diff --git a/packages/kbn-shared-ux-components/BUILD.bazel b/packages/kbn-shared-ux-components/BUILD.bazel index 1a4a7100ded72..20d71557fef9a 100644 --- a/packages/kbn-shared-ux-components/BUILD.bazel +++ b/packages/kbn-shared-ux-components/BUILD.bazel @@ -45,6 +45,7 @@ RUNTIME_DEPS = [ "//packages/shared-ux/avatar/solution", "//packages/shared-ux/link/redirect_app", "//packages/shared-ux/prompt/no_data_views", + "//packages/shared-ux/card/no_data", "//packages/kbn-shared-ux-services", "//packages/kbn-shared-ux-storybook", "//packages/kbn-shared-ux-utility", @@ -74,6 +75,7 @@ TYPES_DEPS = [ "//packages/shared-ux/avatar/solution:npm_module_types", "//packages/shared-ux/link/redirect_app:npm_module_types", "//packages/shared-ux/prompt/no_data_views:npm_module_types", + "//packages/shared-ux/card/no_data:npm_module_types", "//packages/kbn-shared-ux-services:npm_module_types", "//packages/kbn-shared-ux-storybook:npm_module_types", "//packages/kbn-shared-ux-utility:npm_module_types", diff --git a/packages/kbn-shared-ux-components/src/page_template/index.ts b/packages/kbn-shared-ux-components/src/page_template/index.ts index 671f720972fc9..cd7d6232d9a8b 100644 --- a/packages/kbn-shared-ux-components/src/page_template/index.ts +++ b/packages/kbn-shared-ux-components/src/page_template/index.ts @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -export { NoDataCard, ElasticAgentCard, NoDataPage, NoDataConfigPage } from './no_data_page'; +export { NoDataPage, NoDataConfigPage } from './no_data_page'; export { KibanaPageTemplate } from './page_template'; export type { KibanaPageTemplateProps } from './types'; export type { NoDataPageProps } from './no_data_page'; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/__snapshots__/no_data_page.test.tsx.snap b/packages/kbn-shared-ux-components/src/page_template/no_data_page/__snapshots__/no_data_page.test.tsx.snap deleted file mode 100644 index 5fd29bc57b331..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/__snapshots__/no_data_page.test.tsx.snap +++ /dev/null @@ -1,55 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`NoDataPage render 1`] = ` -

- - - -

- Welcome to Elastic Analytics! -

- -

- - - , - "solution": "Analytics", - } - } - /> -

-
-
- - -
-`; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/index.ts b/packages/kbn-shared-ux-components/src/page_template/no_data_page/index.ts index 894097727cd1f..a6f8c91f7614c 100644 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/index.ts +++ b/packages/kbn-shared-ux-components/src/page_template/no_data_page/index.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -export { NoDataCard, ElasticAgentCard } from './no_data_card'; export { NoDataPage } from './no_data_page'; export type { NoDataPageProps } from './types'; export { NoDataConfigPage, NoDataConfigPageWithSolutionNavBar } from './no_data_config_page'; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.component.test.tsx.snap b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.component.test.tsx.snap deleted file mode 100644 index c871196b92282..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.component.test.tsx.snap +++ /dev/null @@ -1,104 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ElasticAgentCardComponent props button 1`] = ` - - } - title="Add Elastic Agent" -/> -`; - -exports[`ElasticAgentCardComponent props href 1`] = ` - - } - title="Add Elastic Agent" -/> -`; - -exports[`ElasticAgentCardComponent renders 1`] = ` - - } - title="Add Elastic Agent" -/> -`; - -exports[`ElasticAgentCardComponent renders with canAccessFleet false 1`] = ` - - This integration is not yet enabled. Your administrator has the required permissions to turn it on. - - } - image={ - - } - isDisabled={true} - title={ - - Contact your administrator - - } -/> -`; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap deleted file mode 100644 index dbdb652a10c1f..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/elastic_agent_card.test.tsx.snap +++ /dev/null @@ -1,75 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ElasticAgentCard renders 1`] = ` -
-
-
-
-
- -
-
-
-
- - - - Add Elastic Agent - - - -
-

- Use Elastic Agent for a simple, unified way to collect data from your machines. -

-
-
- -
-
-`; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/no_data_card.test.tsx.snap b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/no_data_card.test.tsx.snap deleted file mode 100644 index 0028d505e9187..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/__snapshots__/no_data_card.test.tsx.snap +++ /dev/null @@ -1,231 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`NoDataCard props button 1`] = ` -
-
- - - Card title - - -
-

- Description -

-
-
- -
-`; - -exports[`NoDataCard props extends EuiCardProps 1`] = ` -
-
- - - Card title - - -
-

- Description -

-
-
- -
-`; - -exports[`NoDataCard props href 1`] = ` -
-
- - - - Card title - - - -
-

- Description -

-
-
- -
-`; - -exports[`NoDataCard props isDisabled 1`] = ` -
-
- - - -
-

- Description -

-
-
-
-`; - -exports[`NoDataCard renders 1`] = ` -
-
- - - Card title - - -
-

- Description -

-
-
- -
-`; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.component.test.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.component.test.tsx deleted file mode 100644 index 367fcd10b96a9..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.component.test.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { shallow } from 'enzyme'; -import React from 'react'; -import { ElasticAgentCardComponent } from './elastic_agent_card.component'; -import { NoDataCard } from './no_data_card'; - -describe('ElasticAgentCardComponent', () => { - test('renders', () => { - const component = shallow(); - expect(component).toMatchSnapshot(); - }); - - test('renders with canAccessFleet false', () => { - const component = shallow(); - expect(component.find(NoDataCard).props().isDisabled).toBe(true); - expect(component).toMatchSnapshot(); - }); - - describe('props', () => { - test('button', () => { - const component = shallow( - - ); - expect(component.find(NoDataCard).props().button).toBe('Button'); - expect(component).toMatchSnapshot(); - }); - - test('href', () => { - const component = shallow( - - ); - expect(component.find(NoDataCard).props().href).toBe('some path'); - expect(component).toMatchSnapshot(); - }); - }); -}); diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.component.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.component.tsx deleted file mode 100644 index 31d0aad7cc631..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.component.tsx +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { FunctionComponent } from 'react'; -import { i18n } from '@kbn/i18n'; -import { EuiImage, EuiTextColor } from '@elastic/eui'; -import { ElasticAgentCardProps } from './types'; -import { NoDataCard } from './no_data_card'; -import ElasticAgentCardIllustration from './assets/elastic_agent_card.svg'; - -export type ElasticAgentCardComponentProps = ElasticAgentCardProps & { - canAccessFleet: boolean; -}; - -const noPermissionTitle = i18n.translate( - 'sharedUXComponents.noDataPage.elasticAgentCard.noPermission.title', - { - defaultMessage: `Contact your administrator`, - } -); - -const noPermissionDescription = i18n.translate( - 'sharedUXComponents.noDataPage.elasticAgentCard.noPermission.description', - { - defaultMessage: `This integration is not yet enabled. Your administrator has the required permissions to turn it on.`, - } -); - -const elasticAgentCardTitle = i18n.translate( - 'sharedUXComponents.noDataPage.elasticAgentCard.title', - { - defaultMessage: 'Add Elastic Agent', - } -); - -const elasticAgentCardDescription = i18n.translate( - 'sharedUXComponents.noDataPage.elasticAgentCard.description', - { - defaultMessage: `Use Elastic Agent for a simple, unified way to collect data from your machines.`, - } -); - -/** - * Creates a specific NoDataCard pointing users to Integrations when `canAccessFleet` - */ -export const ElasticAgentCardComponent: FunctionComponent = ({ - canAccessFleet, - title = elasticAgentCardTitle, - description, - ...cardRest -}) => { - const props = canAccessFleet - ? { - title, - description: description || elasticAgentCardDescription, - } - : { - title: {noPermissionTitle}, - description: {noPermissionDescription}, - isDisabled: true, - }; - - const image = ( - - ); - - return ; -}; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.stories.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.stories.tsx deleted file mode 100644 index a87da6ff9ca0e..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.stories.tsx +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React from 'react'; - -import { - ElasticAgentCardComponent as Component, - ElasticAgentCardComponentProps as ComponentProps, -} from './elastic_agent_card.component'; - -import { ElasticAgentCard } from './elastic_agent_card'; - -export default { - title: 'Page Template/No Data/Elastic Agent Data Card', - description: 'A solution-specific wrapper around NoDataCard, to be used on NoData page', -}; - -type Params = Pick; - -export const PureComponent = (params: Params) => { - return ; -}; - -PureComponent.argTypes = { - canAccessFleet: { - control: 'boolean', - defaultValue: true, - }, - description: { - control: 'text', - defaultValue: '', - }, -}; - -export const ConnectedComponent = () => { - return ; -}; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.test.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.test.tsx deleted file mode 100644 index ed0b4471fa32c..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.test.tsx +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { ReactWrapper } from 'enzyme'; -import React from 'react'; -import { mountWithIntl } from '@kbn/test-jest-helpers'; -import { - SharedUxServicesProvider, - SharedUxServices, - mockServicesFactory, -} from '@kbn/shared-ux-services'; - -import { ElasticAgentCard } from './elastic_agent_card'; -import { ElasticAgentCardComponent } from './elastic_agent_card.component'; - -describe('ElasticAgentCard', () => { - let services: SharedUxServices; - let mount: (element: JSX.Element) => ReactWrapper; - - beforeEach(() => { - services = mockServicesFactory(); - mount = (element: JSX.Element) => - mountWithIntl({element}); - }); - - afterEach(() => { - jest.resetAllMocks(); - }); - - test('renders', () => { - const component = mount(); - expect(component.render()).toMatchSnapshot(); - }); - - describe('href', () => { - test('returns href if href is given', () => { - const component = mount(); - expect(component.find(ElasticAgentCardComponent).props().href).toBe('/take/me/somewhere'); - }); - - test('returns prefix + category if href is not given', () => { - const component = mount(); - expect(component.find(ElasticAgentCardComponent).props().href).toBe( - '/app/integrations/browse/solutions' - ); - }); - - test('returns prefix if nor category nor href are given', () => { - const component = mount(); - expect(component.find(ElasticAgentCardComponent).props().href).toBe( - '/app/integrations/browse' - ); - }); - }); - - describe('description', () => { - test('renders custom description if provided', () => { - const component = mount( - - ); - expect(component.find(ElasticAgentCardComponent).props().description).toBe( - 'Build seamless search experiences faster.' - ); - }); - }); - - describe('canAccessFleet', () => { - test('passes in the right parameter', () => { - const component = mount(); - expect(component.find(ElasticAgentCardComponent).props().canAccessFleet).toBe(true); - }); - }); -}); diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.tsx deleted file mode 100644 index a4025f33616ed..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/elastic_agent_card.tsx +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React, { useMemo } from 'react'; -import { useApplication, useHttp, usePermissions } from '@kbn/shared-ux-services'; -import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; -import useObservable from 'react-use/lib/useObservable'; - -import { ElasticAgentCardProps } from './types'; -import { ElasticAgentCardComponent } from './elastic_agent_card.component'; - -export const ElasticAgentCard = (props: ElasticAgentCardProps) => { - const { canAccessFleet } = usePermissions(); - const { addBasePath } = useHttp(); - const { navigateToUrl, currentAppId$ } = useApplication(); - const currentAppId = useObservable(currentAppId$); - - const { href: srcHref, category, description } = props; - - const href = useMemo(() => { - if (srcHref) { - return srcHref; - } - - // TODO: get this URL from a locator - const prefix = '/app/integrations/browse'; - - if (category) { - return addBasePath(`${prefix}/${category}`); - } - - return addBasePath(prefix); - }, [addBasePath, srcHref, category]); - - return ( - - - - ); -}; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.stories.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.stories.tsx deleted file mode 100644 index 9c1b2d0322074..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.stories.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import React from 'react'; -import { NoDataCard } from './no_data_card'; -import type { NoDataCardProps } from './types'; - -export default { - title: 'Page Template/No Data/No Data Card', - description: 'A wrapper around EuiCard, to be used on NoData page', -}; - -type Params = Pick; - -export const PureComponent = (params: Params) => { - return ; -}; - -PureComponent.argTypes = { - button: { - control: { - type: 'text', - }, - defaultValue: 'Button text', - }, - description: { - control: { - type: 'text', - }, - defaultValue: 'This is a description', - }, -}; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.tsx deleted file mode 100644 index 508d03d5028b8..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.tsx +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import React, { FunctionComponent } from 'react'; -import { EuiButton, EuiCard, EuiScreenReaderOnly } from '@elastic/eui'; - -import type { NoDataCardProps } from './types'; -import { NoDataCardStyles } from './no_data_card.styles'; - -const defaultDescription = i18n.translate( - 'sharedUXComponents.pageTemplate.noDataCard.description', - { - defaultMessage: `Proceed without collecting data`, - } -); - -export const NoDataCard: FunctionComponent = ({ - title: titleProp, - button, - description, - isDisabled, - ...cardRest -}) => { - const styles = NoDataCardStyles(); - - const footer = () => { - // Don't render the footer action if disabled - if (isDisabled) { - return; - } - // Render a custom footer action if the button is not a simple string - if (button && typeof button !== 'string') { - return button; - } - // Default footer action is a button with the provided or default string - return {button || titleProp}; - }; - - const cardDescription = description || defaultDescription; - - // Fix the need for an a11y title even though the button exists by setting to screen reader only - const title = titleProp ? ( - - {titleProp} - - ) : null; - - return ( - - ); -}; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/types.ts b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/types.ts deleted file mode 100644 index fef4f654ce970..0000000000000 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/types.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { EuiCardProps } from '@elastic/eui'; -import { MouseEventHandler, ReactNode } from 'react'; - -export type NoDataCardProps = Partial> & { - /** - * Provide just a string for the button's label, or a whole component; - * The button will be hidden completely if `isDisabled=true` - */ - button?: string | ReactNode; - /** - * Remapping `onClick` to any element - */ - onClick?: MouseEventHandler; - /** - * Description for the card; - * If not provided, the default will be used - */ - description?: string | ReactNode; -}; - -export type ElasticAgentCardProps = NoDataCardProps & { - /** - * Category to auto-select within Fleet - */ - category?: string; -}; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_page.test.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_page.test.tsx index c84dea27552aa..b9474285469e1 100644 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_page.test.tsx +++ b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_page.test.tsx @@ -7,24 +7,27 @@ */ import React from 'react'; +import { mountWithIntl } from '@kbn/test-jest-helpers'; +import { NoDataCard } from '@kbn/shared-ux-card-no-data'; +import { SharedUxServicesProvider, mockServicesFactory } from '@kbn/shared-ux-services'; + import { NoDataPage } from './no_data_page'; -import { shallowWithIntl } from '@kbn/test-jest-helpers'; -import { ElasticAgentCard } from './no_data_card'; describe('NoDataPage', () => { test('render', () => { - const component = shallowWithIntl( - + const component = mountWithIntl( + + + ); - expect(component).toMatchSnapshot(); expect(component.find('h1').html()).toContain('Welcome to Elastic Analytics!'); - expect(component.find(ElasticAgentCard).length).toBe(1); + expect(component.find(NoDataCard).length).toBe(1); }); }); diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_page.tsx b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_page.tsx index 093a76d17759f..724570d4baccd 100644 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_page.tsx +++ b/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_page.tsx @@ -7,6 +7,7 @@ */ import React, { useMemo, FunctionComponent } from 'react'; +import useObservable from 'react-use/lib/useObservable'; import classNames from 'classnames'; import { EuiLink, EuiSpacer, EuiText, EuiTextColor } from '@elastic/eui'; @@ -14,7 +15,8 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { KibanaSolutionAvatar } from '@kbn/shared-ux-avatar-solution'; -import { ElasticAgentCard } from './no_data_card'; +import { useSharedUxServices } from '@kbn/shared-ux-services'; +import { NoDataCard, NoDataCardProvider } from '@kbn/shared-ux-card-no-data'; import { NoDataPageProps } from './types'; export const NoDataPage: FunctionComponent = ({ @@ -25,6 +27,19 @@ export const NoDataPage: FunctionComponent = ({ pageTitle, ...rest }) => { + const services = useSharedUxServices(); + + // TODO: clintandrewhall - including the `NoDataCardProvider` here is a temporary solution + // to consumers using this context to populate the NoDataPage. This will likely be removed soon, + // when NoDataPage is moved to its own package. + const currentAppId = useObservable(services.application.currentAppId$); + const noDataCardServices = { + currentAppId, + addBasePath: services.http.addBasePath, + canAccessFleet: services.permissions.canAccessFleet, + navigateToUrl: services.application.navigateToUrl, + }; + const actionKeys = Object.keys(action); const actionCard = useMemo(() => { @@ -34,7 +49,7 @@ export const NoDataPage: FunctionComponent = ({ const actionKey = actionKeys[0]; const key = actionKey === 'elasticAgent' ? 'empty-page-agent-action' : `empty-page-${actionKey}-action`; - return ; + return ; }, [action, actionKeys]); const title = @@ -74,7 +89,7 @@ export const NoDataPage: FunctionComponent = ({ - {actionCard} + {actionCard} ); }; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/types.ts b/packages/kbn-shared-ux-components/src/page_template/no_data_page/types.ts index b304a1462a278..e22f7a7b81a77 100644 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/types.ts +++ b/packages/kbn-shared-ux-components/src/page_template/no_data_page/types.ts @@ -7,9 +7,9 @@ */ import { CommonProps } from '@elastic/eui'; -import { ElasticAgentCardProps } from './no_data_card'; +import { NoDataCardProps } from '@kbn/shared-ux-card-no-data'; -export type NoDataPageActions = ElasticAgentCardProps; +export type NoDataPageActions = NoDataCardProps; export interface NoDataPageProps extends CommonProps { /** diff --git a/packages/kbn-shared-ux-storybook/src/config/main.ts b/packages/kbn-shared-ux-storybook/src/config/main.ts index ccd0d1e73cba8..6e57ca8ad5e72 100644 --- a/packages/kbn-shared-ux-storybook/src/config/main.ts +++ b/packages/kbn-shared-ux-storybook/src/config/main.ts @@ -15,4 +15,7 @@ module.exports = { '../../../kbn-shared-ux*/**/*.stories.+(tsx|mdx)', '../../../../src/plugins/shared_ux/**/*.stories.+(tsx|mdx)', ], + reactOptions: { + strictMode: true, + }, }; diff --git a/packages/shared-ux/card/no_data/BUILD.bazel b/packages/shared-ux/card/no_data/BUILD.bazel new file mode 100644 index 0000000000000..ae3e21ba55247 --- /dev/null +++ b/packages/shared-ux/card/no_data/BUILD.bazel @@ -0,0 +1,143 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "no_data" +PKG_REQUIRE_NAME = "@kbn/shared-ux-card-no-data" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.mdx", + "src/**/*.svg", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//@elastic/eui", + "@npm//@storybook/addon-actions", + "@npm//enzyme", + "@npm//react", + "//packages/kbn-i18n-react", + "//packages/kbn-i18n", + "//packages/shared-ux/link/redirect_app", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@elastic/eui", + "@npm//@storybook/addon-actions", + "@npm//@types/enzyme", + "@npm//@types/jest", + "@npm//@types/node", + "@npm//@types/react", + "//packages/kbn-ambient-ui-types", + "//packages/kbn-i18n-react:npm_module_types", + "//packages/kbn-i18n:npm_module_types", + "//packages/shared-ux/link/redirect_app:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, + additional_args = [ + "--copy-files", + "--quiet" + ], +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/shared-ux/card/no_data/README.mdx b/packages/shared-ux/card/no_data/README.mdx new file mode 100644 index 0000000000000..e2b044c27ac44 --- /dev/null +++ b/packages/shared-ux/card/no_data/README.mdx @@ -0,0 +1,29 @@ +--- +id: sharedUX/Components/NoDataCard +slug: /shared-ux/components/no-data-card +title: No Data Card +summary: A card displayed when no data is available is available in Kibana. +tags: ['shared-ux', 'component'] +date: 2022-06-15 +--- + +## Description + +A wrapper around `EuiCard` tailored for use in Kibana solutions when no data is available. + +## Usage + +All of the `EuiCard` props are available with the exception of `layout`. A default `description` and `button` are provided, but can be overridden in specific use cases. + +The `NoDataCard` connected component uses: + +- `navLinks.integrations` from `coreStart.application.capabilities` to determine if the user has access to the Integrations page. +- `addBasePath` from `coreStart` to navigate to the Integrations page. + +## API +| Export | Description | +|---|---| +| `NoDataCardProvider` | Provides contextual services to `NoDataCard`. | +| `NoDataCardKibanaProvider` | Maps Kibana dependencies to provide contextual services to `NoDataCard`. | +| `NoDataCard` | Uses a `Provider` to access contextual services to populate props on the `NoDataCardComponent`. | +| `NoDataCardComponent` | The pure component, a pre-configured **EuiCard**. | \ No newline at end of file diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/index.ts b/packages/shared-ux/card/no_data/jest.config.js similarity index 67% rename from packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/index.ts rename to packages/shared-ux/card/no_data/jest.config.js index e4cdeb401584f..47ce28115535f 100644 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/index.ts +++ b/packages/shared-ux/card/no_data/jest.config.js @@ -5,6 +5,9 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -export { NoDataCard } from './no_data_card'; -export { ElasticAgentCard } from './elastic_agent_card'; -export type { NoDataCardProps, ElasticAgentCardProps } from './types'; + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/packages/shared-ux/card/no_data'], +}; diff --git a/packages/shared-ux/card/no_data/package.json b/packages/shared-ux/card/no_data/package.json new file mode 100644 index 0000000000000..a1d3efd5a6985 --- /dev/null +++ b/packages/shared-ux/card/no_data/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/shared-ux-card-no-data", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "browser": "./target_web/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.component.test.tsx.snap b/packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.component.test.tsx.snap new file mode 100644 index 0000000000000..17eb4ef8804cd --- /dev/null +++ b/packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.component.test.tsx.snap @@ -0,0 +1,117 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`NoDataCardComponent props button 1`] = ` + + Button + + } + image={} + isDisabled={false} + paddingSize="l" + title={ + + + Add Elastic Agent + + + } +/> +`; + +exports[`NoDataCardComponent props href 1`] = ` + + Add Elastic Agent + + } + href="some path" + image={} + isDisabled={false} + paddingSize="l" + title={ + + + Add Elastic Agent + + + } +/> +`; + +exports[`NoDataCardComponent renders 1`] = ` + + Add Elastic Agent + + } + image={} + isDisabled={false} + paddingSize="l" + title={ + + + Add Elastic Agent + + + } +/> +`; + +exports[`NoDataCardComponent renders with canAccessFleet false 1`] = ` + + This integration is not yet enabled. Your administrator has the required permissions to turn it on. + + } + image={} + isDisabled={true} + paddingSize="l" + title={ + + Contact your administrator + + } +/> +`; diff --git a/packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.test.tsx.snap b/packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.test.tsx.snap new file mode 100644 index 0000000000000..1f4277ffd139f --- /dev/null +++ b/packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.test.tsx.snap @@ -0,0 +1,356 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`NoDataCard props button 1`] = ` +
+
+
+
+
+ +
+
+
+
+ + + + Card title + + + +
+

+ Description +

+
+
+ +
+
+`; + +exports[`NoDataCard props extends EuiCardProps 1`] = ` +
+
+
+
+
+ +
+
+
+
+ + + + Card title + + + +
+

+ Description +

+
+
+ +
+
+`; + +exports[`NoDataCard props href 1`] = ` +
+
+
+
+
+ +
+
+
+
+ + + + Card title + + + +
+

+ Description +

+
+
+ +
+
+`; + +exports[`NoDataCard props no access to Fleet 1`] = ` +
+
+
+
+
+ +
+
+
+
+ + + +
+

+ + This integration is not yet enabled. Your administrator has the required permissions to turn it on. + +

+
+
+
+
+`; + +exports[`NoDataCard renders 1`] = ` +
+
+
+
+
+ +
+
+
+
+ + + + Card title + + + +
+

+ Description +

+
+
+ +
+
+`; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/assets/elastic_agent_card.svg b/packages/shared-ux/card/no_data/src/assets/elastic_agent_card.svg similarity index 100% rename from packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/assets/elastic_agent_card.svg rename to packages/shared-ux/card/no_data/src/assets/elastic_agent_card.svg diff --git a/packages/shared-ux/card/no_data/src/index.ts b/packages/shared-ux/card/no_data/src/index.ts new file mode 100644 index 0000000000000..24463007b5a8c --- /dev/null +++ b/packages/shared-ux/card/no_data/src/index.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { NoDataCard } from './no_data_card'; +export type { Props as NoDataCardProps } from './no_data_card'; + +export { NoDataCardKibanaProvider, NoDataCardProvider } from './services'; +export type { NoDataCardKibanaDependencies, NoDataCardServices } from './services'; + +export { + getMockServices as getNoDataCardMockServices, + getStoryArgTypes as getNoDataCardStoryArgTypes, + getStoryServices as getNoDataCardStoryServices, +} from './mocks'; diff --git a/packages/shared-ux/card/no_data/src/mocks.ts b/packages/shared-ux/card/no_data/src/mocks.ts new file mode 100644 index 0000000000000..d5ec849e1456b --- /dev/null +++ b/packages/shared-ux/card/no_data/src/mocks.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { action } from '@storybook/addon-actions'; +import { + getRedirectAppLinksMockServices, + getRedirectAppLinksStoryArgTypes, + getRedirectAppLinksStoryServices, +} from '@kbn/shared-ux-link-redirect-app'; + +import { NoDataCardServices } from './services'; + +/** + * Parameters drawn from the Storybook arguments collection that customize a component story. + */ +export type Params = Record, any>; + +/** + * Returns Storybook-compatible service abstractions for the `NoDataCard` Provider. + */ +export const getStoryServices = (params: Params) => { + const services: NoDataCardServices = { + ...getRedirectAppLinksStoryServices(), + ...params, + addBasePath: (path) => { + action('addBasePath')(path); + return path; + }, + }; + + return services; +}; + +/** + * Returns the Storybook arguments for `NoDataCard`, for its stories and for + * consuming component stories. + */ +export const getStoryArgTypes = () => ({ + ...getRedirectAppLinksStoryArgTypes(), + canAccessFleet: { + control: 'boolean', + defaultValue: true, + }, + category: { + control: { + type: 'text', + }, + defaultValue: '', + }, + title: { + control: { + type: 'text', + }, + defaultValue: '', + }, + description: { + control: { + type: 'text', + }, + defaultValue: '', + }, + button: { + control: { + type: 'text', + }, + defaultValue: '', + }, +}); + +/** + * Returns the Jest-compatible service abstractions for the `NoDataCard` Provider. + */ +export const getMockServices = (params?: Params) => { + const { canAccessFleet } = params || { canAccessFleet: true }; + + const services: NoDataCardServices = { + ...getRedirectAppLinksMockServices(), + canAccessFleet, + addBasePath: (path) => path, + }; + + return services; +}; diff --git a/packages/shared-ux/card/no_data/src/no_data_card.component.test.tsx b/packages/shared-ux/card/no_data/src/no_data_card.component.test.tsx new file mode 100644 index 0000000000000..72d179602e6d5 --- /dev/null +++ b/packages/shared-ux/card/no_data/src/no_data_card.component.test.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { shallow } from 'enzyme'; + +import { NoDataCard } from './no_data_card.component'; + +describe('NoDataCardComponent', () => { + test('renders', () => { + const component = shallow(); + expect(component).toMatchSnapshot(); + }); + + test('renders with canAccessFleet false', () => { + const component = shallow(); + expect(component).toMatchSnapshot(); + }); + + describe('props', () => { + test('button', () => { + const component = shallow(); + expect(component).toMatchSnapshot(); + }); + + test('href', () => { + const component = shallow(); + expect(component).toMatchSnapshot(); + }); + }); +}); diff --git a/packages/shared-ux/card/no_data/src/no_data_card.component.tsx b/packages/shared-ux/card/no_data/src/no_data_card.component.tsx new file mode 100644 index 0000000000000..43c4e9cd3a4af --- /dev/null +++ b/packages/shared-ux/card/no_data/src/no_data_card.component.tsx @@ -0,0 +1,136 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { MouseEventHandler, ReactNode } from 'react'; +import { + EuiButton, + EuiCard, + EuiScreenReaderOnly, + EuiTextColor, + EuiCardProps, + EuiImage, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { NoDataCardStyles } from './no_data_card.styles'; +import ElasticAgentCardIllustration from './assets/elastic_agent_card.svg'; + +export type Props = Partial< + Omit +> & { + /** + * Provide just a string for the button's label, or a whole component; + * The button will be hidden completely if `isDisabled=true` + */ + button?: string | ReactNode; + /** Remapping `onClick` to any element */ + onClick?: MouseEventHandler; + /** + * Description for the card; + * If not provided, the default will be used + */ + description?: string | ReactNode; + /** Category to auto-select within Fleet */ + category?: string; + /** True if the person has permission to access Fleet, false otherwise */ + canAccessFleet?: boolean; +}; + +const noPermissionTitle = i18n.translate('sharedUXPackages.card.noData.noPermission.title', { + defaultMessage: `Contact your administrator`, +}); + +const noPermissionDescription = i18n.translate( + 'sharedUXPackages.card.noData.noPermission.description', + { + defaultMessage: `This integration is not yet enabled. Your administrator has the required permissions to turn it on.`, + } +); + +const defaultTitle = i18n.translate('sharedUXPackages.card.noData.title', { + defaultMessage: 'Add Elastic Agent', +}); + +const defaultDescription = i18n.translate('sharedUXPackages.card.noData.description', { + defaultMessage: `Use Elastic Agent for a simple, unified way to collect data from your machines.`, +}); + +const Image = () => ( + +); + +/** + * Creates a specific NoDataCard pointing users to Integrations when `canAccessFleet` + */ +export const NoDataCard = ({ + title: titleProp, + description: descriptionProp, + canAccessFleet, + button, + ...props +}: Props) => { + const styles = NoDataCardStyles(); + + const footer = () => { + // Don't render the footer action if disabled + if (!canAccessFleet) { + return; + } + + // Render a custom footer action if the button is not a simple string + if (button && typeof button !== 'string') { + return button; + } + + // Default footer action is a button with the provided or default string + return {button || titleProp || defaultTitle}; + }; + + const title = () => { + if (!canAccessFleet) { + return {noPermissionTitle}; + } + + return ( + + {titleProp || defaultTitle} + + ); + }; + + const description = () => { + if (!canAccessFleet) { + return {noPermissionDescription}; + } + + return descriptionProp || defaultDescription; + }; + + return ( + } + {...props} + /> + ); +}; diff --git a/packages/shared-ux/card/no_data/src/no_data_card.stories.tsx b/packages/shared-ux/card/no_data/src/no_data_card.stories.tsx new file mode 100644 index 0000000000000..38f299d3d3d35 --- /dev/null +++ b/packages/shared-ux/card/no_data/src/no_data_card.stories.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; + +import { Params, getStoryArgTypes, getStoryServices } from './mocks'; + +import { NoDataCard as Component } from './no_data_card.component'; +import { NoDataCard as ConnectedComponent } from './no_data_card'; +import { NoDataCardProvider } from './services'; + +import mdx from '../README.mdx'; + +export default { + title: 'No Data/Card', + description: 'A solution-specific wrapper around `EuiCard`, to be used on `NoData` page', + parameters: { + docs: { + page: mdx, + }, + }, +}; + +const argTypes = getStoryArgTypes(); + +export const NoDataCard = (params: Params) => { + return ( + + + + ); +}; + +NoDataCard.argTypes = argTypes; + +export const NoDataCardComponent = (params: Params) => { + return ; +}; + +NoDataCardComponent.argTypes = argTypes; diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.styles.ts b/packages/shared-ux/card/no_data/src/no_data_card.styles.ts similarity index 100% rename from packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.styles.ts rename to packages/shared-ux/card/no_data/src/no_data_card.styles.ts diff --git a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.test.tsx b/packages/shared-ux/card/no_data/src/no_data_card.test.tsx similarity index 73% rename from packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.test.tsx rename to packages/shared-ux/card/no_data/src/no_data_card.test.tsx index 6bbed463f23ed..0f659ad7a7f50 100644 --- a/packages/kbn-shared-ux-components/src/page_template/no_data_page/no_data_card/no_data_card.test.tsx +++ b/packages/shared-ux/card/no_data/src/no_data_card.test.tsx @@ -6,11 +6,23 @@ * Side Public License, v 1. */ -import { render } from 'enzyme'; +import { render as enzymeRender } from 'enzyme'; import React from 'react'; + import { NoDataCard } from './no_data_card'; +import { NoDataCardProvider } from './services'; + +const services = { + addBasePath: (path: string) => path, + navigateToUrl: () => {}, +}; describe('NoDataCard', () => { + const render = (element: React.ReactElement, canAccessFleet: boolean = true) => + enzymeRender( + {element} + ); + test('renders', () => { const component = render(); expect(component).toMatchSnapshot(); @@ -31,14 +43,10 @@ describe('NoDataCard', () => { expect(component).toMatchSnapshot(); }); - test('isDisabled', () => { + test('no access to Fleet', () => { const component = render( - + , + false ); expect(component).toMatchSnapshot(); }); diff --git a/packages/shared-ux/card/no_data/src/no_data_card.tsx b/packages/shared-ux/card/no_data/src/no_data_card.tsx new file mode 100644 index 0000000000000..a58ee5bc9d08b --- /dev/null +++ b/packages/shared-ux/card/no_data/src/no_data_card.tsx @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useMemo } from 'react'; +import { RedirectAppLinksContainer } from '@kbn/shared-ux-link-redirect-app'; + +import { NoDataCard as Component, Props as ComponentProps } from './no_data_card.component'; + +import { useServices } from './services'; + +export type Props = Omit; + +export const NoDataCard = ({ href: srcHref, category, description, ...props }: Props) => { + const { canAccessFleet, addBasePath } = useServices(); + + const href = useMemo(() => { + if (srcHref) { + return srcHref; + } + + // TODO: get this URL from a locator + const prefix = '/app/integrations/browse'; + + if (category) { + return addBasePath(`${prefix}/${category}`); + } + + return addBasePath(prefix); + }, [addBasePath, srcHref, category]); + + return ( + + + + ); +}; diff --git a/packages/shared-ux/card/no_data/src/services.tsx b/packages/shared-ux/card/no_data/src/services.tsx new file mode 100644 index 0000000000000..c4937a6d21da9 --- /dev/null +++ b/packages/shared-ux/card/no_data/src/services.tsx @@ -0,0 +1,97 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { FC, useContext } from 'react'; +import { + RedirectAppLinksServices, + RedirectAppLinksKibanaDependencies, + RedirectAppLinksProvider, + RedirectAppLinksKibanaProvider, +} from '@kbn/shared-ux-link-redirect-app'; + +/** + * A list of services that are consumed by this component. + */ +interface Services { + addBasePath: (path: string) => string; + canAccessFleet: boolean; +} + +const Context = React.createContext(null); + +/** + * Services that are consumed by this component and its dependencies. + */ +export type NoDataCardServices = Services & RedirectAppLinksServices; + +/** + * A Context Provider that provides services to the component and its dependencies. + */ +export const NoDataCardProvider: FC = ({ children, ...services }) => { + const { addBasePath, canAccessFleet } = services; + + return ( + + {children} + + ); +}; + +interface KibanaDependencies { + coreStart: { + http: { + basePath: { + prepend: (path: string) => string; + }; + }; + application: { + capabilities: { + navLinks: Record; + }; + }; + }; +} +/** + * An interface containing a collection of Kibana plugins and services required to + * render this component as well as its dependencies. + */ +export type NoDataCardKibanaDependencies = KibanaDependencies & RedirectAppLinksKibanaDependencies; + +/** + * Kibana-specific Provider that maps dependencies to services. + */ +export const NoDataCardKibanaProvider: FC = ({ + children, + ...dependencies +}) => { + const value: Services = { + addBasePath: dependencies.coreStart.http.basePath.prepend, + canAccessFleet: dependencies.coreStart.application.capabilities.navLinks.integrations, + }; + + return ( + + {children} + + ); +}; + +/** + * React hook for accessing pre-wired services. + */ +export function useServices() { + const context = useContext(Context); + + if (!context) { + throw new Error( + 'NoDataCard Context is missing. Ensure your component or React root is wrapped with NoDataCardContext.' + ); + } + + return context; +} diff --git a/packages/shared-ux/card/no_data/tsconfig.json b/packages/shared-ux/card/no_data/tsconfig.json new file mode 100644 index 0000000000000..44b240540718d --- /dev/null +++ b/packages/shared-ux/card/no_data/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@kbn/ambient-ui-types" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/shared-ux/link/redirect_app/src/index.tsx b/packages/shared-ux/link/redirect_app/src/index.tsx index 09317ebab59f7..0d1c61242edb3 100644 --- a/packages/shared-ux/link/redirect_app/src/index.tsx +++ b/packages/shared-ux/link/redirect_app/src/index.tsx @@ -10,16 +10,27 @@ export { RedirectAppLinks as RedirectAppLinksContainer } from './redirect_app_li export { RedirectAppLinks as RedirectAppLinksComponent } from './redirect_app_links.component'; export { RedirectAppLinksKibanaProvider, RedirectAppLinksProvider } from './services'; +export type { + Services as RedirectAppLinksServices, + KibanaDependencies as RedirectAppLinksKibanaDependencies, +} from './services'; + +export { + getMockServices as getRedirectAppLinksMockServices, + getStoryArgTypes as getRedirectAppLinksStoryArgTypes, + getStoryServices as getRedirectAppLinksStoryServices, +} from './mocks'; + import React, { FC } from 'react'; import { RedirectAppLinks as RedirectAppLinksContainer } from './redirect_app_links'; import { Services, - KibanaServices, + KibanaDependencies, RedirectAppLinksKibanaProvider, RedirectAppLinksProvider, } from './services'; -const isKibanaContract = (services: any): services is KibanaServices => { +const isKibanaContract = (services: any): services is KibanaDependencies => { return typeof services.coreStart !== 'undefined'; }; @@ -28,12 +39,22 @@ const isKibanaContract = (services: any): services is KibanaServices => { * `RedirectAppLinksKibanaProvider` based on the services provided, creating a single component * with which consumers can wrap their components or solutions. */ -export const RedirectAppLinks: FC = ({ children, ...services }) => { +export const RedirectAppLinks: FC = ({ children, ...services }) => { const container = {children}; - return isKibanaContract(services) ? ( - {container} - ) : ( - {container} + if (isKibanaContract(services)) { + const { coreStart } = services; + return ( + + {container} + + ); + } + + const { navigateToUrl, currentAppId } = services; + return ( + + {container} + ); }; diff --git a/packages/shared-ux/link/redirect_app/src/mocks.ts b/packages/shared-ux/link/redirect_app/src/mocks.ts new file mode 100644 index 0000000000000..4b5519dd646bb --- /dev/null +++ b/packages/shared-ux/link/redirect_app/src/mocks.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { action } from '@storybook/addon-actions'; + +import { Services } from './services'; + +/** + * Parameters drawn from the Storybook arguments collection that customize a component story. + */ +export type Params = Record, any>; + +/** + * Returns Storybook-compatible service abstractions for the `NoDataCard` Provider. + */ +export const getStoryServices = () => { + const services: Services = { + navigateToUrl: action('navigateToUrl'), + currentAppId: 'currentAppId', + }; + + return services; +}; + +/** + * Returns the Storybook arguments for `NoDataCard`, for its stories and for + * consuming component stories. + */ +export const getStoryArgTypes = () => ({}); + +/** + * Returns the Jest-compatible service abstractions for the `NoDataCard` Provider. + */ +export const getMockServices = () => { + const services: Services = { + navigateToUrl: jest.fn(), + currentAppId: 'currentAppId', + }; + + return services; +}; diff --git a/packages/shared-ux/link/redirect_app/src/redirect_app_links.component.tsx b/packages/shared-ux/link/redirect_app/src/redirect_app_links.component.tsx index 477471fe71824..f0da5b307fbd1 100644 --- a/packages/shared-ux/link/redirect_app/src/redirect_app_links.component.tsx +++ b/packages/shared-ux/link/redirect_app/src/redirect_app_links.component.tsx @@ -29,12 +29,7 @@ export interface Props extends DetailedHTMLProps, * * ``` */ -export const RedirectAppLinks: FC = ({ - children, - navigateToUrl, - currentAppId, - ...otherProps -}) => { +export const RedirectAppLinks: FC = ({ children, navigateToUrl, currentAppId }) => { const containerRef = useRef(null); const handleClick: MouseEventHandler = useCallback( @@ -50,7 +45,7 @@ export const RedirectAppLinks: FC = ({ return ( // eslint-disable-next-line jsx-a11y/click-events-have-key-events -
+
{children}
); diff --git a/packages/shared-ux/link/redirect_app/src/redirect_app_links.stories.tsx b/packages/shared-ux/link/redirect_app/src/redirect_app_links.stories.tsx index 9bb3d0d9782d4..1b77f7148964e 100644 --- a/packages/shared-ux/link/redirect_app/src/redirect_app_links.stories.tsx +++ b/packages/shared-ux/link/redirect_app/src/redirect_app_links.stories.tsx @@ -10,11 +10,12 @@ import { EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import React from 'react'; import { action } from '@storybook/addon-actions'; -import { RedirectAppLinks } from '.'; +import { RedirectAppLinks as Component } from '.'; +import { getStoryArgTypes, getStoryServices } from './mocks'; import mdx from '../README.mdx'; export default { - title: 'Redirect App Links', + title: 'Link', description: 'An "area of effect" component which intercepts clicks on anchor elements and redirects them to Kibana solutions without a page refresh.', parameters: { @@ -24,16 +25,10 @@ export default { }, }; -export const Component = () => { - const navigateToUrl = async (url: string) => { - action('navigateToUrl')(url); - }; - - const currentAppId = 'abc123'; - +export const RedirectAppLinks = () => { return ( <> - + { - + { ); }; + +RedirectAppLinks.argTypes = getStoryArgTypes(); diff --git a/packages/shared-ux/link/redirect_app/src/redirect_app_links.tsx b/packages/shared-ux/link/redirect_app/src/redirect_app_links.tsx index 1e805ad4475b6..9a069881b2128 100644 --- a/packages/shared-ux/link/redirect_app/src/redirect_app_links.tsx +++ b/packages/shared-ux/link/redirect_app/src/redirect_app_links.tsx @@ -6,15 +6,10 @@ * Side Public License, v 1. */ -import React from 'react'; +import React, { FC } from 'react'; import { useServices } from './services'; -import { - RedirectAppLinks as Component, - Props as ComponentProps, -} from './redirect_app_links.component'; - -type Props = Omit; +import { RedirectAppLinks as Component } from './redirect_app_links.component'; /** * A service-enabled component that provides Kibana-specific functionality to the `RedirectAppLinks` @@ -27,4 +22,6 @@ type Props = Omit; * * ``` */ -export const RedirectAppLinks = (props: Props) => ; +export const RedirectAppLinks: FC<{}> = ({ children }) => ( + {children} +); diff --git a/packages/shared-ux/link/redirect_app/src/services.tsx b/packages/shared-ux/link/redirect_app/src/services.tsx index 22bc5a5cd0c55..b29d82f8eea13 100644 --- a/packages/shared-ux/link/redirect_app/src/services.tsx +++ b/packages/shared-ux/link/redirect_app/src/services.tsx @@ -25,8 +25,9 @@ const RedirectAppLinksContext = React.createContext(null); * Contextual services Provider. */ export const RedirectAppLinksProvider: FC = ({ children, ...services }) => { + const { navigateToUrl, currentAppId } = services; return ( - + {children} ); @@ -35,7 +36,7 @@ export const RedirectAppLinksProvider: FC = ({ children, ...services } /** * Kibana-specific contextual services to be adapted for this component. */ -export interface KibanaServices { +export interface KibanaDependencies { coreStart: { application: { currentAppId$: Observable; @@ -47,7 +48,7 @@ export interface KibanaServices { /** * Kibana-specific contextual services Provider. */ -export const RedirectAppLinksKibanaProvider: FC = ({ children, coreStart }) => { +export const RedirectAppLinksKibanaProvider: FC = ({ children, coreStart }) => { const { navigateToUrl, currentAppId$ } = coreStart.application; const currentAppId = useObservable(currentAppId$, undefined); diff --git a/packages/shared-ux/page/analytics_no_data/src/analytics_no_data_page.stories.tsx b/packages/shared-ux/page/analytics_no_data/src/analytics_no_data_page.stories.tsx index d5d82d801fc8d..8cb9b3aaa5f7e 100644 --- a/packages/shared-ux/page/analytics_no_data/src/analytics_no_data_page.stories.tsx +++ b/packages/shared-ux/page/analytics_no_data/src/analytics_no_data_page.stories.tsx @@ -16,7 +16,7 @@ import mdx from '../README.mdx'; import { Params, getStoryArgTypes, getStoryServices } from './mocks'; export default { - title: 'No Data/Analytics', + title: 'No Data/Analytics Page', description: 'An Analytics-specific version of KibanaNoDataPage.', parameters: { docs: { diff --git a/packages/shared-ux/page/kibana_no_data/src/kibana_no_data_page.stories.tsx b/packages/shared-ux/page/kibana_no_data/src/kibana_no_data_page.stories.tsx index 206b958e64771..c18adc20e4af0 100644 --- a/packages/shared-ux/page/kibana_no_data/src/kibana_no_data_page.stories.tsx +++ b/packages/shared-ux/page/kibana_no_data/src/kibana_no_data_page.stories.tsx @@ -16,7 +16,7 @@ import { KibanaNoDataPageProvider } from './services'; import mdx from '../README.mdx'; export default { - title: 'No Data/Kibana', + title: 'No Data/Kibana Page', description: 'A component to display when there is no data available', parameters: { docs: { diff --git a/packages/shared-ux/page/kibana_no_data/src/mocks.ts b/packages/shared-ux/page/kibana_no_data/src/mocks.ts index e88097c933849..d91949ddc6c32 100644 --- a/packages/shared-ux/page/kibana_no_data/src/mocks.ts +++ b/packages/shared-ux/page/kibana_no_data/src/mocks.ts @@ -14,6 +14,12 @@ import { getNoDataViewsPromptMockServices, } from '@kbn/shared-ux-prompt-no-data-views'; +import { + getNoDataCardMockServices, + getNoDataCardStoryArgTypes, + getNoDataCardStoryServices, +} from '@kbn/shared-ux-card-no-data'; + import { KibanaNoDataPageServices } from './services'; // TODO: clintandrewhall - this looks (and is) a bit complicated because the No Data View @@ -32,6 +38,8 @@ export const getStoryServices = (params: StoryParams) => { const { canCreateNewDataView, dataViewsDocLink, openDataViewEditor } = getNoDataViewsPromptStorybookServices(params); + const { addBasePath, canAccessFleet } = getNoDataCardStoryServices(params); + // Workaround to leverage the services package. const { application, data, docLinks, editors, http, permissions, platform } = servicesFactory(params); @@ -47,6 +55,8 @@ export const getStoryServices = (params: StoryParams) => { canCreateNewDataView, dataViewsDocLink, openDataViewEditor, + addBasePath, + canAccessFleet, }; return services; @@ -75,6 +85,7 @@ export const getStoryArgTypes = () => ({ defaultValue: false, }, ...getNoDataViewsPromptStoryArgTypes(), + ...getNoDataCardStoryArgTypes(), }); /** @@ -84,6 +95,8 @@ export const getMockServices = (params?: MockServicesFactoryParams) => { const { canCreateNewDataView, dataViewsDocLink, openDataViewEditor } = getNoDataViewsPromptMockServices(); + const { addBasePath, canAccessFleet } = getNoDataCardMockServices(); + const { application, data, docLinks, editors, http, permissions, platform } = mockServicesFactory(params); @@ -98,6 +111,8 @@ export const getMockServices = (params?: MockServicesFactoryParams) => { canCreateNewDataView, dataViewsDocLink, openDataViewEditor, + addBasePath, + canAccessFleet, }; return services; diff --git a/packages/shared-ux/page/kibana_no_data/src/services.tsx b/packages/shared-ux/page/kibana_no_data/src/services.tsx index 07b5787ae8b72..47f6b9c3690f9 100644 --- a/packages/shared-ux/page/kibana_no_data/src/services.tsx +++ b/packages/shared-ux/page/kibana_no_data/src/services.tsx @@ -13,6 +13,8 @@ import { NoDataViewsPromptKibanaProvider, } from '@kbn/shared-ux-prompt-no-data-views'; +import { NoDataCardProvider, NoDataCardKibanaProvider } from '@kbn/shared-ux-card-no-data'; + import { LegacyServicesProvider, getLegacyServices } from './legacy_services'; /** @@ -85,7 +87,9 @@ export const KibanaNoDataPageProvider: FC = ({ }) => ( - {children} + + {children} + ); @@ -159,7 +163,9 @@ export const KibanaNoDataPageKibanaProvider: FC - {children} + + {children} + ); diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index ca46806ff7214..3eeda946ada8f 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -5336,11 +5336,10 @@ "share.urlService.redirect.RedirectManager.missingParamLocator": "ID du localisateur non spécifié. Spécifiez le paramètre de recherche \"l\" dans l'URL ; ce devrait être un ID de localisateur existant.", "share.urlService.redirect.RedirectManager.missingParamParams": "Paramètres du localisateur non spécifiés. Spécifiez le paramètre de recherche \"p\" dans l'URL ; ce devrait être un objet sérialisé JSON des paramètres du localisateur.", "share.urlService.redirect.RedirectManager.missingParamVersion": "Version des paramètres du localisateur non spécifiée. Spécifiez le paramètre de recherche \"v\" dans l'URL ; ce devrait être la version de Kibana au moment de la génération des paramètres du localisateur.", - "sharedUXComponents.noDataPage.elasticAgentCard.description": "Utilisez Elastic Agent pour collecter de manière simple et unifiée les données de vos machines.", - "sharedUXComponents.noDataPage.elasticAgentCard.noPermission.description": "Cette intégration n'est pas encore activée. Votre administrateur possède les autorisations requises pour l’activer.", - "sharedUXComponents.noDataPage.elasticAgentCard.noPermission.title": "Contactez votre administrateur", - "sharedUXComponents.noDataPage.elasticAgentCard.title": "Ajouter Elastic Agent", - "sharedUXComponents.pageTemplate.noDataCard.description": "Continuer sans collecter de données", + "sharedUXPackages.card.noData.description": "Utilisez Elastic Agent pour collecter de manière simple et unifiée les données de vos machines.", + "sharedUXPackages.card.noData.noPermission.description": "Cette intégration n'est pas encore activée. Votre administrateur possède les autorisations requises pour l’activer.", + "sharedUXPackages.card.noData.noPermission.title": "Contactez votre administrateur", + "sharedUXPackages.card.noData.title": "Ajouter Elastic Agent", "sharedUXPackages.buttonToolbar.buttons.addFromLibrary.libraryButtonLabel": "Ajouter depuis la bibliothèque", "sharedUXPackages.noDataViewsPrompt.learnMore": "Envie d'en savoir plus ?", "sharedUXPackages.noDataViewsPrompt.readDocumentation": "Lisez les documents", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 83bf2bf0eee3d..2fa35f6e723b2 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -5438,11 +5438,10 @@ "share.urlService.redirect.RedirectManager.missingParamLocator": "ロケーターIDが指定されていません。URLで「l」検索パラメーターを指定します。これは既存のロケーターIDにしてください。", "share.urlService.redirect.RedirectManager.missingParamParams": "ロケーターパラメーターが指定されていません。URLで「p」検索パラメーターを指定します。これはロケーターパラメーターのJSONシリアル化オブジェクトにしてください。", "share.urlService.redirect.RedirectManager.missingParamVersion": "ロケーターパラメーターバージョンが指定されていません。URLで「v」検索パラメーターを指定します。これはロケーターパラメーターが生成されたときのKibanaのリリースバージョンです。", - "sharedUXComponents.noDataPage.elasticAgentCard.description": "Elasticエージェントを使用すると、シンプルで統一された方法でコンピューターからデータを収集するできます。", - "sharedUXComponents.noDataPage.elasticAgentCard.noPermission.description": "この統合はまだ有効ではありません。管理者にはオンにするために必要なアクセス権があります。", - "sharedUXComponents.noDataPage.elasticAgentCard.noPermission.title": "管理者にお問い合わせください", - "sharedUXComponents.noDataPage.elasticAgentCard.title": "Elasticエージェントの追加", - "sharedUXComponents.pageTemplate.noDataCard.description": "データを収集せずに続行", + "sharedUXPackages.card.noData.description": "Elasticエージェントを使用すると、シンプルで統一された方法でコンピューターからデータを収集するできます。", + "sharedUXPackages.card.noData.noPermission.description": "この統合はまだ有効ではありません。管理者にはオンにするために必要なアクセス権があります。", + "sharedUXPackages.card.noData.noPermission.title": "管理者にお問い合わせください", + "sharedUXPackages.card.noData.title": "Elasticエージェントの追加", "sharedUXPackages.buttonToolbar.buttons.addFromLibrary.libraryButtonLabel": "ライブラリから追加", "sharedUXPackages.noDataViewsPrompt.learnMore": "詳細について", "sharedUXPackages.noDataViewsPrompt.readDocumentation": "ドキュメントを読む", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index f37c2745c000f..01b30dda57b2c 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -5449,11 +5449,10 @@ "share.urlService.redirect.RedirectManager.missingParamLocator": "未指定定位器 ID。在 URL 中指定“l”搜索参数,其应为现有定位器 ID。", "share.urlService.redirect.RedirectManager.missingParamParams": "定位器参数未指定。在 URL 中指定“p”搜索参数,其应为定位器参数的 JSON 序列化对象。", "share.urlService.redirect.RedirectManager.missingParamVersion": "定位器参数版本未指定。在 URL 中指定“v”搜索参数,其应为生成定位器参数时 Kibana 的版本。", - "sharedUXComponents.noDataPage.elasticAgentCard.description": "使用 Elastic 代理以简单统一的方式从您的计算机中收集数据。", - "sharedUXComponents.noDataPage.elasticAgentCard.noPermission.description": "尚未启用此集成。您的管理员具有打开它所需的权限。", - "sharedUXComponents.noDataPage.elasticAgentCard.noPermission.title": "请联系您的管理员", - "sharedUXComponents.noDataPage.elasticAgentCard.title": "添加 Elastic 代理", - "sharedUXComponents.pageTemplate.noDataCard.description": "继续,而不收集数据", + "sharedUXPackages.card.noData.description": "使用 Elastic 代理以简单统一的方式从您的计算机中收集数据。", + "sharedUXPackages.card.noData.noPermission.description": "尚未启用此集成。您的管理员具有打开它所需的权限。", + "sharedUXPackages.card.noData.noPermission.title": "请联系您的管理员", + "sharedUXPackages.card.noData.title": "添加 Elastic 代理", "sharedUXPackages.buttonToolbar.buttons.addFromLibrary.libraryButtonLabel": "从库中添加", "sharedUXPackages.noDataViewsPrompt.learnMore": "希望了解详情?", "sharedUXPackages.noDataViewsPrompt.readDocumentation": "阅读文档", diff --git a/yarn.lock b/yarn.lock index 649e628ecf74a..2d8dde05811f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3351,6 +3351,10 @@ version "0.0.0" uid "" +"@kbn/shared-ux-card-no-data@link:bazel-bin/packages/shared-ux/card/no_data": + version "0.0.0" + uid "" + "@kbn/shared-ux-components@link:bazel-bin/packages/kbn-shared-ux-components": version "0.0.0" uid "" @@ -6722,6 +6726,10 @@ version "0.0.0" uid "" +"@types/kbn__shared-ux-card-no-data@link:bazel-bin/packages/shared-ux/card/no_data/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__shared-ux-components@link:bazel-bin/packages/kbn-shared-ux-components/npm_module_types": version "0.0.0" uid "" From d8558fcaaff9c76ce5c3ecc2d1e5939ad7a5755b Mon Sep 17 00:00:00 2001 From: Kyle Pollich Date: Tue, 21 Jun 2022 12:22:38 -0400 Subject: [PATCH 10/61] [Fleet] [Feature Branch] Create Fleet `_debug` UI (#131322) * Bootstrap Fleet /_debug route + React Query * [Fleet] [Debug UI] Implement "Agent Policy Debugger" UI (#131335) * Add initial agent policy debugger module * Fix clear button in agent policy select * Implement deletion of selected policy * Fix layout of combo-box/button * Add searchable ID to agent policy labels * Add description text to debugger module * Fixup loading/error logic * [Fleet] Saved Objects Debugger (#131370) * saved objects debugger * converted so names to combobox * types fix * extracted combo box component * fixed error display * [Fleet] [Debug UI] Implement "Integration Debugger" UI (#131354) * Implement integrations debugger UI * Clean up + add link to integration settings * Add divider below integration debugger * Clean up loading states * Fix flex spacing for saved objects debugger * [Fleet] Added fleet indices query to debug UI (#131395) * fleet indices * keeping the type and name combo close in saved objects * fixed prettier * removed useEffects, simplified use of useQuery (#131482) * using different query for saved objects (#131491) * [Fleet] [Debug UI] Implement "Preconfiguration debugger" UI (#131436) * Implement preconfiguration debugger UI * Add code block view * Added missing newline Co-authored-by: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> * Prevent flicker in saved objects code block * added links including health check report (#131503) * added links including health check report * experiment with accordion Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> * Refactor panel rendering + danger zone callout * Convert panels to all singular * confirm modal for reset preconfig (#131596) * Add icons to useful links + fix reset all -> title case * Fix disabled health check link * added orphaned policies api and to debug page (#131697) * Language fixes around orphaned policy module * Add some basic dev docs around the debugger * increasing page load bundle limit slightly (#132690) * Remove health check link as it's not implemented * Fix agents link + disable reset all button when no preconfigured policies * Update doc title on debug page * Translate everything * Remove delete orphaned endpoint + fix force flag in existing delete endpoint * Fix type * Add API integration tests for orphaned policies Co-authored-by: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../plugins/fleet/common/constants/routes.ts | 2 + .../plugins/fleet/common/services/routes.ts | 13 + .../common/types/rest_spec/package_policy.ts | 1 + .../plugins/fleet/dev_docs/fleet_debugger.md | 27 ++ .../fleet/public/applications/fleet/app.tsx | 5 + .../components/agent_policy_debugger.tsx | 172 ++++++++++ .../sections/debug/components/code_block.tsx | 38 +++ .../debug/components/fleet_index_debugger.tsx | 120 +++++++ .../fleet/sections/debug/components/index.tsx | 13 + .../debug/components/integration_debugger.tsx | 314 ++++++++++++++++++ .../orphaned_integration_policy_debugger.tsx | 262 +++++++++++++++ .../components/preconfiguration_debugger.tsx | 272 +++++++++++++++ .../components/saved_object_debugger.tsx | 178 ++++++++++ .../components/saved_object_names_combo.tsx | 110 ++++++ .../fleet/sections/debug/index.tsx | 187 +++++++++++ .../fleet/public/constants/page_paths.ts | 5 +- .../public/hooks/use_request/agent_policy.ts | 16 + .../fleet/public/hooks/use_request/epm.ts | 5 +- .../hooks/use_request/package_policy.ts | 7 + .../plugins/fleet/public/search_provider.ts | 17 +- x-pack/plugins/fleet/public/services/icons.ts | 24 ++ x-pack/plugins/fleet/server/plugin.ts | 2 + .../fleet/server/routes/health_check/index.ts | 34 ++ x-pack/plugins/fleet/server/routes/index.ts | 1 + .../server/routes/package_policy/handlers.ts | 54 ++- .../server/routes/package_policy/index.ts | 12 + .../apis/package_policy/get.ts | 192 +++++++---- 27 files changed, 2007 insertions(+), 76 deletions(-) create mode 100644 x-pack/plugins/fleet/dev_docs/fleet_debugger.md create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/agent_policy_debugger.tsx create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/code_block.tsx create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/fleet_index_debugger.tsx create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/index.tsx create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/integration_debugger.tsx create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/orphaned_integration_policy_debugger.tsx create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/preconfiguration_debugger.tsx create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/saved_object_debugger.tsx create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/saved_object_names_combo.tsx create mode 100644 x-pack/plugins/fleet/public/applications/fleet/sections/debug/index.tsx create mode 100644 x-pack/plugins/fleet/public/services/icons.ts create mode 100644 x-pack/plugins/fleet/server/routes/health_check/index.ts diff --git a/x-pack/plugins/fleet/common/constants/routes.ts b/x-pack/plugins/fleet/common/constants/routes.ts index 7b185960dcb7b..33bf1b6f6b5b7 100644 --- a/x-pack/plugins/fleet/common/constants/routes.ts +++ b/x-pack/plugins/fleet/common/constants/routes.ts @@ -54,6 +54,7 @@ export const PACKAGE_POLICY_API_ROUTES = { DELETE_PATTERN: `${PACKAGE_POLICY_API_ROOT}/delete`, UPGRADE_PATTERN: `${PACKAGE_POLICY_API_ROOT}/upgrade`, DRYRUN_PATTERN: `${PACKAGE_POLICY_API_ROOT}/upgrade/dryrun`, + ORPHANED_INTEGRATION_POLICIES: `${INTERNAL_ROOT}/orphaned_integration_policies`, }; // Agent policy API routes @@ -92,6 +93,7 @@ export const SETTINGS_API_ROUTES = { // App API routes export const APP_API_ROUTES = { + HEALTH_CHECK_PATTERN: `${API_ROOT}/health_check`, CHECK_PERMISSIONS_PATTERN: `${API_ROOT}/check-permissions`, GENERATE_SERVICE_TOKEN_PATTERN: `${API_ROOT}/service_tokens`, // deprecated since 8.0 diff --git a/x-pack/plugins/fleet/common/services/routes.ts b/x-pack/plugins/fleet/common/services/routes.ts index a8a6c34f06f3c..8c66a11cd3569 100644 --- a/x-pack/plugins/fleet/common/services/routes.ts +++ b/x-pack/plugins/fleet/common/services/routes.ts @@ -19,6 +19,7 @@ import { SETTINGS_API_ROUTES, APP_API_ROUTES, K8S_API_ROUTES, + PRECONFIGURATION_API_ROUTES, } from '../constants'; export const epmRouteService = { @@ -105,6 +106,10 @@ export const packagePolicyRouteService = { getDryRunPath: () => { return PACKAGE_POLICY_API_ROUTES.DRYRUN_PATTERN; }, + + getOrphanedIntegrationPoliciesPath: () => { + return PACKAGE_POLICY_API_ROUTES.ORPHANED_INTEGRATION_POLICIES; + }, }; export const agentPolicyRouteService = { @@ -150,6 +155,14 @@ export const agentPolicyRouteService = { getK8sFullDownloadPath: () => { return K8S_API_ROUTES.K8S_DOWNLOAD_PATTERN; }, + + getResetOnePreconfiguredAgentPolicyPath: (agentPolicyId: string) => { + return PRECONFIGURATION_API_ROUTES.RESET_ONE_PATTERN.replace(`{agentPolicyId}`, agentPolicyId); + }, + + getResetAllPreconfiguredAgentPolicyPath: () => { + return PRECONFIGURATION_API_ROUTES.RESET_PATTERN; + }, }; export const dataStreamRouteService = { diff --git a/x-pack/plugins/fleet/common/types/rest_spec/package_policy.ts b/x-pack/plugins/fleet/common/types/rest_spec/package_policy.ts index 35202a0eb42aa..b2cb1a4561394 100644 --- a/x-pack/plugins/fleet/common/types/rest_spec/package_policy.ts +++ b/x-pack/plugins/fleet/common/types/rest_spec/package_policy.ts @@ -49,6 +49,7 @@ export type UpdatePackagePolicyResponse = CreatePackagePolicyResponse; export interface DeletePackagePoliciesRequest { body: { packagePolicyIds: string[]; + force?: boolean; }; } diff --git a/x-pack/plugins/fleet/dev_docs/fleet_debugger.md b/x-pack/plugins/fleet/dev_docs/fleet_debugger.md new file mode 100644 index 0000000000000..cafaeaae71f37 --- /dev/null +++ b/x-pack/plugins/fleet/dev_docs/fleet_debugger.md @@ -0,0 +1,27 @@ +# Fleet Debugger + +Fleet includes a "debug" interface that provides some insight and data management capabilities around Fleet's underlying data. This interface can be used to diagnose issues, assist support engineers, and restore functionality to broken Fleet installations. + +![Fleet Debugger UI Screenshot](https://user-images.githubusercontent.com/6766512/167193984-fcb100c4-729d-4a0b-ae64-2b280272da96.png) + +## Accessing the Fleet debugger + +The debugger is served at `/app/fleet/_debug`. This page shares the same permissions requirement as other `/fleet` pages, so you'll need a user with the `fleet.all` permission. + +## Using the Fleet debugger + +The Fleet debugger provides debugger modules for the following Fleet data: + +- Agent Policies +- Installed Integrations +- Saved Objects +- System Indices +- Preconfiguration +- "Orphaned" Integration Policies + +Each module contains an explanation of its functionality and behavior, but generally the goal of each module is to + +1. Provide visibility into the underlying data for the given object +1. Provide cleanup/reset functionality in order to recover from malformed data that may be preventing normal usage of Fleet + +The debugger should be used when possible to assist with SDH's when we request things like a copy/paste of a given policy object or for some cleanup operation to be run via `cURL`. As common SDH tasks are identified, the debugger should be expanded to suit the Fleet UI team's and the support team's needs. diff --git a/x-pack/plugins/fleet/public/applications/fleet/app.tsx b/x-pack/plugins/fleet/public/applications/fleet/app.tsx index eb8b01d831cd5..ca8083fb51325 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/app.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/app.tsx @@ -58,6 +58,7 @@ import { MissingESRequirementsPage } from './sections/agents/agent_requirements_ import { CreatePackagePolicyPage } from './sections/agent_policy/create_package_policy_page'; import { EnrollmentTokenListPage } from './sections/agents/enrollment_token_list_page'; import { SettingsApp } from './sections/settings'; +import { DebugPage } from './sections/debug'; const FEEDBACK_URL = 'https://ela.st/fleet-feedback'; @@ -326,6 +327,10 @@ export const AppRoutes = memo( + + + + {/* TODO: Move this route to the Integrations app */} diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/agent_policy_debugger.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/agent_policy_debugger.tsx new file mode 100644 index 0000000000000..71ee096f1e4fa --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/agent_policy_debugger.tsx @@ -0,0 +1,172 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { useState } from 'react'; +import { + EuiButton, + EuiCallOut, + EuiCode, + EuiComboBox, + EuiFlexGroup, + EuiFlexItem, + EuiLink, + EuiSpacer, + EuiText, +} from '@elastic/eui'; +import { useQuery } from 'react-query'; + +import { FormattedMessage } from '@kbn/i18n-react'; +import { i18n } from '@kbn/i18n'; + +import { sendGetAgentPolicies, useLink } from '../../../hooks'; +import { SO_SEARCH_LIMIT } from '../../../constants'; + +import { policyHasFleetServer } from '../../../services'; +import type { AgentPolicy } from '../../../types'; +import { AgentPolicyDeleteProvider } from '../../agent_policy/components'; + +import { queryClient } from '..'; + +import { CodeBlock } from './code_block'; + +const fetchAgentPolicies = async () => { + const response = await sendGetAgentPolicies({ + full: true, + perPage: SO_SEARCH_LIMIT, + sortOrder: 'asc', + }); + + if (response.error) { + throw new Error(response.error.message); + } + + return response; +}; + +export const AgentPolicyDebugger: React.FunctionComponent = () => { + const { getHref } = useLink(); + const [selectedPolicyId, setSelectedPolicyId] = useState(); + + // TODO: Depending on the number of agent policies, this might need to be switched to + // `useInfinite` query with an infinite scrolling approach in the dropdown options. + const { data, status } = useQuery('debug-agent-policies', fetchAgentPolicies); + + const agentPolicies = data?.data?.items ?? []; + const comboBoxOptions = agentPolicies.map((policy) => ({ + label: `${policy.name} - ${policy.id}`, + value: policy.id, + })); + + const selectedOptions = selectedPolicyId + ? [comboBoxOptions.find((option) => option.value === selectedPolicyId)!] + : []; + + const selectedAgentPolicy = agentPolicies.find((policy) => policy.id === selectedPolicyId); + + const onDelete = () => { + setSelectedPolicyId(undefined); + queryClient.invalidateQueries('debug-agent-policies'); + }; + + if (status === 'error') { + return ( + + + + ); + } + + return ( + <> + +

+ id }} + /> +

+
+ + + + + + { + // Handle "clear" action + if (!newSelectedOptions.length) { + setSelectedPolicyId(undefined); + } else { + setSelectedPolicyId(newSelectedOptions[0].value); + } + }} + /> + + + {selectedPolicyId && ( + + {(deleteAgentPolicyPrompt) => { + return ( + +
+ deleteAgentPolicyPrompt(selectedPolicyId, onDelete)} + > + + +
+
+ ); + }} +
+ )} +
+ + {selectedPolicyId && ( + <> + + + + + + + + + + + )} + + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/code_block.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/code_block.tsx new file mode 100644 index 0000000000000..3addcaa862c3f --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/code_block.tsx @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { CodeEditor } from '@kbn/kibana-react-plugin/public'; + +/** + * A read-only code block with various default settings suitable for displaying API responses, etc + */ +export const CodeBlock: React.FunctionComponent<{ value: string }> = ({ value }) => { + return ( + + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/fleet_index_debugger.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/fleet_index_debugger.tsx new file mode 100644 index 0000000000000..7c0c81858414a --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/fleet_index_debugger.tsx @@ -0,0 +1,120 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { + EuiCallOut, + EuiComboBox, + EuiFlexGroup, + EuiFlexItem, + EuiFormRow, + EuiSpacer, + EuiText, +} from '@elastic/eui'; +import { useQuery } from 'react-query'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import { sendRequest } from '../../../hooks'; + +import { CodeBlock } from './code_block'; + +const fetchIndex = async (index?: string) => { + if (!index) return; + const path = `/${index}/_search`; + const response = await sendRequest({ + method: 'post', + path: `/api/console/proxy`, + query: { + path, + method: 'GET', + }, + }); + + return response; +}; + +export const FleetIndexDebugger = () => { + const indices = [ + { label: '.fleet-agents', value: '.fleet-agents' }, + { label: '.fleet-actions', value: '.fleet-actions' }, + ]; + const [index, setIndex] = useState(); + + const { data: indexResult, status } = useQuery( + ['debug-indices', index], + () => fetchIndex(index), + { + retry: false, + } + ); + + const selectedOptions = index ? [indices.find((option) => option.value === index)!] : []; + + return ( + <> + +

+ +

+
+ + + + + + { + if (!newSelectedOptions.length) { + setIndex(undefined); + } else { + setIndex(newSelectedOptions[0].value as string); + } + }} + /> + + + + {indexResult?.error && ( + <> + + + {(indexResult?.error as any)?.error?.reason ?? ( + + )} + + + )} + + {indexResult && ( + <> + + + + )} + + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/index.tsx new file mode 100644 index 0000000000000..6a89a696874a7 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/index.tsx @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './agent_policy_debugger'; +export * from './integration_debugger'; +export * from './saved_object_debugger'; +export * from './preconfiguration_debugger'; +export * from './fleet_index_debugger'; +export * from './orphaned_integration_policy_debugger'; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/integration_debugger.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/integration_debugger.tsx new file mode 100644 index 0000000000000..92f82285357f0 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/integration_debugger.tsx @@ -0,0 +1,314 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { + EuiButton, + EuiButtonEmpty, + EuiCallOut, + EuiComboBox, + EuiConfirmModal, + EuiFlexGroup, + EuiFlexItem, + EuiHighlight, + EuiIcon, + EuiLink, + EuiSpacer, + EuiText, +} from '@elastic/eui'; +import { useMutation, useQuery } from 'react-query'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import { getEuiIconType } from '../../../../../services/icons'; + +import { + sendGetPackages, + sendInstallPackage, + sendRemovePackage, + useLink, + useStartServices, +} from '../../../hooks'; +import type { PackageListItem } from '../../../types'; +import { queryClient } from '..'; +import { pkgKeyFromPackageInfo } from '../../../services'; + +const fetchInstalledIntegrations = async () => { + const response = await sendGetPackages({ experimental: true }); + + if (response.error) { + throw new Error(response.error.message); + } + + const installedIntegrations = response.data?.items.filter(({ status }) => status === 'installed'); + + return installedIntegrations; +}; + +export const IntegrationDebugger: React.FunctionComponent = () => { + const { http, notifications } = useStartServices(); + const { getHref } = useLink(); + + const [selectedIntegrationId, setSelectedIntegrationId] = useState(); + const [isReinstallModalVisible, setIsReinstallModalVisible] = useState(false); + const [isUninstallModalVisible, setIsUninstallModalVisible] = useState(false); + + const integrations = useQuery('debug-integrations', fetchInstalledIntegrations); + + const uninstallMutation = useMutation(async (integration: PackageListItem) => { + const response = await sendRemovePackage(integration.name, integration.version, true); + + if (response.error) { + notifications.toasts.addError(response.error, { + title: i18n.translate('xpack.fleet.debug.integrationDebugger.uninstall.error', { + defaultMessage: 'Error uninstalling {integrationTitle}', + values: { integrationTitle: integration.title }, + }), + toastMessage: response.error.message, + }); + + setIsUninstallModalVisible(false); + throw new Error(response.error.message); + } + + notifications.toasts.addSuccess( + i18n.translate('xpack.fleet.debug.integrationDebugger.uninstall.success', { + defaultMessage: 'Successfully uninstalled {integrationTitle}', + values: { integrationTitle: integration.title }, + }) + ); + + setSelectedIntegrationId(undefined); + setIsUninstallModalVisible(false); + + queryClient.invalidateQueries('debug-integrations'); + + return response.data; + }); + + const reinstallMutation = useMutation(async (integration: PackageListItem) => { + const uninstallResponse = await sendRemovePackage(integration.name, integration.version, true); + + if (uninstallResponse.error) { + notifications.toasts.addError(uninstallResponse.error, { + title: i18n.translate('xpack.fleet.debug.integrationDebugger.reinstall.error', { + defaultMessage: 'Error reinstalling {integrationTitle}', + values: { integrationTitle: integration.title }, + }), + toastMessage: uninstallResponse.error.message, + }); + + setIsReinstallModalVisible(false); + throw new Error(uninstallResponse.error.message); + } + + const installResponse = await sendInstallPackage(integration.name, integration.version); + + if (installResponse.error) { + notifications.toasts.addError(installResponse.error, { + title: i18n.translate('xpack.fleet.debug.integrationDebugger.reinstall.error', { + defaultMessage: 'Error reinstalling {integrationTitle}', + values: { integrationTitle: integration.title }, + }), + toastMessage: installResponse.error.message, + }); + + setIsReinstallModalVisible(false); + throw new Error(installResponse.error.message); + } + + notifications.toasts.addSuccess( + i18n.translate('xpack.fleet.debug.integrationDebugger.reinstall.success', { + defaultMessage: 'Successfully reinstalled {integrationTitle}', + values: { integrationTitle: integration.title }, + }) + ); + + setSelectedIntegrationId(undefined); + setIsReinstallModalVisible(false); + + queryClient.invalidateQueries('debug-integrations'); + + return installResponse.data; + }); + + if (integrations.status === 'error') { + return ( + + + + ); + } + + const comboBoxOptions = + integrations.data?.map((integration) => ({ + label: integration.name, + value: integration.id, + icon: getEuiIconType(integration, http.basePath), + })) ?? []; + + const selectedOptions = selectedIntegrationId + ? [comboBoxOptions.find((option) => option.value === selectedIntegrationId)!] + : []; + + const selectedIntegration = integrations.data?.find( + (integration) => integration.id === selectedIntegrationId + ); + + return ( + <> + +

+ +

+ +

+ +

+
+ + + + + + 0 ? ( + + + + ) : undefined + } + renderOption={(option, searchValue, contentClassName) => ( + + +   + {option.label} + + )} + onChange={(newSelectedOptions) => { + // Handle "clear" action + if (!newSelectedOptions.length) { + setSelectedIntegrationId(undefined); + } else { + setSelectedIntegrationId(newSelectedOptions[0].value); + } + }} + /> + + + {selectedIntegration && ( + + + setIsReinstallModalVisible(true)}> + Reinstall + + + + + setIsUninstallModalVisible(true)}> + Uninstall + + + + {isReinstallModalVisible && ( + setIsReinstallModalVisible(false)} + onConfirm={() => reinstallMutation.mutate(selectedIntegration)} + isLoading={reinstallMutation.isLoading} + cancelButtonText={i18n.translate( + 'xpack.fleet.debug.integrationDebugger.cancelReinstall', + { defaultMessage: 'Cancel' } + )} + confirmButtonText={i18n.translate( + 'xpack.fleet.debug.integrationDebugger.confirmReinstall', + { defaultMessage: 'Reinstall' } + )} + > + + + )} + + {isUninstallModalVisible && ( + setIsUninstallModalVisible(false)} + onConfirm={() => uninstallMutation.mutate(selectedIntegration)} + isLoading={uninstallMutation.isLoading} + cancelButtonText={i18n.translate( + 'xpack.fleet.debug.integrationDebugger.cancelUninstall', + { defaultMessage: 'Cancel' } + )} + confirmButtonText={i18n.translate( + 'xpack.fleet.debug.integrationDebugger.confirmUninstall', + { defaultMessage: 'Uninstall' } + )} + > + + + )} + + )} + + + {selectedIntegration && ( + <> + + + + + + )} + + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/orphaned_integration_policy_debugger.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/orphaned_integration_policy_debugger.tsx new file mode 100644 index 0000000000000..abc84ad425900 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/orphaned_integration_policy_debugger.tsx @@ -0,0 +1,262 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { + EuiSpacer, + EuiText, + EuiFlexGroup, + EuiComboBox, + EuiFlexItem, + EuiButton, + EuiConfirmModal, +} from '@elastic/eui'; +import { useMutation, useQuery } from 'react-query'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import { + sendDeletePackagePolicy, + sendGetOrphanedIntegrationPolicies, + useStartServices, +} from '../../../hooks'; +import { queryClient } from '..'; + +import { CodeBlock } from './code_block'; + +const fetchOrphanedPolicies = async () => { + const response = await sendGetOrphanedIntegrationPolicies(); + + if (response.error) { + throw new Error(response.error.message); + } + + return response.data?.items ?? []; +}; + +export const OrphanedIntegrationPolicyDebugger: React.FunctionComponent = () => { + const { notifications } = useStartServices(); + + const [selectedPolicyId, setSelectedPolicyId] = useState(); + const [isDeleteModalVisible, setIsDeleteModalVisible] = useState(false); + const [isDeleteAllModalVisible, setIsDeleteAllModalVisible] = useState(false); + + const { data: orphanedPolicies } = useQuery('debug-orphaned-policies', fetchOrphanedPolicies); + + const comboBoxOptions = + orphanedPolicies?.map((policy: { id: string; name: string }) => ({ + label: policy.name, + value: policy.id, + })) ?? []; + + const selectedOptions = selectedPolicyId + ? [comboBoxOptions.find(({ value }: { value: string }) => value === selectedPolicyId)!] + : []; + + const selectedPolicy = orphanedPolicies?.find( + (policy: { id: string }) => policy.id === selectedPolicyId + ); + + const deleteOnePolicyMutation = useMutation(async (policyId: string) => { + const response = await sendDeletePackagePolicy({ + packagePolicyIds: [policyId], + force: true, + }); + + if (response.error) { + notifications.toasts.addError(response.error, { + title: i18n.translate('xpack.fleet.debug.orphanedIntegrationPolicyDebugger.deleteError', { + defaultMessage: 'Error deleting policy', + }), + toastMessage: response.error.message, + }); + throw new Error(response.error.message); + } + + notifications.toasts.addSuccess( + i18n.translate('xpack.fleet.debug.orphanedIntegrationPolicyDebugger.deleteSuccess', { + defaultMessage: 'Successfully deleted orphaned policy', + }) + ); + queryClient.invalidateQueries('debug-orphaned-policies'); + setSelectedPolicyId(undefined); + setIsDeleteModalVisible(false); + + return response.data; + }); + + const deleteAllPoliciesMutation = useMutation(async () => { + const response = await sendDeletePackagePolicy({ + packagePolicyIds: orphanedPolicies?.map((policy: { id: string }) => policy.id), + force: true, + }); + + if (response.error) { + notifications.toasts.addError(response.error, { + title: i18n.translate( + 'xpack.fleet.debug.orphanedIntegrationPolicyDebugger.deleteAllError', + { defaultMessage: 'Error deleting orphaned policies' } + ), + toastMessage: response.error.message, + }); + throw new Error(response.error.message); + } + + notifications.toasts.addSuccess( + i18n.translate('xpack.fleet.debug.orphanedIntegrationPolicyDebugger.deleteAllSuccess', { + defaultMessage: 'Successfully deleted all orphaned policies', + }) + ); + queryClient.invalidateQueries('debug-orphaned-policies'); + setSelectedPolicyId(undefined); + setIsDeleteAllModalVisible(false); + + return response.data; + }); + + return ( + <> + +

+ +

+ +

+ +

+
+ + + + + + { + if (!newSelectedOptions.length) { + setSelectedPolicyId(undefined); + } else { + setSelectedPolicyId(newSelectedOptions[0].value); + } + }} + /> + + + +
+ setIsDeleteModalVisible(true)} + > + + +
+
+ + +
+ setIsDeleteAllModalVisible(true)} + > + + +
+
+
+ + {isDeleteModalVisible && selectedPolicy && selectedPolicyId && ( + setIsDeleteModalVisible(false)} + onConfirm={() => deleteOnePolicyMutation.mutate(selectedPolicyId)} + isLoading={deleteOnePolicyMutation.isLoading} + cancelButtonText={i18n.translate( + 'xpack.fleet.debug.orphanedIntegrationPolicyDebugger.cancelDelete', + { defaultMessage: 'Cancel' } + )} + confirmButtonText={i18n.translate( + 'xpack.fleet.debug.orphanedIntegrationPolicyDebugger.confirmDelete', + { defaultMessage: 'Delete' } + )} + > + + + )} + + {isDeleteAllModalVisible && ( + setIsDeleteAllModalVisible(false)} + onConfirm={() => deleteAllPoliciesMutation.mutate()} + isLoading={deleteAllPoliciesMutation.isLoading} + cancelButtonText={i18n.translate( + 'xpack.fleet.debug.orphanedIntegrationPolicyDebugger.cancelDeleteAll', + { defaultMessage: 'Cancel' } + )} + confirmButtonText={i18n.translate( + 'xpack.fleet.debug.orphanedIntegrationPolicyDebugger.confirmDeleteAll', + { defaultMessage: 'Delete all' } + )} + > + + + )} + + {selectedPolicyId && ( + <> + + + + )} + + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/preconfiguration_debugger.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/preconfiguration_debugger.tsx new file mode 100644 index 0000000000000..35e9bcba75492 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/preconfiguration_debugger.tsx @@ -0,0 +1,272 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { + EuiSpacer, + EuiText, + EuiCode, + EuiFlexGroup, + EuiComboBox, + EuiFlexItem, + EuiButton, + EuiLink, + EuiConfirmModal, +} from '@elastic/eui'; +import { useMutation, useQuery } from 'react-query'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import { + sendGetAgentPolicies, + sendResetAllPreconfiguredAgentPolicies, + sendResetOnePreconfiguredAgentPolicy, + useLink, + useStartServices, +} from '../../../hooks'; +import { AGENT_POLICY_SAVED_OBJECT_TYPE, SO_SEARCH_LIMIT } from '../../../constants'; +import { queryClient } from '..'; + +import { CodeBlock } from './code_block'; + +const fetchPreconfiguredPolicies = async () => { + const kuery = `${AGENT_POLICY_SAVED_OBJECT_TYPE}.is_preconfigured:true`; + + const response = await sendGetAgentPolicies({ kuery, perPage: SO_SEARCH_LIMIT, full: true }); + + if (response.error) { + throw new Error(response.error.message); + } + + return response.data?.items ?? []; +}; + +export const PreconfigurationDebugger: React.FunctionComponent = () => { + const { getHref } = useLink(); + const { notifications } = useStartServices(); + + const [selectedPolicyId, setSelectedPolicyId] = useState(); + const [isResetModalVisible, setIsResetModalVisible] = useState(false); + const [isResetAllModalVisible, setIsResetAllModalVisible] = useState(false); + + const preconfiguredPolicies = useQuery( + 'debug-preconfigured-policies', + fetchPreconfiguredPolicies + ); + + const comboBoxOptions = + preconfiguredPolicies.data?.map((policy) => ({ + label: policy.name, + value: policy.id, + })) ?? []; + + const selectedOptions = selectedPolicyId + ? [comboBoxOptions.find(({ value }) => value === selectedPolicyId)!] + : []; + + const selectedPolicy = preconfiguredPolicies.data?.find( + (policy) => policy.id === selectedPolicyId + ); + + const resetOnePolicyMutation = useMutation(async (policyId: string) => { + const response = await sendResetOnePreconfiguredAgentPolicy(policyId); + + if (response.error) { + notifications.toasts.addError(response.error, { + title: i18n.translate('xpack.fleet.debug.preconfigurationDebugger.resetError', { + defaultMessage: 'Error resetting policy', + }), + toastMessage: response.error.message, + }); + throw new Error(response.error.message); + } + + notifications.toasts.addSuccess( + i18n.translate('xpack.fleet.debug.preconfigurationDebugger.resetSuccess', { + defaultMessage: 'Successfully reset policy', + }) + ); + queryClient.invalidateQueries('debug-preconfigured-policies'); + setSelectedPolicyId(undefined); + setIsResetModalVisible(false); + + return response.data; + }); + + const resetAllPoliciesMutation = useMutation(async () => { + const response = await sendResetAllPreconfiguredAgentPolicies(); + + if (response.error) { + notifications.toasts.addError(response.error, { + title: i18n.translate('xpack.fleet.debug.preconfigurationDebugger.resetAllError', { + defaultMessage: 'Error resetting policies', + }), + toastMessage: response.error.message, + }); + throw new Error(response.error.message); + } + + notifications.toasts.addSuccess( + i18n.translate('xpack.fleet.debug.preconfigurationDebugger.resetAllSuccess', { + defaultMessage: 'Successfully reset policies', + }) + ); + queryClient.invalidateQueries('debug-preconfigured-policies'); + setSelectedPolicyId(undefined); + setIsResetAllModalVisible(false); + + return response.data; + }); + + return ( + <> + +

+ kibana.yml }} + /> +

+ +

+ +

+
+ + + + + + { + if (!newSelectedOptions.length) { + setSelectedPolicyId(undefined); + } else { + setSelectedPolicyId(newSelectedOptions[0].value); + } + }} + /> + + + +
+ setIsResetModalVisible(true)} + > + + +
+
+ + +
+ setIsResetAllModalVisible(true)} + > + + +
+
+
+ + {isResetModalVisible && selectedPolicy && selectedPolicyId && ( + setIsResetModalVisible(false)} + onConfirm={() => resetOnePolicyMutation.mutate(selectedPolicyId)} + isLoading={resetOnePolicyMutation.isLoading} + cancelButtonText={i18n.translate( + 'xpack.fleet.debug.preconfigurationDebugger.resetModalCancel', + { defaultMessage: 'Cancel' } + )} + confirmButtonText={i18n.translate( + 'xpack.fleet.debug.preconfigurationDebugger.resetModalConfirm', + { defaultMessage: 'Reset' } + )} + > + + + )} + + {isResetAllModalVisible && ( + setIsResetAllModalVisible(false)} + onConfirm={() => resetAllPoliciesMutation.mutate()} + isLoading={resetAllPoliciesMutation.isLoading} + cancelButtonText={i18n.translate( + 'xpack.fleet.debug.preconfigurationDebugger.resetAllModalCancel', + { defaultMessage: 'Cancel' } + )} + confirmButtonText={i18n.translate( + 'xpack.fleet.debug.preconfigurationDebugger.resetAllModalConfirm', + { defaultMessage: 'Reset all' } + )} + > + + + )} + + {selectedPolicyId && ( + <> + + + + + + + + + )} + + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/saved_object_debugger.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/saved_object_debugger.tsx new file mode 100644 index 0000000000000..c23b383d96f9d --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/saved_object_debugger.tsx @@ -0,0 +1,178 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState, useRef } from 'react'; +import { useQuery } from 'react-query'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiFormRow, + EuiSelect, + EuiSpacer, + EuiText, + EuiCallOut, +} from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import { sendRequest } from '../../../hooks'; + +import { CodeBlock } from './code_block'; +import { SavedObjectNamesCombo } from './saved_object_names_combo'; + +const fetchSavedObjects = async (type?: string, name?: string) => { + if (!type || !name) return; + const path = `/.kibana/_search`; + const body = { + query: { + bool: { + must: { + match: { [`${type}.name`]: name }, + }, + filter: { + term: { + type, + }, + }, + }, + }, + }; + const response = await sendRequest({ + method: 'post', + path: `/api/console/proxy`, + query: { + path, + method: 'GET', + }, + body, + }); + + if (response.error) { + throw new Error(response.error.message); + } + return response.data?.hits; +}; + +export const SavedObjectDebugger: React.FunctionComponent = () => { + const types = [ + { + value: 'ingest-agent-policies', + text: i18n.translate('xpack.fleet.debug.savedObjectDebugger.agentPolicyLabel', { + defaultMessage: 'Agent policy', + }), + }, + { + value: 'ingest-package-policies', + text: i18n.translate('xpack.fleet.debug.savedObjectDebugger.packagePolicyLabel', { + defaultMessage: 'Integration policy', + }), + }, + { + value: 'ingest-outputs', + text: i18n.translate('xpack.fleet.debug.savedObjectDebugger.outputLabel', { + defaultMessage: 'Output', + }), + }, + { + value: 'epm-packages', + text: i18n.translate('xpack.fleet.debug.savedObjectDebugger.packageLabel', { + defaultMessage: 'Packages', + }), + }, + ]; + + const [type, setType] = useState(types[0].value); + const [name, setName] = useState(); + const [namesStatus, setNamesStatus] = useState(); + + const childRef = useRef<{ refetchNames: Function }>(); + + const onTypeChange = (e: any) => { + setType(e.target.value); + setName(undefined); + childRef.current!.refetchNames(); + }; + + const { data: savedObjectResult, status } = useQuery(['debug-saved-objects', type, name], () => + fetchSavedObjects(type, name) + ); + + return ( + <> + +

+ +

+
+ + + + + + + onTypeChange(e)} + aria-label={i18n.translate('xpack.fleet.debug.savedObjectDebugger.selectTypeLabel', { + defaultMessage: 'Select saved object type', + })} + /> + + + + + + + + + + {(status === 'error' || namesStatus === 'error') && ( + <> + + + + + + )} + + {/* Allowing this to render while status === loading prevents the Code Block UI from + flickering when selecting a new object */} + {(savedObjectResult || status === 'loading') && ( + <> + + + + )} + + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/saved_object_names_combo.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/saved_object_names_combo.tsx new file mode 100644 index 0000000000000..9458bca298b9a --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/components/saved_object_names_combo.tsx @@ -0,0 +1,110 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { forwardRef, useImperativeHandle } from 'react'; +import { useQuery } from 'react-query'; +import { EuiComboBox } from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; + +import { sendRequest } from '../../../hooks'; + +const fetchSavedObjectNames = async (type: string) => { + const path = `/.kibana/_search`; + const body = { + size: 0, + query: { + bool: { + filter: { + term: { + type, + }, + }, + }, + }, + aggs: { + names: { + terms: { field: `${type}.name`, size: 500 }, + }, + }, + }; + const response = await sendRequest({ + method: 'post', + path: `/api/console/proxy`, + query: { + path, + method: 'GET', + }, + body, + }); + + if (response.error) { + throw new Error(response.error.message); + } + return response.data?.aggregations.names.buckets; +}; + +interface SavedObjectNamesComboProps { + name: string; + setName: Function; + type: string; + setNamesStatus: Function; +} + +export const SavedObjectNamesCombo = forwardRef( + ({ name, setName, type, setNamesStatus }: SavedObjectNamesComboProps, ref) => { + const { + data: savedObjectNames, + refetch, + status, + } = useQuery(['debug-saved-object-names', type], () => fetchSavedObjectNames(type), { + refetchOnWindowFocus: false, + }); + + setNamesStatus?.(status); + + useImperativeHandle(ref, () => ({ + refetchNames: refetch, + })); + + const comboBoxOptions = (savedObjectNames ?? []).map((obj: { key: string }) => ({ + label: obj.key, + value: obj.key, + })); + + const selectedOption = comboBoxOptions.find( + (option: { value: string }) => option.value === name + )!; + const selectedOptions = selectedOption ? [selectedOption] : []; + + return ( + { + if (!newSelectedOptions.length) { + setName(undefined); + } else { + setName(newSelectedOptions[0].value as string); + } + }} + /> + ); + } +); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/debug/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/index.tsx new file mode 100644 index 0000000000000..b54a97d3b270c --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/debug/index.tsx @@ -0,0 +1,187 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { + EuiAccordion, + EuiCallOut, + EuiHorizontalRule, + EuiListGroup, + EuiPage, + EuiPageBody, + EuiPageHeader, + EuiSpacer, + EuiText, + EuiTitle, +} from '@elastic/eui'; +import { QueryClient, QueryClientProvider } from 'react-query'; +import { ReactQueryDevtools } from 'react-query/devtools'; + +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import { useLink, useStartServices } from '../../hooks'; + +import { + AgentPolicyDebugger, + IntegrationDebugger, + PreconfigurationDebugger, + FleetIndexDebugger, + SavedObjectDebugger, + OrphanedIntegrationPolicyDebugger, +} from './components'; + +// TODO: Evaluate moving this react-query initialization up to the main Fleet app +// setup if we end up pursuing wider adoption of react-query. +export const queryClient = new QueryClient(); + +const panels = [ + { + title: i18n.translate('xpack.fleet.debug.agentPolicyDebugger.title', { + defaultMessage: 'Agent Policy Debugger', + }), + id: 'agentPolicyDebugger', + component: , + }, + { + title: i18n.translate('xpack.fleet.debug.integrationDebugger.title', { + defaultMessage: 'Integration Debugger', + }), + id: 'integrationDebugger', + component: , + }, + { + title: i18n.translate('xpack.fleet.debug.savedObjectDebugger.title', { + defaultMessage: 'Saved Object Debugger', + }), + id: 'savedObjectDebugger', + component: , + }, + { + title: i18n.translate('xpack.fleet.debug.fleetIndexDebugger.title', { + defaultMessage: 'Fleet Index Debugger', + }), + id: 'fleetIndexDebugger', + component: , + }, + { + title: i18n.translate('xpack.fleet.debug.preconfigurationDebugger.title', { + defaultMessage: 'Preconfiguration Debugger', + }), + id: 'preconfigurationDebugger', + component: , + }, + { + title: i18n.translate('xpack.fleet.debug.orphanedIntegrationPolicyDebugger.title', { + defaultMessage: 'Orphaned Integration Policy Debugger', + }), + id: 'orphanedIntegrationPolicyDebugger', + component: , + }, +]; + +export const DebugPage: React.FunctionComponent = () => { + const { chrome } = useStartServices(); + const { getHref } = useLink(); + + chrome.docTitle.change(['Debug', 'Fleet']); + + return ( + + + + + + + + + + ), + strongLossOfData: ( + + + + ), + }} + /> + + + + + + {panels.map(({ title, id, component }) => ( + <> + +

{title}

+ + } + > + + {component} +
+ + + + ))} + + +

+ +

+
+ + + + +
+
+ +
+ ); +}; diff --git a/x-pack/plugins/fleet/public/constants/page_paths.ts b/x-pack/plugins/fleet/public/constants/page_paths.ts index 26db09d68f41d..e7134f8549e27 100644 --- a/x-pack/plugins/fleet/public/constants/page_paths.ts +++ b/x-pack/plugins/fleet/public/constants/page_paths.ts @@ -17,7 +17,8 @@ export type StaticPage = | 'data_streams' | 'settings' | 'settings_edit_fleet_server_hosts' - | 'settings_create_outputs'; + | 'settings_create_outputs' + | 'debug'; export type DynamicPage = | 'integrations_all' @@ -67,6 +68,7 @@ export const FLEET_ROUTING_PATHS = { settings_edit_fleet_server_hosts: '/settings/edit-fleet-server-hosts', settings_create_outputs: '/settings/create-outputs', settings_edit_outputs: '/settings/outputs/:outputId', + debug: '/_debug', // TODO: Move this to the integrations app add_integration_to_policy: '/integrations/:pkgkey/add-integration/:integration?', @@ -190,4 +192,5 @@ export const pagePathGetters: { FLEET_ROUTING_PATHS.settings_edit_outputs.replace(':outputId', outputId as string), ], settings_create_outputs: () => [FLEET_BASE_PATH, FLEET_ROUTING_PATHS.settings_create_outputs], + debug: () => [FLEET_BASE_PATH, FLEET_ROUTING_PATHS.debug], }; diff --git a/x-pack/plugins/fleet/public/hooks/use_request/agent_policy.ts b/x-pack/plugins/fleet/public/hooks/use_request/agent_policy.ts index 777a74b079d7b..248fb60f5bf70 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/agent_policy.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/agent_policy.ts @@ -115,3 +115,19 @@ export const sendDeleteAgentPolicy = (body: DeleteAgentPolicyRequest['body']) => body: JSON.stringify(body), }); }; + +export const sendResetOnePreconfiguredAgentPolicy = (agentPolicyId: string) => { + return sendRequest({ + path: agentPolicyRouteService.getResetOnePreconfiguredAgentPolicyPath(agentPolicyId), + method: 'post', + body: JSON.stringify({}), + }); +}; + +export const sendResetAllPreconfiguredAgentPolicies = () => { + return sendRequest({ + path: agentPolicyRouteService.getResetAllPreconfiguredAgentPolicyPath(), + method: 'post', + body: JSON.stringify({}), + }); +}; diff --git a/x-pack/plugins/fleet/public/hooks/use_request/epm.ts b/x-pack/plugins/fleet/public/hooks/use_request/epm.ts index 7864f08d19a6e..02959d06327cb 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/epm.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/epm.ts @@ -109,10 +109,13 @@ export const sendInstallPackage = (pkgName: string, pkgVersion: string) => { }); }; -export const sendRemovePackage = (pkgName: string, pkgVersion: string) => { +export const sendRemovePackage = (pkgName: string, pkgVersion: string, force: boolean = false) => { return sendRequest({ path: epmRouteService.getRemovePath(pkgName, pkgVersion), method: 'delete', + body: { + force, + }, }); }; diff --git a/x-pack/plugins/fleet/public/hooks/use_request/package_policy.ts b/x-pack/plugins/fleet/public/hooks/use_request/package_policy.ts index 0d2e1179108f2..3b2b14960379f 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/package_policy.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/package_policy.ts @@ -109,3 +109,10 @@ export function sendUpgradePackagePolicy(packagePolicyIds: string[]) { }), }); } + +export function sendGetOrphanedIntegrationPolicies() { + return sendRequest({ + path: packagePolicyRouteService.getOrphanedIntegrationPoliciesPath(), + method: 'get', + }); +} diff --git a/x-pack/plugins/fleet/public/search_provider.ts b/x-pack/plugins/fleet/public/search_provider.ts index 9ce1ebc14c5e9..b632c3d1301fc 100644 --- a/x-pack/plugins/fleet/public/search_provider.ts +++ b/x-pack/plugins/fleet/public/search_provider.ts @@ -10,18 +10,17 @@ import type { Observable } from 'rxjs'; import { from, of, combineLatest } from 'rxjs'; import { map, shareReplay, takeUntil } from 'rxjs/operators'; -import { ICON_TYPES } from '@elastic/eui'; - import type { GlobalSearchResultProvider, GlobalSearchProviderResult, } from '@kbn/global-search-plugin/public'; -import { epmRouteService, INTEGRATIONS_PLUGIN_ID } from '../common'; +import { INTEGRATIONS_PLUGIN_ID } from '../common'; import { sendGetPackages } from './hooks'; import type { GetPackagesResponse, PackageListItem } from './types'; import { pagePathGetters } from './constants'; +import { getEuiIconType } from './services/icons'; const packageType = 'integration'; @@ -36,18 +35,6 @@ const createPackages$ = () => shareReplay(1) ); -const getEuiIconType = (pkg: PackageListItem, basePath: IBasePath): string | undefined => { - const pkgIcon = pkg.icons?.find((icon) => icon.type === 'image/svg+xml'); - if (!pkgIcon) { - // If no valid SVG is available, attempt to fallback to built-in EUI icons - return ICON_TYPES.find((key) => key.toLowerCase() === `logo${pkg.name}`); - } - - return basePath.prepend( - epmRouteService.getFilePath(`/package/${pkg.name}/${pkg.version}${pkgIcon.src}`) - ); -}; - /** Exported for testing only @internal */ export const toSearchResult = ( pkg: PackageListItem, diff --git a/x-pack/plugins/fleet/public/services/icons.ts b/x-pack/plugins/fleet/public/services/icons.ts new file mode 100644 index 0000000000000..89287169d7537 --- /dev/null +++ b/x-pack/plugins/fleet/public/services/icons.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ICON_TYPES } from '@elastic/eui'; +import type { IBasePath } from '@kbn/core/public'; + +import { epmRouteService } from '../applications/fleet/services'; +import type { PackageListItem } from '../types'; + +export const getEuiIconType = (pkg: PackageListItem, basePath: IBasePath): string | undefined => { + const pkgIcon = pkg.icons?.find((icon) => icon.type === 'image/svg+xml'); + if (!pkgIcon) { + // If no valid SVG is available, attempt to fallback to built-in EUI icons + return ICON_TYPES.find((key) => key.toLowerCase() === `logo${pkg.name}`); + } + + return basePath.prepend( + epmRouteService.getFilePath(`/package/${pkg.name}/${pkg.version}${pkgIcon.src}`) + ); +}; diff --git a/x-pack/plugins/fleet/server/plugin.ts b/x-pack/plugins/fleet/server/plugin.ts index 51178e80260d4..ae4f6134e891f 100644 --- a/x-pack/plugins/fleet/server/plugin.ts +++ b/x-pack/plugins/fleet/server/plugin.ts @@ -67,6 +67,7 @@ import { registerSettingsRoutes, registerAppRoutes, registerPreconfigurationRoutes, + registerHealthCheckRoutes, } from './routes'; import type { ExternalCallback, FleetRequestHandlerContext } from './types'; @@ -366,6 +367,7 @@ export class FleetPlugin registerSettingsRoutes(fleetAuthzRouter); registerDataStreamRoutes(fleetAuthzRouter); registerPreconfigurationRoutes(fleetAuthzRouter); + registerHealthCheckRoutes(fleetAuthzRouter); // Conditional config routes if (config.agents.enabled) { diff --git a/x-pack/plugins/fleet/server/routes/health_check/index.ts b/x-pack/plugins/fleet/server/routes/health_check/index.ts new file mode 100644 index 0000000000000..23d917aa09a43 --- /dev/null +++ b/x-pack/plugins/fleet/server/routes/health_check/index.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { APP_API_ROUTES } from '../../constants'; +import type { FleetRequestHandler } from '../../types'; +import type { FleetAuthzRouter } from '../security'; + +export const registerRoutes = (router: FleetAuthzRouter) => { + router.get( + { + path: APP_API_ROUTES.HEALTH_CHECK_PATTERN, + validate: {}, + fleetAuthz: { + fleet: { all: true }, + }, + }, + getHealthCheckHandler + ); +}; + +export const getHealthCheckHandler: FleetRequestHandler = async ( + context, + request, + response +) => { + return response.ok({ + body: 'Fleet Health Check Report:\nFleet Server: HEALTHY', + headers: { 'content-type': 'text/plain' }, + }); +}; diff --git a/x-pack/plugins/fleet/server/routes/index.ts b/x-pack/plugins/fleet/server/routes/index.ts index bcdc2db54ae0c..b04e179a05dcf 100644 --- a/x-pack/plugins/fleet/server/routes/index.ts +++ b/x-pack/plugins/fleet/server/routes/index.ts @@ -16,3 +16,4 @@ export { registerRoutes as registerOutputRoutes } from './output'; export { registerRoutes as registerSettingsRoutes } from './settings'; export { registerRoutes as registerAppRoutes } from './app'; export { registerRoutes as registerPreconfigurationRoutes } from './preconfiguration'; +export { registerRoutes as registerHealthCheckRoutes } from './health_check'; diff --git a/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts b/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts index ad46f25ff91de..c6f9e1583841b 100644 --- a/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts +++ b/x-pack/plugins/fleet/server/routes/package_policy/handlers.ts @@ -11,7 +11,9 @@ import Boom from '@hapi/boom'; import { SavedObjectsErrorHelpers } from '@kbn/core/server'; import type { RequestHandler } from '@kbn/core/server'; -import { appContextService, packagePolicyService } from '../../services'; +import { groupBy, keyBy } from 'lodash'; + +import { agentPolicyService, appContextService, packagePolicyService } from '../../services'; import type { GetPackagePoliciesRequestSchema, GetOnePackagePolicyRequestSchema, @@ -21,6 +23,7 @@ import type { UpgradePackagePoliciesRequestSchema, DryRunPackagePoliciesRequestSchema, FleetRequestHandler, + PackagePolicy, } from '../../types'; import type { CreatePackagePolicyResponse, @@ -29,7 +32,10 @@ import type { UpgradePackagePolicyDryRunResponse, UpgradePackagePolicyResponse, } from '../../../common'; +import { installationStatuses } from '../../../common'; import { defaultIngestErrorHandler } from '../../errors'; +import { getInstallations } from '../../services/epm/packages'; +import { PACKAGES_SAVED_OBJECT_TYPE, SO_SEARCH_LIMIT } from '../../constants'; export const getPackagePoliciesHandler: RequestHandler< undefined, @@ -82,6 +88,50 @@ export const getOnePackagePolicyHandler: RequestHandler< } }; +export const getOrphanedPackagePolicies: RequestHandler = async ( + context, + request, + response +) => { + const soClient = (await context.core).savedObjects.client; + try { + const installedPackages = await getInstallations(soClient, { + perPage: SO_SEARCH_LIMIT, + filter: ` + ${PACKAGES_SAVED_OBJECT_TYPE}.attributes.install_status:${installationStatuses.Installed} + `, + }); + const orphanedPackagePolicies: PackagePolicy[] = []; + const packagePolicies = await packagePolicyService.list(soClient, { + perPage: SO_SEARCH_LIMIT, + }); + const packagePoliciesByPackage = groupBy(packagePolicies.items, 'package.name'); + const agentPolicies = await agentPolicyService.list(soClient, { + perPage: SO_SEARCH_LIMIT, + }); + const agentPoliciesById = keyBy(agentPolicies.items, 'id'); + const usedPackages = installedPackages.saved_objects.filter( + ({ attributes: { name } }) => !!packagePoliciesByPackage[name] + ); + usedPackages.forEach(({ attributes: { name } }) => { + packagePoliciesByPackage[name].forEach((packagePolicy) => { + if (!agentPoliciesById[packagePolicy.policy_id]) { + orphanedPackagePolicies.push(packagePolicy); + } + }); + }); + + return response.ok({ + body: { + items: orphanedPackagePolicies, + total: orphanedPackagePolicies.length, + }, + }); + } catch (error) { + return defaultIngestErrorHandler({ error, response }); + } +}; + export const createPackagePolicyHandler: FleetRequestHandler< undefined, undefined, @@ -218,7 +268,7 @@ export const deletePackagePolicyHandler: RequestHandler< soClient, esClient, request.body.packagePolicyIds, - { user, force: request.body.force } + { user, force: request.body.force, skipUnassignFromAgentPolicies: request.body.force } ); try { await packagePolicyService.runExternalCallbacks( diff --git a/x-pack/plugins/fleet/server/routes/package_policy/index.ts b/x-pack/plugins/fleet/server/routes/package_policy/index.ts index 68cdfc26df531..2b2ae190b80bb 100644 --- a/x-pack/plugins/fleet/server/routes/package_policy/index.ts +++ b/x-pack/plugins/fleet/server/routes/package_policy/index.ts @@ -25,6 +25,7 @@ import { deletePackagePolicyHandler, upgradePackagePolicyHandler, dryRunUpgradePackagePolicyHandler, + getOrphanedPackagePolicies, } from './handlers'; export const registerRoutes = (router: FleetAuthzRouter) => { @@ -52,6 +53,17 @@ export const registerRoutes = (router: FleetAuthzRouter) => { getOnePackagePolicyHandler ); + router.get( + { + path: PACKAGE_POLICY_API_ROUTES.ORPHANED_INTEGRATION_POLICIES, + validate: {}, + fleetAuthz: { + integrations: { readIntegrationPolicies: true }, + }, + }, + getOrphanedPackagePolicies + ); + // Create router.post( { diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/get.ts b/x-pack/test/fleet_api_integration/apis/package_policy/get.ts index 1e90ab76666fe..5c3ed257d7b5e 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/get.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/get.ts @@ -5,6 +5,7 @@ * 2.0. */ +import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; import { skipIfNoDockerRegistry } from '../../helpers'; @@ -18,10 +19,9 @@ export default function (providerContext: FtrProviderContext) { // because `this` has to point to the Mocha context // see https://mochajs.org/#arrow-functions - describe('Package Policy - get by id', async function () { + describe('Package Policy APIs', () => { skipIfNoDockerRegistry(providerContext); - let agentPolicyId: string; - let packagePolicyId: string; + before(async () => { await getService('esArchiver').load('x-pack/test/functional/es_archives/empty_kibana'); await getService('esArchiver').load( @@ -29,68 +29,146 @@ export default function (providerContext: FtrProviderContext) { ); }); - before(async function () { - if (!server.enabled) { - return; - } - const { body: agentPolicyResponse } = await supertest - .post(`/api/fleet/agent_policies`) - .set('kbn-xsrf', 'xxxx') - .send({ - name: 'Test policy', - namespace: 'default', - }); - agentPolicyId = agentPolicyResponse.item.id; - - const { body: packagePolicyResponse } = await supertest - .post(`/api/fleet/package_policies`) - .set('kbn-xsrf', 'xxxx') - .send({ - name: 'filetest-1', - description: '', - namespace: 'default', - policy_id: agentPolicyId, - enabled: true, - output_id: '', - inputs: [], - package: { - name: 'filetest', - title: 'For File Tests', - version: '0.1.0', - }, - }); - packagePolicyId = packagePolicyResponse.item.id; - }); - - after(async function () { - if (!server.enabled) { - return; - } - - await supertest - .post(`/api/fleet/agent_policies/delete`) - .set('kbn-xsrf', 'xxxx') - .send({ agentPolicyId }) - .expect(200); - - await supertest - .post(`/api/fleet/package_policies/delete`) - .set('kbn-xsrf', 'xxxx') - .send({ packagePolicyIds: [packagePolicyId] }) - .expect(200); - }); after(async () => { await getService('esArchiver').unload( 'x-pack/test/functional/es_archives/fleet/empty_fleet_server' ); await getService('esArchiver').unload('x-pack/test/functional/es_archives/empty_kibana'); }); - it('should succeed with a valid id', async function () { - await supertest.get(`/api/fleet/package_policies/${packagePolicyId}`).expect(200); + + describe('get by id', async function () { + let agentPolicyId: string; + let packagePolicyId: string; + + before(async function () { + if (!server.enabled) { + return; + } + + const { body: agentPolicyResponse } = await supertest + .post(`/api/fleet/agent_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'Test policy', + namespace: 'default', + }); + agentPolicyId = agentPolicyResponse.item.id; + + const { body: packagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'filetest-1', + description: '', + namespace: 'default', + policy_id: agentPolicyId, + enabled: true, + output_id: '', + inputs: [], + package: { + name: 'filetest', + title: 'For File Tests', + version: '0.1.0', + }, + }); + packagePolicyId = packagePolicyResponse.item.id; + }); + + after(async function () { + if (!server.enabled) { + return; + } + + await supertest + .post(`/api/fleet/agent_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ agentPolicyId }) + .expect(200); + + await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ packagePolicyIds: [packagePolicyId] }) + .expect(200); + }); + + it('should succeed with a valid id', async function () { + await supertest.get(`/api/fleet/package_policies/${packagePolicyId}`).expect(200); + }); + + it('should return a 404 with an invalid id', async function () { + await supertest.get(`/api/fleet/package_policies/IS_NOT_PRESENT`).expect(404); + }); }); - it('should return a 404 with an invalid id', async function () { - await supertest.get(`/api/fleet/package_policies/IS_NOT_PRESENT`).expect(404); + describe('get orphaned policies', () => { + let agentPolicyId: string; + let packagePolicyId: string; + + before(async function () { + if (!server.enabled) { + return; + } + + const { body: agentPolicyResponse } = await supertest + .post(`/api/fleet/agent_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'Test policy', + namespace: 'default', + }); + + agentPolicyId = agentPolicyResponse.item.id; + + const { body: packagePolicyResponse } = await supertest + .post(`/api/fleet/package_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'filetest-1', + description: '', + namespace: 'default', + policy_id: agentPolicyId, + enabled: true, + output_id: '', + inputs: [], + package: { + name: 'filetest', + title: 'For File Tests', + version: '0.1.0', + }, + }); + + packagePolicyId = packagePolicyResponse.item.id; + + // Delete the agent policy directly from ES to orphan the package policy + const esClient = getService('es'); + await esClient.delete({ + index: '.kibana', + id: `ingest-agent-policies:${agentPolicyId}`, + refresh: 'wait_for', + }); + }); + + after(async function () { + if (!server.enabled) { + return; + } + + await supertest + .post(`/api/fleet/package_policies/delete`) + .set('kbn-xsrf', 'xxxx') + .send({ packagePolicyIds: [packagePolicyId], force: true }) + .expect(200); + }); + + it('should return orphaned policy', async () => { + const response = await supertest + .get('/internal/fleet/orphaned_integration_policies') + .expect(200); + + expect(response.body.items).to.have.length(1); + expect(response.body.items[0].id).to.eql(packagePolicyId); + }); }); }); } From 04c8fb9b350ebd1460019d605dd5e6c2b7082f66 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Tue, 21 Jun 2022 12:54:01 -0400 Subject: [PATCH 11/61] [Ingest Pipeline] Provide url params to use ingestPipeline UI from Fleet (#134776) --- .../helpers/pipelines_create.helpers.ts | 19 ++++--- .../ingest_pipelines_create.test.tsx | 12 ++++ .../pipeline_form/pipeline_form.tsx | 4 ++ .../pipeline_form/pipeline_form_fields.tsx | 4 +- .../public/application/hooks/index.tsx | 8 +++ .../application/hooks/redirect_path.test.tsx | 56 +++++++++++++++++++ .../application/hooks/redirect_path.tsx | 35 ++++++++++++ .../pipelines_create/pipelines_create.tsx | 51 ++++++++++++----- .../pipelines_edit/pipelines_edit.tsx | 6 +- .../sections/pipelines_list/main.tsx | 4 +- 10 files changed, 173 insertions(+), 26 deletions(-) create mode 100644 x-pack/plugins/ingest_pipelines/public/application/hooks/index.tsx create mode 100644 x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.test.tsx create mode 100644 x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.tsx diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.ts b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.ts index 108e4d908d801..e29510d344b40 100644 --- a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.ts +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/helpers/pipelines_create.helpers.ts @@ -16,15 +16,18 @@ export type PipelinesCreateTestBed = TestBed & { actions: ReturnType; }; -const testBedConfig: AsyncTestBedConfig = { - memoryRouter: { - initialEntries: [getCreatePath()], - componentRoutePath: ROUTES.create, - }, - doMountAsync: true, -}; +export const setup = async ( + httpSetup: HttpSetup, + queryParams: string = '' +): Promise => { + const testBedConfig: AsyncTestBedConfig = { + memoryRouter: { + initialEntries: [`${getCreatePath()}${queryParams}`], + componentRoutePath: ROUTES.create, + }, + doMountAsync: true, + }; -export const setup = async (httpSetup: HttpSetup): Promise => { const initTestBed = registerTestBed( WithAppDependencies(PipelinesCreate, httpSetup), testBedConfig diff --git a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx index ebc7acee3095e..f67d9d24ed690 100644 --- a/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx +++ b/x-pack/plugins/ingest_pipelines/__jest__/client_integration/ingest_pipelines_create.test.tsx @@ -80,6 +80,18 @@ describe('', () => { expect(find('apiRequestFlyout.apiRequestFlyoutTitle').text()).toBe('Request'); }); + test('should allow to prepopulate the name field', async () => { + await act(async () => { + testBed = await setup(httpSetup, '?name=test-pipeline'); + }); + + testBed.component.update(); + + expect(testBed.exists('nameField.input')).toBe(true); + expect(testBed.find('nameField.input').props().disabled).toBe(true); + expect(testBed.find('nameField.input').props().value).toBe('test-pipeline'); + }); + describe('form validation', () => { test('should prevent form submission if required fields are missing', async () => { const { form, actions, component, find } = testBed; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx index 36e7a78c87d92..ebb177f504c70 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form.tsx @@ -27,6 +27,8 @@ export interface PipelineFormProps { saveError: any; defaultValue?: Pipeline; isEditing?: boolean; + // That fields is used to disable the name field when creating a pipeline with the name prepopulated + canEditName?: boolean; } const defaultFormValue: Pipeline = Object.freeze({ @@ -43,6 +45,7 @@ export const PipelineForm: React.FunctionComponent = ({ saveError, isEditing, onCancel, + canEditName, }) => { const [isRequestVisible, setIsRequestVisible] = useState(false); @@ -129,6 +132,7 @@ export const PipelineForm: React.FunctionComponent = ({ onProcessorsUpdate={onProcessorsChangeHandler} hasVersion={Boolean(defaultValue.version)} isEditing={isEditing} + canEditName={canEditName} /> {/* Form submission */} diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx index 7beb057cef30e..aac3fa2914467 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_form/pipeline_form_fields.tsx @@ -28,6 +28,7 @@ interface Props { hasVersion: boolean; onEditorFlyoutOpen: () => void; isEditing?: boolean; + canEditName?: boolean; } const UseField = getUseField({ component: Field }); @@ -41,6 +42,7 @@ export const PipelineFormFields: React.FunctionComponent = ({ isEditing, hasVersion, onEditorFlyoutOpen, + canEditName, }) => { const [isVersionVisible, setIsVersionVisible] = useState(hasVersion); @@ -74,7 +76,7 @@ export const PipelineFormFields: React.FunctionComponent = ({ path="name" componentProps={{ ['data-test-subj']: 'nameField', - euiFieldProps: { disabled: Boolean(isEditing) }, + euiFieldProps: { disabled: canEditName === false || Boolean(isEditing) }, }} /> diff --git a/x-pack/plugins/ingest_pipelines/public/application/hooks/index.tsx b/x-pack/plugins/ingest_pipelines/public/application/hooks/index.tsx new file mode 100644 index 0000000000000..58a981e34f131 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/hooks/index.tsx @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { useRedirectPath as useRedirectToPathOrRedirectPath } from './redirect_path'; diff --git a/x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.test.tsx b/x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.test.tsx new file mode 100644 index 0000000000000..a387661fc1b53 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.test.tsx @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react-hooks'; +import { createMemoryHistory } from 'history'; +import { useRedirectPath } from './redirect_path'; +import { useKibana } from '../../shared_imports'; + +const mockedUseKibana = useKibana as jest.MockedFunction; +jest.mock('../../shared_imports'); + +describe('useRedirectPath', () => { + const mockedNavigateToUrl = jest.fn(); + beforeEach(() => { + mockedNavigateToUrl.mockReset(); + mockedUseKibana.mockReturnValue({ + services: { + application: { + navigateToUrl: mockedNavigateToUrl, + }, + }, + } as any); + }); + it('should redirect to redirect path if a redirect path is specified in the url', () => { + const history = createMemoryHistory(); + history.push( + '/app/management/ingest/ingest_pipelines/create?name=logs-system.syslog@custom&redirect_path=/test-redirect-path' + ); + + const { + result: { current: redirectToPathOrRedirectPath }, + } = renderHook(() => useRedirectPath(history)); + + redirectToPathOrRedirectPath('/test'); + + expect(mockedNavigateToUrl).toBeCalledWith('/test-redirect-path'); + }); + + it('should redirect to the provided path if no redirect path is specified in the url', () => { + const history = createMemoryHistory(); + history.push('/app/management/ingest/ingest_pipelines/create'); + + const { + result: { current: redirectToPathOrRedirectPath }, + } = renderHook(() => useRedirectPath(history)); + + redirectToPathOrRedirectPath('/test'); + + expect(mockedNavigateToUrl).not.toBeCalled(); + expect(history.location.pathname).toBe('/test'); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.tsx b/x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.tsx new file mode 100644 index 0000000000000..e70e094081da3 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/hooks/redirect_path.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { History } from 'history'; +import { useCallback, useMemo } from 'react'; + +import { useKibana } from '../../shared_imports'; + +/** + * This hook allow to redirect to the provided path or using redirect_path if it's provided in the query params. + */ +export function useRedirectPath(history: History) { + const { services } = useKibana(); + + const redirectPath = useMemo(() => { + const locationSearchParams = new URLSearchParams(history.location.search); + + return locationSearchParams.get('redirect_path'); + }, [history.location.search]); + + return useCallback( + (path: string) => { + if (redirectPath) { + services.application.navigateToUrl(redirectPath); + } else { + history.push(path); + } + }, + [redirectPath, services.application, history] + ); +} diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create/pipelines_create.tsx b/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create/pipelines_create.tsx index a7fbf6afaebf8..763751b2fabc9 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create/pipelines_create.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_create/pipelines_create.tsx @@ -14,6 +14,7 @@ import { getListPath } from '../../services/navigation'; import { Pipeline } from '../../../../common/types'; import { useKibana } from '../../../shared_imports'; import { PipelineForm } from '../../components'; +import { useRedirectToPathOrRedirectPath } from '../../hooks'; interface Props { /** @@ -26,15 +27,48 @@ interface LocationState { sourcePipeline?: Pipeline; } +function useFormDefaultValue(sourcePipeline?: Pipeline) { + const history = useHistory(); + + const locationSearchParams = useMemo(() => { + return new URLSearchParams(history.location.search); + }, [history.location.search]); + + const formDefaultValue = useMemo(() => { + if (sourcePipeline) { + return sourcePipeline; + } + + if (history.location.state?.sourcePipeline) { + return history.location.state.sourcePipeline; + } + + if (locationSearchParams.has('name')) { + return { + name: locationSearchParams.get('name') as string, + description: '', + processors: [], + on_failure: [], + }; + } + }, [sourcePipeline, history, locationSearchParams]); + + return { formDefaultValue, canEditName: !locationSearchParams.has('name') }; +} + export const PipelinesCreate: React.FunctionComponent = ({ sourcePipeline, }) => { const history = useHistory(); + const { services } = useKibana(); const [isSaving, setIsSaving] = useState(false); const [saveError, setSaveError] = useState(null); + const { formDefaultValue, canEditName } = useFormDefaultValue(sourcePipeline); + const redirectToPathOrRedirectPath = useRedirectToPathOrRedirectPath(history); + const onSave = async (pipeline: Pipeline) => { setIsSaving(true); setSaveError(null); @@ -48,27 +82,15 @@ export const PipelinesCreate: React.FunctionComponent { - history.push(getListPath()); - }; + const onCancel = () => redirectToPathOrRedirectPath(getListPath()); useEffect(() => { services.breadcrumbs.setBreadcrumbs('create'); }, [services]); - const formDefaultValue = useMemo(() => { - if (sourcePipeline) { - return sourcePipeline; - } - - if (history.location.state?.sourcePipeline) { - return history.location.state.sourcePipeline; - } - }, [sourcePipeline, history]); - return ( <> (false); const [saveError, setSaveError] = useState(null); + const redirectToPathOrRedirectPath = useRedirectToPathOrRedirectPath(history); const decodedPipelineName = attemptToURIDecode(name)!; @@ -60,11 +62,11 @@ export const PipelinesEdit: React.FunctionComponent { - history.push(getListPath()); + redirectToPathOrRedirectPath(getListPath()); }; useEffect(() => { diff --git a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/main.tsx b/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/main.tsx index 4e53cabd9dcbb..5f084a7cc65f7 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/main.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/sections/pipelines_list/main.tsx @@ -30,6 +30,7 @@ import { PipelineTable } from './table'; import { PipelineDetailsFlyout } from './details_flyout'; import { PipelineNotFoundFlyout } from './not_found_flyout'; import { PipelineDeleteModal } from './delete_modal'; +import { useRedirectToPathOrRedirectPath } from '../../hooks'; const getPipelineNameFromLocation = (location: Location) => { const { pipeline } = parse(location.search.substring(1)); @@ -49,6 +50,7 @@ export const PipelinesList: React.FunctionComponent = ({ const [pipelinesToDelete, setPipelinesToDelete] = useState([]); const { data, isLoading, error, resendRequest } = services.api.useLoadPipelines(); + const redirectToPathOrRedirectPath = useRedirectToPathOrRedirectPath(history); // Track component loaded useEffect(() => { @@ -74,7 +76,7 @@ export const PipelinesList: React.FunctionComponent = ({ const goHome = () => { setShowFlyout(false); - history.push(getListPath()); + redirectToPathOrRedirectPath(getListPath()); }; if (error) { From 42905ec9bf32725ba9328bbe9835474f8d48987b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Efe=20G=C3=BCrkan=20YALAMAN?= Date: Tue, 21 Jun 2022 19:05:21 +0200 Subject: [PATCH 12/61] [Enterprise Search] Update Create New Index page designs (#134651) * Remove engine selector from the react template * Update button groups to latest designs * Add checkbox and bind it to logic * Add logic test * Add steps to the template * Remove checkbox and unused code * Remove learn more link on tabs view * Fix responsiveness * Fix type errors Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../components/new_index/method_api.test.tsx | 26 +++ .../components/new_index/method_api.tsx | 60 +----- .../components/new_index/method_connector.tsx | 1 + .../components/new_index/method_crawler.tsx | 1 + .../components/new_index/method_es.tsx | 1 + .../components/new_index/method_json.tsx | 1 + .../components/new_index/new_index.scss | 22 +++ .../components/new_index/new_index.tsx | 142 ++++++-------- .../new_index/new_search_index_logic.test.ts | 3 - .../new_index/new_search_index_logic.ts | 33 +--- .../new_index/new_search_index_template.tsx | 184 ++++++++++++------ 11 files changed, 244 insertions(+), 230 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_api.test.tsx create mode 100644 x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_index.scss diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_api.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_api.test.tsx new file mode 100644 index 0000000000000..f47be4269edcc --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_api.test.tsx @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { shallow } from 'enzyme'; + +import { MethodApi } from './method_api'; +import { NewSearchIndexTemplate } from './new_search_index_template'; + +describe('API ingestion method', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders API ingestion method tab', () => { + const wrapper = shallow(); + const template = wrapper.find(NewSearchIndexTemplate); + + expect(template.prop('type')).toEqual('api'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_api.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_api.tsx index 699b84327978c..a68c33db0eae5 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_api.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_api.tsx @@ -8,76 +8,34 @@ /** * TODO: * - Need to add documentation URLs (search for `#`s) - * - Need to implement the logic for the attaching search engines functionality */ import React from 'react'; -import { useValues } from 'kea'; - -import { EuiCodeBlock, EuiLink, EuiPanel, EuiSpacer, EuiText, EuiTitle } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; +import { EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { getEnterpriseSearchUrl } from '../../../shared/enterprise_search_url/external_url'; - -import { DOCUMENTS_API_JSON_EXAMPLE } from './constants'; -import { NewSearchIndexLogic } from './new_search_index_logic'; import { NewSearchIndexTemplate } from './new_search_index_template'; export const MethodApi: React.FC = () => { - const { name } = useValues(NewSearchIndexLogic); - const apiKey = 1212312313; // TODO change this - - const searchIndexApiUrl = getEnterpriseSearchUrl('/api/ent/v1/search_indices/'); - return ( + } description={ - {i18n.translate( - 'xpack.enterpriseSearch.content.newIndex.methodApi.description.clientLibrariesLink', - { - defaultMessage: 'client libraries', - } - )} - - ), - }} + defaultMessage="Provide a name and optionally select a language analyzer for your documents. An Elasticsearch index will be created. In the next step, well display API instructions." /> } docsUrl="#" type="api" - > - - -

- {i18n.translate('xpack.enterpriseSearch.content.newIndex.methodApi.endpointTitle', { - defaultMessage: 'Enter a name to preview your new API endpoint', - })} -

-
- {name && ( - <> - - - {`\ -curl -X POST '${searchIndexApiUrl}${name}/document' \\ - -H 'Content-Type: application/json' \\ - -H 'Authorization: Bearer ${apiKey}' \\ - -d '${JSON.stringify(DOCUMENTS_API_JSON_EXAMPLE, null, 2)}' -`} - - - )} -
-
+ /> ); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_connector.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_connector.tsx index 927f5e79ff2ff..36522002d7e88 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_connector.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/method_connector.tsx @@ -21,6 +21,7 @@ import { NewSearchIndexTemplate } from './new_search_index_template'; export const MethodConnector: React.FC = () => { return ( { return ( { return ( { return ( { id: 'crawler', icon: 'globe', label: i18n.translate('xpack.enterpriseSearch.content.newIndex.buttonGroup.crawler.label', { - defaultMessage: 'Web crawler', + defaultMessage: 'Use the web crawler', }), description: i18n.translate( 'xpack.enterpriseSearch.content.newIndex.buttonGroup.crawler.description', { - defaultMessage: 'Automatically index content from your website or knowlege base', - } - ), - }, - { - id: 'api', - icon: 'visVega', - label: i18n.translate('xpack.enterpriseSearch.content.newIndex.buttonGroup.api.label', { - defaultMessage: 'API', - }), - description: i18n.translate( - 'xpack.enterpriseSearch.content.newIndex.buttonGroup.api.description', - { - defaultMessage: 'Use a variety of client libraries to add documents to your search index', + defaultMessage: 'Index content from your websites', } ), }, @@ -93,42 +74,42 @@ export const NewIndex: React.FC = () => { id: 'connector', icon: 'package', label: i18n.translate('xpack.enterpriseSearch.content.newIndex.buttonGroup.connector.label', { - defaultMessage: 'Connector', + defaultMessage: 'Use a data integration', }), description: i18n.translate( 'xpack.enterpriseSearch.content.newIndex.buttonGroup.connector.description', { defaultMessage: - 'Ingest data from content sources like GitHub, Google Drive or SharePoint', + 'Index content frrom third-party services such as SharePoint and Google Drive', } ), }, { - id: 'elasticsearch', - icon: 'logoElasticsearch', - label: i18n.translate( - 'xpack.enterpriseSearch.content.newIndex.buttonGroup.elasticsearch.label', - { - defaultMessage: 'Elasticsearch index', - } - ), + id: 'api', + icon: 'visVega', + label: i18n.translate('xpack.enterpriseSearch.content.newIndex.buttonGroup.api.label', { + defaultMessage: 'Use the API', + }), description: i18n.translate( - 'xpack.enterpriseSearch.content.newIndex.buttonGroup.elasticsearch.description', + 'xpack.enterpriseSearch.content.newIndex.buttonGroup.api.description', { - defaultMessage: 'Connect to an existing Elasticsearch index', + defaultMessage: 'Use a variety of client libraries to add documents to your search index', } ), }, { - id: 'json', - icon: 'document', - label: i18n.translate('xpack.enterpriseSearch.content.newIndex.buttonGroup.json.label', { - defaultMessage: 'Paste or upload JSON', - }), + id: 'customIntegration', + icon: 'package', + label: i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.buttonGroup.customIntegration.label', + { + defaultMessage: 'Build a custom data integration', + } + ), description: i18n.translate( - 'xpack.enterpriseSearch.content.newIndex.buttonGroup.json.description', + 'xpack.enterpriseSearch.content.newIndex.buttonGroup.customIntegration.description', { - defaultMessage: 'Manually upload JSON files', + defaultMessage: 'Clone the connector package repo and start customizing.', } ), }, @@ -150,37 +131,20 @@ export const NewIndex: React.FC = () => { ); - const CardLabel: React.FC = ({ title, description, icon }) => ( - - - - - - - -

{title}

-
-
-
- - {description} -
- ); - const SelectSearchIndexLayout = () => ( <> - - + +

{i18n.translate('xpack.enterpriseSearch.content.newIndex.selectSearchIndex.title', { - defaultMessage: 'Create a search index', + defaultMessage: 'Select an ingestion method', })}

- +

{i18n.translate( 'xpack.enterpriseSearch.content.newIndex.selectSearchIndex.description', @@ -195,32 +159,42 @@ export const NewIndex: React.FC = () => { {buttonGroupOptions.map((item) => ( - + handleMethodChange(item.id)} - checked={selectedMethod.id === item.id} - /> + hasShadow={false} + onClick={() => { + handleMethodChange(item.id); + }} + > + + + + + +

{item.label}

+ +
+ + +

{item.description}

+
+
+
+
+ +
+ +
+
+
+ ))} - - - {i18n.translate( - 'xpack.enterpriseSearch.content.newIndex.selectSearchIndex.learnMore.buttonText', - { - defaultMessage: 'Learn more about search indices', - } - )} - diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.test.ts index 9c205274f9cf9..d12ab55a37f75 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.test.ts @@ -11,12 +11,9 @@ import { DEFAULT_LANGUAGE } from './constants'; import { NewSearchIndexLogic } from './new_search_index_logic'; const DEFAULT_VALUES = { - searchEngines: [], - searchEngineSelectOptions: [], rawName: '', name: '', language: DEFAULT_LANGUAGE, - selectedSearchEngines: [], }; describe('NewSearchIndexLogic', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.ts index b1626c90b3f59..f2034a8c4ce76 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_logic.ts @@ -7,43 +7,26 @@ import { kea, MakeLogicType } from 'kea'; -import type { EuiComboBoxOptionOption } from '@elastic/eui'; - -import { Engine } from '../../../app_search/components/engine/types'; import { formatApiName } from '../../utils/format_api_name'; -import { SearchIndicesLogic, SearchIndicesValues } from '../search_indices/search_indices_logic'; - import { DEFAULT_LANGUAGE } from './constants'; -import { ISearchEngineOption } from './new_search_index_template'; -export interface NewSearchIndexValues extends Pick { - searchEngineSelectOptions: ISearchEngineOption[]; +export interface NewSearchIndexValues { rawName: string; name: string; language: string; - selectedSearchEngines: Array>; } export interface NewSearchIndexActions { setRawName(rawName: string): { rawName: string }; setLanguage(language: string): { language: string }; - setSelectedSearchEngineOptions(selectedSearchEngines: Array>): { - selectedSearchEngines: Array>; - }; } export const NewSearchIndexLogic = kea>({ path: ['enterprise_search', 'content', 'new_search_index'], - connect: { - values: [SearchIndicesLogic, ['searchEngines']], - }, actions: { setRawName: (rawName) => ({ rawName }), setLanguage: (language) => ({ language }), - setSelectedSearchEngineOptions: (selectedSearchEngines) => ({ - selectedSearchEngines, - }), }, reducers: { language: [ @@ -58,22 +41,8 @@ export const NewSearchIndexLogic = kea rawName, }, ], - selectedSearchEngines: [ - [], - { - setSelectedSearchEngineOptions: (_, { selectedSearchEngines }) => selectedSearchEngines, - }, - ], }, selectors: ({ selectors }) => ({ name: [() => [selectors.rawName], (rawName) => formatApiName(rawName)], - searchEngineSelectOptions: [ - () => [selectors.searchEngines], - (searchEngines) => - searchEngines.map((s: Engine) => ({ - label: s.name, - value: s, - })), - ], }), }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.tsx index b0e3adf3bdb71..1eb228aa876e0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/new_index/new_search_index_template.tsx @@ -17,7 +17,6 @@ import { useValues, useActions } from 'kea'; import { EuiButton, - EuiComboBox, EuiFieldText, EuiFlexGroup, EuiFlexItem, @@ -26,6 +25,7 @@ import { EuiPanel, EuiSelect, EuiSpacer, + EuiSteps, EuiText, EuiTitle, } from '@elastic/eui'; @@ -33,10 +33,11 @@ import { i18n } from '@kbn/i18n'; import { Engine } from '../../../app_search/components/engine/types'; -import { SUPPORTED_LANGUAGES, NEW_INDEX_TEMPLATE_TYPES } from './constants'; +import { SUPPORTED_LANGUAGES } from './constants'; import { NewSearchIndexLogic } from './new_search_index_logic'; export interface ISearchIndex { + title: React.ReactNode; description: React.ReactNode; docsUrl: string; type: string; @@ -50,14 +51,12 @@ export interface ISearchEngineOption { export const NewSearchIndexTemplate: React.FC = ({ children, + title, description, - type, onNameChange, }) => { - const { searchEngineSelectOptions, name, language, rawName, selectedSearchEngines } = - useValues(NewSearchIndexLogic); - const { setRawName, setLanguage, setSelectedSearchEngineOptions } = - useActions(NewSearchIndexLogic); + const { name, language, rawName } = useValues(NewSearchIndexLogic); + const { setRawName, setLanguage } = useActions(NewSearchIndexLogic); const handleNameChange = (e: ChangeEvent) => { setRawName(e.target.value); @@ -75,15 +74,7 @@ export const NewSearchIndexTemplate: React.FC = ({ -

- {i18n.translate( - 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.title', - { - defaultMessage: 'New {type}', - values: { type: NEW_INDEX_TEMPLATE_TYPES[type] }, - } - )} -

+

{title}

@@ -106,8 +97,17 @@ export const NewSearchIndexTemplate: React.FC = ({ label={i18n.translate( 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.nameInputLabel', { - defaultMessage: 'Name your {type}', - values: { type: NEW_INDEX_TEMPLATE_TYPES[type] }, + defaultMessage: 'Index name', + } + )} + helpText={i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.nameInputHelpText', + { + defaultMessage: + 'Names cannot contain spaces or special characters. {indexName}', + values: { + indexName: name.length > 0 ? `Your index will be named: ${name}` : '', + }, } )} fullWidth @@ -116,8 +116,7 @@ export const NewSearchIndexTemplate: React.FC = ({ placeholder={i18n.translate( 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.nameInputPlaceholder', { - defaultMessage: 'Set a name for the {type}', - values: { type: NEW_INDEX_TEMPLATE_TYPES[type] }, + defaultMessage: 'Set a name for your index', } )} fullWidth @@ -132,7 +131,13 @@ export const NewSearchIndexTemplate: React.FC = ({ label={i18n.translate( 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.languageInputLabel', { - defaultMessage: 'Language', + defaultMessage: 'Document language', + } + )} + helpText={i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.languageInputHelpText', + { + defaultMessage: 'Analyzers can be changed later, but may require a reindex', } )} > @@ -145,48 +150,107 @@ export const NewSearchIndexTemplate: React.FC = ({ - {searchEngineSelectOptions.length !== 0 && ( - - - { - setSelectedSearchEngineOptions(options); - }} - selectedOptions={selectedSearchEngines} - /> - - - )} {children} - - - {i18n.translate( - 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.createIndex.buttonText', - { - defaultMessage: 'Create search index', - } - )} - - + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.createIndex.buttonText', + { + defaultMessage: 'Create index', + } + )} + + + + + {i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.viewDocumentation.linkText', + { + defaultMessage: 'View the documentation', + } + )} + + + + + + +

+ {i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.steps.createIndex.content', + { + defaultMessage: + 'Provide a unique name for your index and select an optional language analyzer.', + } + )} +

+
+ ), + status: 'incomplete', + }, + { + title: i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.steps.configureIngestion.title', + { + defaultMessage: 'Configure ingestion settings', + } + ), + titleSize: 'xs', + children: ( + +

+ {i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.steps.configureIngestion.content', + { + defaultMessage: + 'Generate an API key and view the documentation for posting documents to the Elasticsearch API endpoint. Language clients are available for streamlined integration.', + } + )} +

+
+ ), + status: 'incomplete', + }, + { + title: i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.steps.buildSearchExperience.title', + { + defaultMessage: 'Build a search experience', + } + ), + titleSize: 'xs', + children: ( + +

+ {i18n.translate( + 'xpack.enterpriseSearch.content.newIndex.newSearchIndexTemplate.steps.buildSearchExperience.content', + { + defaultMessage: + 'Connect your newly created Elasticsearch index to an App Search engine to build a cusomtizable search experience.', + } + )} +

+
+ ), + status: 'incomplete', + }, + ]} + /> ); }; From bf6cf59908d35b3cb98146a2a88fe1c1610110d6 Mon Sep 17 00:00:00 2001 From: "Joey F. Poon" Date: Tue, 21 Jun 2022 12:49:34 -0500 Subject: [PATCH 13/61] [Security Solution] backfill response action API tests (#134771) * [Security Solution] backfill response action API tests * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../apis/endpoint_authz.ts | 50 ++++++++++++++++--- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts index 1a009aaef07ec..c0b15090cda1e 100644 --- a/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts +++ b/x-pack/test/security_solution_endpoint_api_int/apis/endpoint_authz.ts @@ -6,6 +6,19 @@ */ import { wrapErrorAndRejectPromise } from '@kbn/security-solution-plugin/common/endpoint/data_loaders/utils'; +import { + ACTION_STATUS_ROUTE, + AGENT_POLICY_SUMMARY_ROUTE, + BASE_POLICY_RESPONSE_ROUTE, + GET_RUNNING_PROCESSES_ROUTE, + HOST_METADATA_LIST_ROUTE, + ISOLATE_HOST_ROUTE, + ISOLATE_HOST_ROUTE_V2, + KILL_PROCESS_ROUTE, + SUSPEND_PROCESS_ROUTE, + UNISOLATE_HOST_ROUTE, + UNISOLATE_HOST_ROUTE_V2, +} from '@kbn/security-solution-plugin/common/endpoint/constants'; import { FtrProviderContext } from '../ftr_provider_context'; import { createUserAndRole, @@ -30,17 +43,17 @@ export default function ({ getService }: FtrProviderContext) { const apiList = [ { method: 'get', - path: '/api/endpoint/metadata', + path: HOST_METADATA_LIST_ROUTE, body: undefined, }, { method: 'get', - path: '/api/endpoint/action_status?agent_ids=1', + path: `${ACTION_STATUS_ROUTE}?agent_ids=1`, body: undefined, }, { method: 'get', - path: '/api/endpoint/policy/summaries?package_name=endpoint', + path: `${AGENT_POLICY_SUMMARY_ROUTE}?package_name=endpoint`, body: undefined, }, { @@ -50,19 +63,44 @@ export default function ({ getService }: FtrProviderContext) { }, { method: 'get', - path: '/api/endpoint/policy_response?agentId=1', + path: `${BASE_POLICY_RESPONSE_ROUTE}?agentId=1`, body: undefined, }, { method: 'post', - path: '/api/endpoint/isolate', + path: ISOLATE_HOST_ROUTE, + body: { endpoint_ids: ['one'] }, + }, + { + method: 'post', + path: UNISOLATE_HOST_ROUTE, body: { endpoint_ids: ['one'] }, }, { method: 'post', - path: '/api/endpoint/unisolate', + path: ISOLATE_HOST_ROUTE_V2, body: { endpoint_ids: ['one'] }, }, + { + method: 'post', + path: UNISOLATE_HOST_ROUTE_V2, + body: { endpoint_ids: ['one'] }, + }, + { + method: 'post', + path: GET_RUNNING_PROCESSES_ROUTE, + body: { endpoint_ids: ['one'] }, + }, + { + method: 'post', + path: KILL_PROCESS_ROUTE, + body: { endpoint_ids: ['one'], parameters: { entity_id: 1234 } }, + }, + { + method: 'post', + path: SUSPEND_PROCESS_ROUTE, + body: { endpoint_ids: ['one'], parameters: { entity_id: 1234 } }, + }, ]; for (const apiListItem of apiList) { From 726ea2823bdda5f29bf1e1980dfdb53fa0691ebf Mon Sep 17 00:00:00 2001 From: Jack Date: Tue, 21 Jun 2022 15:30:11 -0400 Subject: [PATCH 14/61] [8.4] [Security Solution] [Kubernetes Security] Use sessions view component from security_solution (#134704) * Use sessions view component from security_solution * Add kubernetes columns --- .../kubernetes_security_routes/index.test.tsx | 1 + .../kubernetes_security_routes/index.tsx | 8 +-- .../components/percent_widget/styles.ts | 4 +- .../components/tree_view_container/index.tsx | 35 ++++++++++ .../components/tree_view_container/styles.ts | 43 +++++++++++++ .../kubernetes_security/public/types.ts | 1 + .../common/types/timeline/index.ts | 2 + .../sessions_viewer/default_headers.ts | 11 ++-- .../components/sessions_viewer/index.tsx | 6 +- .../components/sessions_viewer/types.ts | 4 +- .../common/components/top_n/helpers.test.tsx | 1 + .../public/kubernetes/pages/constants.ts | 64 +++++++++++++++++++ .../public/kubernetes/pages/index.tsx | 21 +++++- .../public/kubernetes/pages/translations.ts | 57 +++++++++++++++++ .../timelines/common/types/timeline/index.ts | 2 + .../timelines/public/store/t_grid/types.ts | 1 + 16 files changed, 246 insertions(+), 15 deletions(-) create mode 100644 x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.tsx create mode 100644 x-pack/plugins/kubernetes_security/public/components/tree_view_container/styles.ts create mode 100644 x-pack/plugins/security_solution/public/kubernetes/pages/constants.ts create mode 100644 x-pack/plugins/security_solution/public/kubernetes/pages/translations.ts diff --git a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx b/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx index 08b6354abf201..38e2bb89da854 100644 --- a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.test.tsx @@ -55,6 +55,7 @@ const renderWithRouter = ( startDate: '2022-03-08T18:52:15.532Z', endDate: '2022-06-09T17:52:15.532Z', }} + renderSessionsView={jest.fn()} /> ); diff --git a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx b/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx index f2949dd0e4ab1..7fe4b2ea3976a 100644 --- a/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx +++ b/x-pack/plugins/kubernetes_security/public/components/kubernetes_security_routes/index.tsx @@ -12,7 +12,6 @@ import { EuiFlexGroup, EuiFlexItem, EuiIconTip, - EuiLoadingContent, EuiSpacer, EuiText, EuiTextColor, @@ -31,11 +30,13 @@ import { PercentWidget } from '../percent_widget'; import { KubernetesSecurityDeps } from '../../types'; import { AggregateResult } from '../../../common/types/aggregate'; import { useStyles } from './styles'; +import { TreeViewContainer } from '../tree_view_container'; const KubernetesSecurityRoutesComponent = ({ filter, indexPattern, globalFilter, + renderSessionsView, }: KubernetesSecurityDeps) => { const styles = useStyles(); @@ -203,10 +204,7 @@ const KubernetesSecurityRoutesComponent = ({ />
-
- - -
+ ); diff --git a/x-pack/plugins/kubernetes_security/public/components/percent_widget/styles.ts b/x-pack/plugins/kubernetes_security/public/components/percent_widget/styles.ts index 5e90d7c946f92..57f1427710999 100644 --- a/x-pack/plugins/kubernetes_security/public/components/percent_widget/styles.ts +++ b/x-pack/plugins/kubernetes_security/public/components/percent_widget/styles.ts @@ -17,8 +17,8 @@ export const useStyles = () => { const container: CSSObject = { padding: size.base, - border: euiTheme.border.thin, - borderRadius: euiTheme.border.radius.medium, + border: border.thin, + borderRadius: border.radius.medium, overflow: 'auto', position: 'relative', }; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.tsx b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.tsx new file mode 100644 index 0000000000000..e934fe4a31f2d --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/index.tsx @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiSplitPanel, EuiText } from '@elastic/eui'; +import { useStyles } from './styles'; +import type { IndexPattern, GlobalFilter } from '../../types'; + +export interface TreeViewContainerDeps { + globalFilter: GlobalFilter; + renderSessionsView: (sessionsFilterQuery: string | undefined) => JSX.Element; + indexPattern?: IndexPattern; +} + +export const TreeViewContainer = ({ globalFilter, renderSessionsView }: TreeViewContainerDeps) => { + const styles = useStyles(); + // TODO: combine filterQuery with filters from tree view nav + + return ( + + + +

Tree view nav panel

+
+
+ + {renderSessionsView(globalFilter.filterQuery)} + +
+ ); +}; diff --git a/x-pack/plugins/kubernetes_security/public/components/tree_view_container/styles.ts b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/styles.ts new file mode 100644 index 0000000000000..c490e5b711889 --- /dev/null +++ b/x-pack/plugins/kubernetes_security/public/components/tree_view_container/styles.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { CSSObject } from '@emotion/react'; +import { useEuiTheme } from '../../hooks'; + +export const useStyles = () => { + const { euiTheme } = useEuiTheme(); + + const cached = useMemo(() => { + const { border } = euiTheme; + + const outerPanel: CSSObject = { + minHeight: '500px', + }; + + const navPanel: CSSObject = { + borderRight: border.thin, + }; + + const treeViewNav: CSSObject = { + width: '284px', + }; + + const sessionsPanel: CSSObject = { + overflowX: 'auto', + }; + + return { + outerPanel, + navPanel, + treeViewNav, + sessionsPanel, + }; + }, [euiTheme]); + + return cached; +}; diff --git a/x-pack/plugins/kubernetes_security/public/types.ts b/x-pack/plugins/kubernetes_security/public/types.ts index d6313b25bf011..bf25e00eec2b2 100644 --- a/x-pack/plugins/kubernetes_security/public/types.ts +++ b/x-pack/plugins/kubernetes_security/public/types.ts @@ -32,6 +32,7 @@ export interface GlobalFilter { export interface KubernetesSecurityDeps { filter: React.ReactNode; + renderSessionsView: (sessionsFilterQuery: string | undefined) => JSX.Element; indexPattern?: IndexPattern; globalFilter: GlobalFilter; } diff --git a/x-pack/plugins/security_solution/common/types/timeline/index.ts b/x-pack/plugins/security_solution/common/types/timeline/index.ts index 3d4d1b5dc28cb..9b1405b78a57d 100644 --- a/x-pack/plugins/security_solution/common/types/timeline/index.ts +++ b/x-pack/plugins/security_solution/common/types/timeline/index.ts @@ -327,6 +327,7 @@ export enum TimelineId { test = 'test', // Reserved for testing purposes alternateTest = 'alternateTest', rulePreview = 'rule-preview', + kubernetesPageSessions = 'kubernetes-page-sessions', } export const TimelineIdLiteralRt = runtimeTypes.union([ @@ -341,6 +342,7 @@ export const TimelineIdLiteralRt = runtimeTypes.union([ runtimeTypes.literal(TimelineId.active), runtimeTypes.literal(TimelineId.test), runtimeTypes.literal(TimelineId.rulePreview), + runtimeTypes.literal(TimelineId.kubernetesPageSessions), ]); export type TimelineIdLiteral = runtimeTypes.TypeOf; diff --git a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/default_headers.ts b/x-pack/plugins/security_solution/public/common/components/sessions_viewer/default_headers.ts index 4c045e358e1d6..0e7bdd7d1f540 100644 --- a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/default_headers.ts +++ b/x-pack/plugins/security_solution/public/common/components/sessions_viewer/default_headers.ts @@ -59,10 +59,13 @@ export const sessionsHeaders: ColumnHeaderOptions[] = [ }, ]; -export const sessionsDefaultModel: SubsetTimelineModel = { +export const getSessionsDefaultModel = ( + columns: ColumnHeaderOptions[], + defaultColumns: ColumnHeaderOptions[] +): SubsetTimelineModel => ({ ...timelineDefaults, - columns: sessionsHeaders, - defaultColumns: sessionsHeaders, + columns, + defaultColumns, excludedRowRendererIds: Object.values(RowRendererId), sort: [ { @@ -71,4 +74,4 @@ export const sessionsDefaultModel: SubsetTimelineModel = { sortDirection: 'desc', }, ], -}; +}); diff --git a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.tsx b/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.tsx index 4d89b969e5c17..6d3038e4554ed 100644 --- a/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/sessions_viewer/index.tsx @@ -10,7 +10,7 @@ import type { Filter } from '@kbn/es-query'; import { SessionsComponentsProps } from './types'; import { ESBoolQuery } from '../../../../common/typed_json'; import { StatefulEventsViewer } from '../events_viewer'; -import { sessionsDefaultModel } from './default_headers'; +import { getSessionsDefaultModel, sessionsHeaders } from './default_headers'; import { defaultRowRenderers } from '../../../timelines/components/timeline/body/renderers'; import { DefaultCellRenderer } from '../../../timelines/components/timeline/cell_rendering/default_cell_renderer'; import * as i18n from './translations'; @@ -48,6 +48,8 @@ const SessionsViewComponent: React.FC = ({ pageFilters, startDate, filterQuery, + columns = sessionsHeaders, + defaultColumns = sessionsHeaders, }) => { const parsedFilterQuery: ESBoolQuery = useMemo(() => { if (filterQuery && filterQuery !== '') { @@ -83,7 +85,7 @@ const SessionsViewComponent: React.FC = ({
{ timelineId: TimelineIdLiteral; @@ -15,4 +15,6 @@ export interface SessionsComponentsProps extends Pick x !== TimelineId.active); diff --git a/x-pack/plugins/security_solution/public/kubernetes/pages/constants.ts b/x-pack/plugins/security_solution/public/kubernetes/pages/constants.ts new file mode 100644 index 0000000000000..c7120947a9182 --- /dev/null +++ b/x-pack/plugins/security_solution/public/kubernetes/pages/constants.ts @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ColumnHeaderOptions } from '../../../common/types/timeline'; +import { defaultColumnHeaderType } from '../../timelines/components/timeline/body/column_headers/default_headers'; +import { DEFAULT_DATE_COLUMN_MIN_WIDTH } from '../../timelines/components/timeline/body/constants'; +import { + COLUMN_SESSION_START, + COLUMN_EXECUTABLE, + COLUMN_ENTRY_USER, + COLUMN_INTERACTIVE, + COLUMN_ENTRY_TYPE, + COLUMN_NODE, + COLUMN_CONTAINER, + COLUMN_POD, +} from './translations'; + +export const kubernetesSessionsHeaders: ColumnHeaderOptions[] = [ + { + columnHeaderType: defaultColumnHeaderType, + id: 'process.entry_leader.start', + initialWidth: DEFAULT_DATE_COLUMN_MIN_WIDTH, + display: COLUMN_SESSION_START, + }, + { + columnHeaderType: defaultColumnHeaderType, + id: 'process.entry_leader.user.name', + display: COLUMN_ENTRY_USER, + }, + { + columnHeaderType: defaultColumnHeaderType, + id: 'process.entry_leader.executable', + display: COLUMN_EXECUTABLE, + }, + { + columnHeaderType: defaultColumnHeaderType, + id: 'cloud.instance.name', + display: COLUMN_NODE, + }, + { + columnHeaderType: defaultColumnHeaderType, + id: 'process.entry_leader.entry_meta.type', + display: COLUMN_ENTRY_TYPE, + }, + { + columnHeaderType: defaultColumnHeaderType, + id: 'process.entry_leader.interactive', + display: COLUMN_INTERACTIVE, + }, + { + columnHeaderType: defaultColumnHeaderType, + id: 'container.name', + display: COLUMN_CONTAINER, + }, + { + columnHeaderType: defaultColumnHeaderType, + id: 'orchestrator.resource.name', + display: COLUMN_POD, + }, +]; diff --git a/x-pack/plugins/security_solution/public/kubernetes/pages/index.tsx b/x-pack/plugins/security_solution/public/kubernetes/pages/index.tsx index 59ba4fa340e21..0176355b6672f 100644 --- a/x-pack/plugins/security_solution/public/kubernetes/pages/index.tsx +++ b/x-pack/plugins/security_solution/public/kubernetes/pages/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useMemo } from 'react'; +import React, { useCallback, useMemo } from 'react'; import { getEsQueryConfig } from '@kbn/data-plugin/common'; import { SecuritySolutionPageWrapper } from '../../common/components/page_wrapper'; import { useKibana } from '../../common/lib/kibana'; @@ -21,6 +21,9 @@ import { useGlobalTime } from '../../common/containers/use_global_time'; import { useDeepEqualSelector } from '../../common/hooks/use_selector'; import { convertToBuildEsQuery } from '../../common/lib/keury'; import { useInvalidFilterQuery } from '../../common/hooks/use_invalid_filter_query'; +import { SessionsView } from '../../common/components/sessions_viewer'; +import { TimelineId } from '../../../common/types/timeline'; +import { kubernetesSessionsHeaders } from './constants'; export const KubernetesContainer = React.memo(() => { const { kubernetesSecurity, uiSettings } = useKibana().services; @@ -60,6 +63,21 @@ export const KubernetesContainer = React.memo(() => { endDate: to, }); + const renderSessionsView = useCallback( + (sessionsFilterQuery: string | undefined) => ( + + ), + [from, to] + ); + return ( {kubernetesSecurity.getKubernetesPage({ @@ -74,6 +92,7 @@ export const KubernetesContainer = React.memo(() => { startDate: from, endDate: to, }, + renderSessionsView, })} diff --git a/x-pack/plugins/security_solution/public/kubernetes/pages/translations.ts b/x-pack/plugins/security_solution/public/kubernetes/pages/translations.ts new file mode 100644 index 0000000000000..1b2c308c0bfa6 --- /dev/null +++ b/x-pack/plugins/security_solution/public/kubernetes/pages/translations.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const COLUMN_SESSION_START = i18n.translate( + 'xpack.securitySolution.kubernetes.columnSessionStart', + { + defaultMessage: 'Date connected', + } +); + +export const COLUMN_EXECUTABLE = i18n.translate( + 'xpack.securitySolution.kubernetes.columnExecutable', + { + defaultMessage: 'Session leader', + } +); + +export const COLUMN_NODE = i18n.translate('xpack.securitySolution.kubernetes.columnNode', { + defaultMessage: 'Node', +}); + +export const COLUMN_ENTRY_USER = i18n.translate( + 'xpack.securitySolution.kubernetes.columnEntryUser', + { + defaultMessage: 'Session entry users', + } +); + +export const COLUMN_INTERACTIVE = i18n.translate( + 'xpack.securitySolution.kubernetes.columnInteractive', + { + defaultMessage: 'Interactivity', + } +); + +export const COLUMN_ENTRY_TYPE = i18n.translate( + 'xpack.securitySolution.kubernetes.columnEntryType', + { + defaultMessage: 'Entry mechanism', + } +); + +export const COLUMN_CONTAINER = i18n.translate( + 'xpack.securitySolution.kubernetes.columnContainer', + { + defaultMessage: 'Container', + } +); +export const COLUMN_POD = i18n.translate('xpack.securitySolution.kubernetes.columnPod', { + defaultMessage: 'Pod', +}); diff --git a/x-pack/plugins/timelines/common/types/timeline/index.ts b/x-pack/plugins/timelines/common/types/timeline/index.ts index a19086f583284..8737652b47f4d 100644 --- a/x-pack/plugins/timelines/common/types/timeline/index.ts +++ b/x-pack/plugins/timelines/common/types/timeline/index.ts @@ -323,6 +323,7 @@ export enum TimelineId { test = 'test', // Reserved for testing purposes alternateTest = 'alternateTest', rulePreview = 'rule-preview', + kubernetesPageSessions = 'kubernetes-page-sessions', } export const TimelineIdLiteralRt = runtimeTypes.union([ @@ -335,6 +336,7 @@ export const TimelineIdLiteralRt = runtimeTypes.union([ runtimeTypes.literal(TimelineId.active), runtimeTypes.literal(TimelineId.test), runtimeTypes.literal(TimelineId.rulePreview), + runtimeTypes.literal(TimelineId.kubernetesPageSessions), ]); export type TimelineIdLiteral = runtimeTypes.TypeOf; diff --git a/x-pack/plugins/timelines/public/store/t_grid/types.ts b/x-pack/plugins/timelines/public/store/t_grid/types.ts index 8e0b7e995dbcd..c7127f16385af 100644 --- a/x-pack/plugins/timelines/public/store/t_grid/types.ts +++ b/x-pack/plugins/timelines/public/store/t_grid/types.ts @@ -54,6 +54,7 @@ export enum TimelineId { casePage = 'timeline-case', test = 'test', // Reserved for testing purposes alternateTest = 'alternateTest', + kubernetesPageSessions = 'kubernetes-page-sessions', } export interface InitialyzeTGridSettings extends Partial { From faede27bf7037e7808e212a959fe90eedc87772c Mon Sep 17 00:00:00 2001 From: Kaarina Tungseth Date: Tue, 21 Jun 2022 15:07:46 -0500 Subject: [PATCH 15/61] [DOCS] Adds the Vis Editor 8.3 docs (#134115) * [DOCS] Adds the Vis Editor 8.3 docs * Updates screenshots and UI labels * Update docs/user/dashboard/lens.asciidoc Co-authored-by: Stratoula Kalafateli * Review comments * Removes duplicate image * Review comment Co-authored-by: Stratoula Kalafateli --- docs/management/advanced-options.asciidoc | 2 +- .../user/dashboard/aggregation-based.asciidoc | 4 +- .../dashboard-troubleshooting.asciidoc | 52 +-------------- docs/user/dashboard/dashboard.asciidoc | 2 + .../Screen Shot 2022-06-13 at 3.41.52 PM.png | Bin 0 -> 20175 bytes .../images/aggBased_barChartTutorial1_8.3.png | Bin 0 -> 13640 bytes .../images/aggBased_barChartTutorial2_8.3.png | Bin 0 -> 36601 bytes .../dashboard_discoverDrilldown_8.3.gif | Bin 0 -> 736248 bytes .../dashboard_discoverDrilldown_8.3.png | Bin 0 -> 110262 bytes .../dashboard_drilldownOnDataTable_8.3.gif | Bin 0 -> 594583 bytes .../images/dashboard_drilldownOnPanel_8.3.png | Bin 0 -> 174122 bytes .../dashboard_urlDrilldownGithub_8.3.png | Bin 0 -> 50439 bytes .../dashboard_urlDrilldownGoToGitHub_8.3.gif | Bin 0 -> 346426 bytes .../dashboard_urlDrilldownPopup_8.3.png | Bin 0 -> 125167 bytes ...PercentageNumberOfOrdersByCategory_8.3.png | Bin 0 -> 35536 bytes .../lens_barChartCustomTimeInterval_8.3.png | Bin 0 -> 22494 bytes .../images/lens_dataViewDropDown_8.3.png | Bin 0 -> 47601 bytes ..._lineChartMetricOverTimeBottomAxis_8.3.png | Bin 0 -> 36271 bytes ...ns_lineChartMetricOverTimeLeftAxis_8.3.png | Bin 0 -> 51338 bytes .../images/lens_logsDashboard_8.3.png | Bin 0 -> 143659 bytes .../images/lens_metricUniqueVisitors_8.3.png | Bin 0 -> 45107 bytes .../images/lens_runtimeFieldMenu_8.3.png | Bin 0 -> 79926 bytes ...ns_timeSeriesDataTutorialDashboard_8.3.png | Bin 0 -> 223406 bytes docs/user/dashboard/lens-advanced.asciidoc | 48 +++++++------- docs/user/dashboard/lens.asciidoc | 25 ++++---- .../make-dashboards-interactive.asciidoc | 59 ++++++++++++++---- docs/user/dashboard/timelion.asciidoc | 2 - ...create-a-dashboard-of-lens-panels.asciidoc | 41 ++++++------ 28 files changed, 111 insertions(+), 124 deletions(-) create mode 100644 docs/user/dashboard/images/Screen Shot 2022-06-13 at 3.41.52 PM.png create mode 100644 docs/user/dashboard/images/aggBased_barChartTutorial1_8.3.png create mode 100644 docs/user/dashboard/images/aggBased_barChartTutorial2_8.3.png create mode 100644 docs/user/dashboard/images/dashboard_discoverDrilldown_8.3.gif create mode 100644 docs/user/dashboard/images/dashboard_discoverDrilldown_8.3.png create mode 100644 docs/user/dashboard/images/dashboard_drilldownOnDataTable_8.3.gif create mode 100644 docs/user/dashboard/images/dashboard_drilldownOnPanel_8.3.png create mode 100644 docs/user/dashboard/images/dashboard_urlDrilldownGithub_8.3.png create mode 100644 docs/user/dashboard/images/dashboard_urlDrilldownGoToGitHub_8.3.gif create mode 100644 docs/user/dashboard/images/dashboard_urlDrilldownPopup_8.3.png create mode 100644 docs/user/dashboard/images/lens_areaPercentageNumberOfOrdersByCategory_8.3.png create mode 100644 docs/user/dashboard/images/lens_barChartCustomTimeInterval_8.3.png create mode 100644 docs/user/dashboard/images/lens_dataViewDropDown_8.3.png create mode 100644 docs/user/dashboard/images/lens_lineChartMetricOverTimeBottomAxis_8.3.png create mode 100644 docs/user/dashboard/images/lens_lineChartMetricOverTimeLeftAxis_8.3.png create mode 100644 docs/user/dashboard/images/lens_logsDashboard_8.3.png create mode 100644 docs/user/dashboard/images/lens_metricUniqueVisitors_8.3.png create mode 100644 docs/user/dashboard/images/lens_runtimeFieldMenu_8.3.png create mode 100644 docs/user/dashboard/images/lens_timeSeriesDataTutorialDashboard_8.3.png diff --git a/docs/management/advanced-options.asciidoc b/docs/management/advanced-options.asciidoc index 2aa160674b744..120617ea4de94 100644 --- a/docs/management/advanced-options.asciidoc +++ b/docs/management/advanced-options.asciidoc @@ -215,7 +215,7 @@ When enabled, provides access to the experimental *Labs* features for *Canvas*. [[labs-dashboard-defer-below-fold]]`labs:dashboard:deferBelowFold`:: When enabled, the panels that appear below the fold are loaded when they become visible on the dashboard. -_Below the fold_ refers to panels that are not immediately visible when you open a dashboard, but become visible as you scroll. For additional information, refer to <>. +_Below the fold_ refers to panels that are not immediately visible when you open a dashboard, but become visible as you scroll. For additional information, refer to <>. [[labs-dashboard-enable-ui]]`labs:dashboard:enable_ui`:: When enabled, provides access to the experimental *Labs* features for *Dashboard*. diff --git a/docs/user/dashboard/aggregation-based.asciidoc b/docs/user/dashboard/aggregation-based.asciidoc index bf13661b9aadd..842f2e93bc58e 100644 --- a/docs/user/dashboard/aggregation-based.asciidoc +++ b/docs/user/dashboard/aggregation-based.asciidoc @@ -172,7 +172,7 @@ To create the bar chart, add a <>, then .. Click *Update*. + [role="screenshot"] -image:images/bar-chart-tutorial-1.png[Bar chart with sample logs data] +image:images/aggBased_barChartTutorial1_8.3.png[Bar chart with sample logs data] . To show the top five log traffic sources, add a sub-bucket aggregation. @@ -187,7 +187,7 @@ TIP: Aggregation-based panels support a maximum of three *Split series*. .. Click *Update*. + [role="screenshot"] -image:images/bar-chart-tutorial-2.png[Bar chart with sample logs data] +image:images/aggBased_barChartTutorial2_8.3.png[Bar chart with sample logs data] [float] [[save-the-aggregation-based-panel]] diff --git a/docs/user/dashboard/dashboard-troubleshooting.asciidoc b/docs/user/dashboard/dashboard-troubleshooting.asciidoc index d9bf80a5b1996..7fe1b7c3067b9 100644 --- a/docs/user/dashboard/dashboard-troubleshooting.asciidoc +++ b/docs/user/dashboard/dashboard-troubleshooting.asciidoc @@ -1,14 +1,5 @@ [[dashboard-troubleshooting]] -== Dashboard and visualizations troubleshooting -++++ -Troubleshooting -++++ - -Find solutions to common dashboard and visualization issues. - -[float] -[[defer-loading-panels-below-the-fold]] -=== Improve dashboard loading time +== Improve dashboard loading time To improve the dashboard loading time, enable *Defer loading panels below the fold* *Lab*, which loads dashboard panels as they become visible on the dashboard. @@ -26,44 +17,3 @@ To enable *Labs*, contact your administrator, or configure the < Aggregation based*, then select *Timelion*. - -.. In your browser, open a new tab, the open the *Timelion* app. - -.. Select the chart you want to copy, then copy the chart expression. -+ -[role="screenshot"] -image::images/timelion-copy-expression.png[Timelion app chart] - -.. Go to the *Timelion* editor, paste the chart expression in the *Timelion expression* field, then click *Update*. -+ -[role="screenshot"] -image::images/timelion-vis-paste-expression.png[Timelion advanced editor UI] - -. Save the visualization. - -.. In the toolbar, click *Save to library*. - -.. Enter the *Title* and add any applicable <>. - -.. Make sure that *Add to Dashboard after saving* is selected. - -.. Click *Save and return*. -+ -The Timelion visualization panel appears on the dashboard. -+ -[role="screenshot"] -image::user/dashboard/images/timelion-dashboard.png[Final dashboard with saved Timelion app worksheet] - diff --git a/docs/user/dashboard/dashboard.asciidoc b/docs/user/dashboard/dashboard.asciidoc index b63bbdc75e9f9..e0e469c0d7d11 100644 --- a/docs/user/dashboard/dashboard.asciidoc +++ b/docs/user/dashboard/dashboard.asciidoc @@ -337,6 +337,8 @@ Apply a set of design options to the entire dashboard. * *Sync color pallettes across panels* — Applies the same color palette to all panels on the dashboard. +* *Sync tooltips across panels* — When you hover your cursor over a *Lens*, *TSVB*, aggregation-based, or *Timelion* XY chart, the tooltips on all other related dashboard charts automatically appear. + [float] [[save-dashboards]] == Save dashboards diff --git a/docs/user/dashboard/images/Screen Shot 2022-06-13 at 3.41.52 PM.png b/docs/user/dashboard/images/Screen Shot 2022-06-13 at 3.41.52 PM.png new file mode 100644 index 0000000000000000000000000000000000000000..3322459294d3c60cb36be12ce266f03705c70b9d GIT binary patch literal 20175 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
oW6TbB{;ImPAaV9!l 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 literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/dashboard_discoverDrilldown_8.3.gif b/docs/user/dashboard/images/dashboard_discoverDrilldown_8.3.gif new file mode 100644 index 0000000000000000000000000000000000000000..2015830f68fec41067071209d7574be034c5bcb8 GIT binary patch literal 736248 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�H0ne<|k>?g$DRQ&Q>ao4pN1^jn@;IMu4cmvdsp(@#E6! zNo-$|>Jtw&5hC(A;8kx!ciwIu7wC>ug+n4E1*LMu@%hj{DnLD%xR_#TAxSwdfI%Iw zs`QH3+kypAhL>JV1_R6XaHeEZ2)v{RcYCJ{H|nW#ULoBGZ1c+@Z^NNt5#4r=TEYB@SZ%Um;lm;hX7Ma0Q<}Z zxpk?Ht$=ub8Q|TLl0k=0#vY&%+tx{icGD8%BHyx4)Cy4H;nlYztZXLedc^KRXq-ux z?s(>=3a-(qPX-UPssQ@VugI{1Rm?=?4gRdfS%}EC0*dz&h$dhs%r=XFYkD-V800%qK z#%_(cJ|Xrt(QX=z^i$xy0C*6c4Y}%JPi3jbfpKc5s}O39**1`I5@kR6;{Uv1tSBkc zV_e6*mso^@sB$hcr~rr;gWQ$(jBzJF2(;yMfN9_rx4daC&AEWig|63{b`(LVpm>( zxmKquGwd&R&gSPr5T@E`50J$LcI5&BvZSeMtu-s4Ba#%pycD{vaotPM*)j|qWu{~%GTgK!HA z2Z+_V{~#5W<<{JvI|{PYjE5*SPLLz0q#i+jw|5HaFXDKw@LjHABEC#0wzIKF<-o{j26YcJkqcUvhp)*WO^Yyd4S z8p8>6Bzp?l!92hdqgGp{nw*xO$(}qSe^v#2dbADk1frIN<~czRk@p#{Fp9wq#(5Bv z^4E1-1*6A+PdWJ6O;@oyKwAqu%NC_l#6UA+;=}q=6p7~R0g04v*!ol1MDNE%JF#tp za5hGXp;}H2iJ)gb|4BIY5i%N%B>lBr0dC|)uP5t;DwQSL5aOK%GMpR2YG6(9O5 zgtQ1S{Cc?f9M}k2!fNiJwr!QfC*Gh4OI850p93t`K-r?S3vnOP*omf8FKZyAgR<61 z?nUWSV$r9)=V#>TFVMvFZvvNaZ!*pcqxX!1i;lJ*1tELOr-#Ybr^_DG&m5B%wE$nM zq6&p0;z6A(xntaUQ0XH`tF;1OrjXiePym-O8D^_H|N3j&1AZud5S&97zuxjO`?$g` znSN9_;)JF75M+D$hac$IvzjhC#UI?m9^~zA3tfgYwlQ=8(hgDBvm}o% z!l;KD1rj(&BiSqH$qY{h+kzNVA=gbLoW4R0dgmZ9ph?>&lRQyha`FCi0S+cl@fCMP z*$v+1qUE#SpjFWA{uM$Qunpmt(6z6n)bpwVlP3XiX<@&-Nicf#1*t0#XLan-xC$kN zyqBTa{Z2_f0=ct+rN~2u0k8o=PVCcU zfQ?y{>4wvPhKU;yPB_O|G?&|({RAfW!&zy}@F-eIvXM343ivnIf2aFRS@sb5j0R(}I6>iyHB7q@?}$TaKM_cYUYU(cwi`7f%S z-rg%!_od@rh8lMjb{*R7-!r|n{>w~Y|hbKd>(dvO+^ z^td@`&cdU_HKlHBn3Vf-9D9oO;!z7C+|IS=KJECl#^0|DM=8e?f~&T5!J6>~lv@6g z52x7YjRL{upM!~7W|4aJqa7(9%~O#AUV10qR+>4O*H(kmIx0PCyNtJcS5-a9nYm(lhjr|EpLSi z_01yB`w%SQDN+-m{ zwT#-^T<{!9#rx+|7uiOyGS}LSwrY*D?yM5W{e+*2U;3uOr2?dOOU!XoSx?w#@yS#T zC0wUL&=i1Yw9=$9BwM9-=4QH%(RcD!jr94kk!4J3%V>@*^2kr5JlsLu&I0Vy`Lr$# z=J`3M@kF0G4L^#eGqQ{A*IN9oz}skFgYTmwfqqe~;W%_y7sq2!;dA+ik3cd-$gKtK`oW<;#azwN z@RO$`o2@NF>VEz_Z%tN~LufNy;o0!fOo`PP;VNRi@zSP7gC99tMCP#yAs?p-Yojuv&jn4wLtXXOD!VO_d=0_P{7ALd1WY#Oaw=XL$6^Lr{$AEY@ z6C$N)6lLmM^QCHdD&2DjG>Fcx-pfm3?9=x@ z$j!&uqzQc13dl`J%%`L3BFqnyq0xrj!mz?0jE7=c2JAzEL%)Rr@l+pV=5!OOeY}%9Bb$y9BTv51X-h{{8!5 z0BVO0L1(SS8{*EyW&`^8KnQ}tF{qI5Le5AyLjmgIRGD?=8WQ1>e3r`%+ zPD9JvgU4c!jN`0j0u@B|1fgcwHFHq(e1OOrGWh7k)P*N%q%n|TzWn~)b}H~N386A* z8_6Y^emD1)vxZG=@E)Dsh8b7Effg_pO}a@x>}v7xfXrlvW0QXMIuqZpa~781)Tztz z)?`t%*I6~qD4I@V7PHJd_FKrydIVOcn9vt~6f|O|y-Nf&8)cPrr5I1&XPW=44BuXB zcIqV8w5J~v7-69*FUj|-50_$4H8On;<3!IYa_OjWoLtI2n~&~_865h?B}3wy=vW)>$FFqog%7Q6bIIWf zd#`cS-E>rj!Dto|HZC;su_hie0kt)Eay!NX||zC3xZbw(EgX+wu2)w;B1 zZesIrf300knP566vjy;Scw(^R??Y1s+H6nRY#z#1b2TZc^$Tl1M?A=wZ9iOCq$<(> z1^rY2?I)E&7$o5sGXp5jFx7&Kvo*7hixcLOzeHX!t>hXzR<=;&dk7a?o}toZZf8g+5^UasBPrMp>(dx`~=+L?cMI-v$?z_cS?EkZEB(hY~!ek8o`6xS-&6l zn&HjPv5YG|sf$qc=Cq&Dg|__bOh>7$2t zoW7JYGgk7iNkdy`PlvbjaBr6JUbA4Lml2?F>B%xTK#;aUT~j)`G_E!SPI%`Q|HgM5!Q{8`XVN`!!IrBUFX@bsj z*%E28dF5vsx3t>+0w$k2^Up!F`rOPdxerT@P?4W=M}`Zn5jgn~Qos2`!b|&2%wjmv z2NEmN8GHiIrH5&&9`9X{(TTD&^l)w&iyuvDSF~y{a9ZGKLgLfCZ!~K zoY|LA3eJkKcZ6WD9ez%OLoz;XFgV#xT*lskMM&n;3ul+pS2q=O(NSVXS+0du-l%+B zT8;VI88WPPT62o{kPihq*`^007Kr}8ai$M1PWQa=OHvav80}Bm>Kav*Oy~FilDVxD z!zq`|o~CBm(dBOO-XBx-gE@EQ#q{qVv702s6N)qtzu% z@2}`F4>M>Kf0T0=6qLpk-F$Qo|4}?t*YQI2Qq)O(5)$n^a;NxeXy^UD(iM}UuDvYt zt6KdIXaZW@@fP~~pWTTN%r0q+YMSd#{uDuafX%hEdgO9{_l!EFzI@0VMZMOZZ}wU$ zIQ?dT)0RNG5F?8MHP8vkp`A=;GT?B`m#jfbBZLxm=TYK{Bx<&A3F_#E{>oEm4Zi7a zl>63=g+tU+o0&qMV_n}@fE?&_E4H6ZCm|xZ`ZQ3)B^14u@yk3nRv&i!n=5LLh6^^t zTmEW&yM0+bn+}K07TFg@*tc4Xr}VLSkOvt^oAu5f6*$MF)C#@gMSfx~LPtyzOa4uE zJCeV(%T3Vl6Zae9TN84yQPdn9mehR2-Ox&()RzFX83w1%)!==#OL9GgMIps?2ML(l z09OlY@t05drJu<6CeBL?mTwi^NrSPEdbF>Zxpqaby||AoxN}@ee(S?4B=GO@ptkdQ z`ENm>BdF0qdLghqWY*DUy`cji7jt^+P>~8cC<5obPK421y@kOjVe<<6I&~ zYSUiv5LG4S%0ynbhYh0`PZfx+c}&v4FE3FEgF{8c*ObRKMxLs~Uo(8nmf zDgv1*!ZqbxW~$oU$92qg^;$G%2;8oi*n$$=o?gwKhD5@Uk41;Q{1dHI5AAS8CYOr$ zDekq*<&O|A^ZLl}=~+ak6%vAJa%Wo8UpS;Tc#Zpe$$uv#$Q1xPawF55If^?;e0DX< zJ97%SWPQBU2@&!0(shDTf>9;Y2tcrVj&0+Mwzv8FlZy;=M}GPE?FWV*#m@mM^CQZg zI_}g55|4J+ji}>K9w_>UikTF(OD93w zaC)uSJP0M71y-w_jkxVGz?r$xS8f~`Vph^QX9azD`Pv3sh`u&?#sz*X63?{r-pxyA z>UGT{Ou4WL)b~()Z?%bt2Lt#i3LXW%xDu>zAy1*1`!SVltAO{){Y0GEVSR0m}Cw?E+cW1daBP7e&*RCFm`0Su zknZtZT$9eO2Mbn5 zeL-);G&Fim@jqZn%CDzaUds#KE(nKpCwwfL`&|-0qW>t2dsLGYZP~>e(_uNJoEjv( z!_riHOF%43UWmxUzoFQaFo^1mUHYqc>Vj*$vG8P+jU*#MDa@!_?P(SS{$T+5tY#5! zWVG2nTQF;sPH@8Vdhq;*=E_IX5QSwRX)3dAiZm#H}*1h2^c@6oK7b zmcDR;+52UL*P?UpTd}a-PQikA29zveD?VA36kVBiVaBa&AZV-(rar^wZnmwmfooW2 zjn`87szH>a+zQ3JBd-$A`Va7*dVYz zuit*nM%Fk@n%pkf%8Q4N$^P>2S3gWZ+ng>9VS|yidsi+=P{bt&gs5!1<8@#E}EF)f~y6v(O$HvalB_?7HiQ3NvY376@qrOeO zR#_r0!5noZL~VbQlhszf@Tsr8uR(uopWnqG(Pl$}%DX9vdm(kJ{=@TWtl1)e_~<>> zQEBFdw@~|T@-WB7XBVt;Joyl4?D{xST@%udIhCv8bBvx<5YO8;3hf+I$>C{IIuoSC z2}}57g~I;NmOtrsk1l1j3ghn*=dLB4#^wjw=+%s(k`K)jk*P&qBK0)PmqvL@s6o5K z4c_vm7ZYV5GkuvwOH&I={^oJkW}{E-DVn%SLJV9{YHIjVyq|frx?^o-7YVeyY|3+O zYG_b7>?`x^$XmYZPk)J*;JlwhxpW6j$vObvN{j6Ru!Q&e5wY32aKW^V-oP|Lfr8~} zP&Tbko-d5N5SDql#ogWoMdS11O%6mKT(QD#rw~E>6(t5d2@|gK`Aven^_CeCxrBSH zCR_m^u;tU*Ac#!4T|n3)z2`*ycqt5B?GAVGE|GES{Pqz&jab%{bavTR>~lv()Hz&_ z$%YAt5__COzI;el_4P?>;7ZwcOk+|>_=8Q~g1hV8Tv=DLllgHdXK<@KH~xj;*5~JW z7QQNqI(fRR3q^Vx)N9IrLx`&n*V&JC5N9+E*jC1#d(B3`b9KWLo7tK6z2vaPFJ6NA z`L(*ZB!gy2f7}kN!VdmOZ43VvsbF64&z(XjOxoU+@>`OAB*!gsiFaR3E(-%ve9D&aSKFUz^{Q+GitTjB%}TQoJM%?B zCN2N)iw;%N?(riIA?uHNCWFAE5bg%>XL4Mq*K^K50}C@sUj7r~3)jOs=Gr#x!H#yI z=rkou-<6k$?j{y|2l?3i_?ucBrO-ae#l@N7OR*n&y5I8|K3bzlVmabuoFb@p(tZ4L zlDlsDVO_~#wTt$H8n32PYf%On#yU$g zV)l~Lg6T0cA7{XKT~j`K&u1iZNB7*fawTbD_)Zoj+>S3OwZ`TH&VFQn?-!76>G)ow zcQ$SMg6Xl5((r)b^&a0*oR|7R)ZA$X^u-L=lR$ManT0T>Z}K((X_5K;ua1uOnAVUS znEps*MBgcj3xD%(X@u+Uq~Jx3L~?KmKC8F<`$X@9m-j)P==3vXTLl2(WYx4J^ttWoE@;?+Cj_Ypyh^rGY z4h)w=vQ1p6-4^{&KYUGQi5Uv~GucLtMhGmczZU@8fdrb*0*|Cc6Yd4v?eGJhkzVY} z{Cs+lVUHfOPV#q24R9^~*_~!!!N2%*Ai!-iz*8Q~o$Hjdg=u1L2TzZRzzB>|+w*)D z$Q*1TKjIr?hkc5Hl>@?k{(>Q3_SYMhK<#HWx=^g}2r!QX8E7RiT9r5G*J;dbf0X$-NpL(m@<%Ftc>?lAY>w}UvZw)-+wIyC}NZ6$?1!p`7&NPAf$pxW^Uk+>;7>_?NKQ#*J`?E8uVL$f4wOq!UF2;(F+poF=yh!VJMo03RB+?F zM6suV%(X9S*0dXApI@-mlSjKc-X@$e$KeRww3uNckKg zg09~REzfQD91o-T7bouH*RXRpNs8KF1Z@>3Y?zL{xDDG!$M2im*F^sN$^<%*zmJ+* z-`fm3T0!lugdL-)zBv=vL;uC58hieUJ68qU+eVnZOnAW){`Cp^WH!8|If4*@MsdaO z;3Hq`-4p+F{%<>*I^gfm@2`hr$v9d3Ow*vs(EyZ8YxQhXHGV^mKgs2SRXv7VlyTSP z3aW)7QRWHF6J%G-rlb^`Le6vQWzjune5^{rHJV5o%WvqW$Fz`?TE?G5?Vo8>Xa0`P z!7+_dv-nKMM|+&hwny7>rRDjFm_17qXf`CwUHn^jD}FUg7X6LK+io*1KBi zJ~{8>S8C8_sOWT+s$Ztte53hG$9Jl4e<+5ff3`MW)ok2ftTXvfJ6rU0wZ-|1a2gh35{=^NjK|Fp9gs-M2~y!$g0(EHI~P+R+CGJ3O%Y|!)m z-|6MyN-K5I&FJ97yE6>jE8T>_T7|J!;^X%2PG)I(2Y2A3?v+T z^I<4#WD`SMw8CtGk0lB-~wJ!hyD4@S%SEyDk_Pk3*jpBkIJ?$OP2b> zRgtbC#a)?g9>QIf=hn?#T^RC*yQVZjil;W^*np?5wvG;3Y9ZLc)6nponzs?mZ38fo z|DM-qe7|2+_;wI1{n(RZTEnB^or?NW{kT-3VeYJkG++A!?V@sf?c{=H$3{yfL&w*u zN#1vsN8J3)HKp!#{AX|ezOkC5t>EvyS?8_mMbEu_(tl@{|Gn=XEYnnuK^`hF6i-(m zFiiZttI7XbQbusp9hS71l^}a%#ibz2RZFA5jZtPnlw>S8*~0zs<%V0{M`KPT2)d@l z@@vKn(zb|xq{Q2qcXE0ztO;kDdo!ITv_Lo=WRbY4O#c~EDr4U`nXp;wbBnsW?CWVf zg0KRtq#a{FMakLyisynatj;Fo(rI6>4(v&n<-32LwjK*ao2B@M{Jj(3LJ-PHY{%BG zzuQLf_DR%u3*R5kq-x4_DV`De@$coi_emZUzLay`Ek@IJAHt-p{}dt1`=m}9SylhI zNd_=jEcZWB$70j$>68AxlfThZihVS*K0kElqBlOkTfCk2QCi-6z{C1Z=B97jTJ~p~ zieJc2x}mSKx7+b=N%tSNG9H`m759fX=(YP&{Jm`LC%L=%gf5o&cQC!NPJH$EyF1xE zrvgmUHWE*U8H;?JQk1I+(QmHm%D^>9U?3p%jDEG5r{-OzSv4rOr2tP@RF+EpK+UC< zgjmt^J++r^ESo_TVYwn1iogZWArVUATQmIVo;$jqyTq+S00MP7XXV?qeQsC{W#NxO z$w8yHLXmKJOhHi{t#L|jtWj>CW+^k7accIK(Sh2xi3Q+q@^dw5g89wKA7JHl3R_Us)~QI^pFnh?tAN)}c^uNs)g4ugCniyIbDh3{q;}(d$qUfs&oMeCPS2i{KY#h29YG zfBv1CS!Ng=?8nVg$o({b+0aHKW=@;?Y9VPvBwtq9PH%}@tMI{1C#~fsI~tr;D3xs& zLjk~}f9q8Z{Rqu7ix;h5Hz?IuVm7qeWG#M$&h^RWs;5}A^ORfmN< zu7Ndo;^$9Pfl+#n+?EiZ<$aBdF2d;}3Cb3WbnYI)WpUy4`p}E^m)+tpUnqB z)D^3^U~l(tlh=wfte;$;&}`Og{NVxm@o0IJB@(Ug8Rz=ralS|D2Pk3%`ZQ^33yjLK z#JXM)(@-86{lkz8-%EnKteX~);-&`t?4YXJjnN%wb_ zA&bS`JU*i?$2}$8YcuzYAZXYI_R1J~J)qaN<&(_w9>c%uLs37IWuDW&cy00Ya5+hS zA7^x#k!V>pta!Wgf;8;i-HUY(S4tZ)10e zpM8=b8zNC?w*Tfkc{>{R<2)_1cb7w6a`I^kkEQN0oYSC-9s7Dml$dn?o#c6;lXb1p zTh7(do3p~13lp;BATdNuuzzTZdFbcfBb^AT#d7|e+NbZ2$wwt$e0%OM?q+phkqR|z z`ugWIv%T$3BVZvLMBKF~$~LC?G0e(b-O z6OJ&flm%d{KAz%b_Mr6u&h zL-os}Z7Uljbxz6;Z&L6Zyx8p0!`=;;WtuJ#J-xxqcZ?5IGth4o^o((Ol1X0}$5LtT zOPNXR8gN*kj4Ui1Wh`P0n<93sf8toB>?+|b>?$lVx7#dEy0)uU906sVieSp{GOiRB zZfpF7vxSf96YWd3FD&7Jidu$5v3sr(mrAS>Q6YR07n9-xHwP`p%-Ga8%45}(+c@#f z5{ltoeYR#=@p?)To@&>*-M9q>21*qrSUo8)UQ=usKb~fF`Sywdzrp)kdwQum^C!Pf zTkprK%3F4B71n}d@N(EepO)()_*_!Pk5G$c(r{c8>8y}XxjW$9K%Oj)j1maZ8D^#PlSoz_1 zxx;SA=zyt7t%PDl8#V>3j~=~B@}3UtjLb0(6_TcGdJeI28ZlS`kp?Ol*aDRXa_ojG zm4-U(M#hy!*6hYkmByazCIOWu;q0bym8L0<#zK{5V(jKcmF89K7Ws}?@Bxc4c1x8= zEHzB}Tt}SUO6zk+>niqV_v|)!PS4)3+jdmiQdOCsvs);#+jZ zoZPcz+;^PWa|%FnIEU|B_*6QlI62%$$M#OR=~cMB;c)M$a_{5t7_0J_;ef{t;UJ^s zuUVg;bG%?-vo9R>xEPkc=J1wtkcq6&l`)qY$CnqW_LbxGQ#tUx$ClTt_Os>;aH#TDC9=@YX$hR^;OeL-P7$wz42^@dF=sy&*8p?wKm*sz{pxHxZh3|ye{+XyMQ5(@ z;p~)}T&HRd7pz>TL$66}Hef(F=pZA+H8tTNN32@nacy3Ti|_fNI}KMZM{P{UQPzE} z#c4V0kc-%mQ{Dw3?}n);a!^JWL$#_(Xjl!KQ}`gk<9{E`5fde$hN#v#sJa@e4yof% z7<%yd!?c|J7ckf=j$tlC@@;k1WJmQmbufkD3OAn0@H)8R0Z|NA-GZBcQBAdR9qeN0 z)TPefxUO8TnkupuHjbS+z|*F3Qaw3LWXSoXVy;cGI>hrhDa1{}1ySXOsNir17aqvV zpbM%P-79Az8#U^y;}k(Im~|S*W#%;!G0_qjFs@KeHa3hWHiyzN1M?V%uu$I4I0ew^ zVV|N>Io^q}43`PO)e-mbhLd*wLwO`-=9B`cO`+#XiO*@o_a}(B7aO|*z?K`Qkc}J;Q)C?lAX&dJn`2#tyEM5U3(OJ@}`0h7sHPa z%z3i0YHq6LPTdqQ6y2SWUya*5P8J68`*=k#5HxIWYTlfW%SCPdY&cLH`tm8^>=9x zg?hR-6*B`^x_nz2{KPb#Ya!Za+YKwXZq+jw^rt8C6j=4vJPV$YRJ~}W!((3gn1MUS zm@t{>SGVrXGZACFG89#4Q-elb;~#;qI%im|-qmFupbI5Jis#fT*6V+~t~FeK zoI4ZObE!+6{$SBn|LJyl;gy9|=T1}uTRkR%kNqNZ!CLV;-oYQM+p#!wxr8^#oSsrg zypcfi)-Y-(r+lx}X?%5C2lLaapXBk6i=w#Yxjw&S{C0k-5JkgvRu+&X*y?_`pg^jm z^!rLt_}6Jelmpr3)yEdhs+`Mq>$m(7C(>T$)9b1rB!Xhfh3gjGLapo7%b0xFaWJmq z0WI-3)BgUr=R(?&2e=lXh&cChYTmwz2DxL26294(X`)K=*ti(Rv%!#`a@ktGxIKSN zyzB8{^#c)`z>-{>B08EevyDTyu|lks&K*NMykx!Y^4?u9(B=TaQefd8P*~w;#XLaY{ zo`fC>y8)N;DKDC54o!5=BtO^9ck@*zT=dD^>>8ZO$DGW&)k*k$$MZNp3_m^!(f(8> za;(v4JL|V5cIMHq^g-|JCbwZx=Lw)N^mLYA_t$m5IhP*(;msAl;z7emfEJ_3PCxWh2MIgLuW1%}eyiKUYKjA2L^0Y4g0|uz)Z%|HN!Qaw zLwp9Zz6i@{5eEsQCz8LtLl%|ZQ{VRRMLkFvd~i7QTINu5HO#|E*|XT&<8MQ|TPI;% z{7~cjb)oQh(#{~>&ZI=q_}eGTGWl6?-wNO&1YTuAY-g_Qy`Rb2kLOy-h9VXg8}rWi z2;hj&M-lwY!lv{)uOpRN3iu7QhpyAy_D?v#L)%Mbg(dO)`o%sm&f5|H#A>wbN_HFT zjJBhqwi|HWjl1>rMDIxIpb%}*7mX^(1!7%XQt$QdMGro1n7!Q?CiK+d+tUo8r%zQ< zCPlmcdABjEw71u_`PNyqr(o$-g*BrhnaZ@~qMrMzzS!8V2vhBZ3a49=q^I;mU)Fck z^>jZ~?Ri1h6RfA&-J=>l7-jYUYat$)$@9N!5^Xi(1^+3)860jtk5ddGH|3f!z{>3ft`L3C^(@^>yh+C6^24-B{>M_3P(+gl=uyi+X z$v}`ybt|9?pWbt+R&h^W72y8vZCtf>U%k9IJ2~84nSAw% zNF<>UUXA~8dYFx+;;MH^Ap1X}FDGV_EbnVFBuE3i)^MLtGv<=_^4!b;LFkqa~qi`n{de$EamFr zH4}@Ed`9QCi=bwZ0dMhg8IXP}7xs5GM6Xv<9Dmx@k82DzH2Ie#%2ZugnL??%liP@| zjf&J=*0~)>^bkU|HvV(H-{dD_u7dM9z$NEk1ZNT`S!e2~_=}Lop&c zm^^6Ql|G(KnUdzsz}2i-sq#wO4+^%muCRJTzeE1bbRIVN@R;UL!w)9tdq*>x>){WaL- zexpQRokC~f?+nadQcUxiE70V@Lkt(0Ue~vWBu5k8lCG^Qe7+`NGCwUTnIx~B13cr^ zi^wMOzAa`U6`b?K=i>nxYfzo&t|{)8MRYPNx6yJ@x| zay-})%H{q%b4`jsza&7+4bb0)Fb3-LM6l-?>e$vbPRXybUHPgz{4Y%f#%@&Bm^l%3 zmO>laUp_3Se7;V7tVIByIh4_Ogy@_fh)t=;3#J2nhca!7s3Bb6J~>cCYqdC3cH z?V-N~rzqDIyksB)hJ-y(uA8pxo*@k4itvZ|3OQ%{<;_^DMh+Gj{0AOYAcY(#pf2Zw@BQ%Eq5X zWT`SgS1S0J^*W~-#OKp%`#^e(KOEe;qKWp#|D~(Wq~h5^?Gy|o?yY9GG+~q{n6sNZ z-ysFmDkNZS{c*OuK~!DCf5a|ebEB{%YJ0G5y8jVAPB9RNpLyhgYpJp16mp|k$J55LnA$eBu+MWy{Pn313?Fks-4uaP^WK5kr5EtiG zji+ry=P|Zd_{2k^lUEurqKo8n7tJGNv_8jykM!-z|wdNc_ zn3Q)O`Bwd@o>i357?WoS_1Z7(uTqqWUKPmJ3tY4qTN+dI@C#%`al}XV2adw9{0A|q z5Y`!;lS(wpjUq~w-h9b@L;fDH_n>BI6ySWZ(I#w;Ga!fGNWoMFGV@DCIt03$mH!dB zS>u!-aA1<)-}aIP#Bztx;%0(BOFz2;m9P3bbd`z!5qzyGy}&Q0S0X%E03>aJx7)zl z4hX!nY(otX;E#E{g@`Q~H}CtJ>9YpcUwar}T%Ear<1Zw3STGrUs6CKOlKX>XicRJ7 ze7mWUDEPiU=QoOeYc=7=2~whls@DShBt`B4&!gk^YM#osef-t}JN!DWL*(gDozljR=NGm=9;pg9tEJhwy-!3hBcbWKd&G7!Dnr3C`_kqqcUBIdimxplfv@7^-k zTF@vRe0g7ne-lzcsUE9dQS+gCL;|JqMsjdBhl=5Azs=YmYIPV&%p=T5|IL*}BC|QF z&s+>^15f;?lkIP@jDU3LIHvzeEAQnsl0VigYao=~;}7OarWU|%9KUq1SQY;@nXxwG zmvQoV?+fB8k-B~_xkZIX`mMQQ16ST_x=-n`#DAJ3+~J8#i3g~NGxJ`#cRIuk!)+1+ zN&Y_%FjK)Z-xx7pd%g(0cb4W#{QZ`OS(D+5=H{xxOY{H@@6SA%%?=*aF;40sXN_2G zSBuri5RY33w)!Q{=;%$;P#%WmmuJA4AAnK?M;h}O$mLYWMiOW`}vpY z_Y3$SiS#iJFbRX16~qa+QULA{TT4171rvb)xdd!91&?D01M)taO%}t(91bhSM{P() zGw##KqZDmswa;Z@XiCHzxG{ z_5Hv)U{C(~9?|o@N;T|kGfSw#`0X?1WvN_b0D(oso9{4!uL@5ykW06JgXiiKrQ!i# zo~TU-)3+1db;%7f_bNGozA}3t&y!5visLnpokC^UePTqmC%H+}@tne(Kf#wUC~k9Q z&VfANt^&wfE|@3ZG=P410T@}u-T5#sz?GFdKsdzP?Dt6_?-1~t`Jn?T+=8r-5{BlxYGTM1@bb7_d9amc0ef&Bg}Ll4 z@1psgBBK9;yapJZqKt)stQ9uD^9=wAxBSAFWs1$8GB4^sg()cmg9bpX2)y78P_Rm^ zMr2{y%!3s$GgRksPlT2760qdb5ARz7t#4euSP~$F$l*@ZQ8>_#$%0IKeX0eF8wzAA z(tbQ-ob+bQRis-!g}qV+rp(}el;I1le#qxCnLSpXo;xtvEV+*ep;XOeiPfBd7ZTR2qzxpT^1~ z4>6!{m{#>5zsMF;^%0_pNaTE&up%2{>|$}6C@><|NU>H34roLSNExRCWdEQvH#ok7 z*bUuE$peIz(lsg8?i0-fTdOm{sAe##@_uB-n3d#^J?xUy@36C2n+?r zsEff>qhJra>ou?y6az9h*;C?2GwKejK^W#W(cKg$5q0(upva-11Lk?}Vil0~IGg7JClVt!^EVvuQDK?Q=Jyxnyn+@YG0>YPy*VYbfQdH;nInwu|gg zW#%{R9m;7m`36|{0$q<;#H*gj^Yo2B=KgBfDMB>wEL1HVxw_@w;Xjd8*7`ul8^A!D zpZs&*;@X{``!ueDJz#Ua6ER?zrT6he_)YnzG!>8(kypu;iPq9h!^K`79e^`-L|!9+ zob83JH92|qlLR&x?DwZz>HS`PMLXS36Y!D}8y-ChxXcn72Krb^SlAi}?%3{e(M~pO zzo_c~Q^lZZ#mj4%aKr?BC$bN*-!C830p*dF>@@@V$NE3!R z2=O6~z;H`8QhFTO_LekkRF8*t=b!!H>iFMJ$o9`LM*;Un@dr=Z{MZ~L5a#WqU=Nq? zU3!QoESV$S>>Y~@z}ilM>knXiuZrxz@kuXdNl^<*tt8L;Elum#Usw8mM_|mD+VL3v z*KzWKP)fJ2WDDs%H)hT|c#Gx{uJ&(YTZ8(f0cx336>BatC0>%}Vx()6IMf?P*J;)O zVU9)kzW)?Q4EHU2+HBdTDx#Xm18SH&->~GBDxG$gY(I850|qK(>_O6cd~7yLli^PX zD*ipE$KprIXH`vLx-<;il#EJmQlZy)B-pZRMRVYZwpUcOgL4C-_68-z*y4@D>W`bI?ka9SjgF|^hHD7DGf0D zhR!u-`wej8or;Yg!X~1{#%jJR;7zCO9*FqM*{3xz4VK{X|O8G3Z zV(&Lue&i#6W|U$Gj{*ABMLcI_!LV2KpmKNYT!+hNj%%}n_>tfE1@~!cQQ6T(b>`3z z-FM%hudcy^PJQKxHONnc2WQa8Ues^j1h8t%%Z~Oq6PQzC zF=g0H+t;4wrK`psY(@Xs1nu>uTGbK^3^v!dD4DVNm z{a7ht%h!2b54skpQOnY;U;eB?jY{AH?TsuYky0Afj02whPvBBMuC56)h;B;`jgR|# z8~i0Er*j)?*PLj$5U6H=RBs*qW%I|wGS|Y*>&+|$oD6PeTShPFVH#VGmrx5erV9M@ z%}azuxu}H`_h0p|RG=-NFJJF|xqbWcYoNw9J3*KoO*e0{9r<$muj_jB<+kKB{W0B+ zq^pJ)eYP;M48U2+-vnefa~7{qdstY9R96Dp=*C25d0(=ji26vgxFSFHEUNzy}x0 zT3G~heSyRbY^7z3=s$V%9taElO*hc+haR@IM^{h=96J5JDx?3qU(GWhMJu~U_Ueiq z2GZ7No(weL`1cRr|3*yPX6fdV4KV$6%Vmh$BbDCgK>cnL+~;cDCqo^4XxyO)*ptfM zVpvtrIqCi9-to9HH*r&(ZmvkS32Mz>LztO})@_{{;0j4JvOgx%To>wQ5 zK=;4_Dg|XxR~jC%m3`gGeW%GIUC9H!l|4wd{cC|gZ<~P&jXl-L0~hBbXGyrhQ+S^F zF06H{Spqm5{0hM;#b(0n z=qVd0ru6*;6qNb8=KFna*fz~S00!+dgx36qMVaoja3j)W&d9JQt#M~;s57D}(2;&d zVgB`{CJgN_PA%QG;eOWt`)f(|Q`y$@DCIVHGY_t5loc=$$X@1+O zE8R4O4*%6c{J*;C>(#dZ(M_|=U+mi8Df_VhWUhM%05h2XTQ?2Y!KB%>%)g=odxIN3 z{YN*gIZo%nfLhhVrUB`+|5G>p@<{Q2=%$$*al!x9P3tYQc>OcZX~ylMp#+}=rTD3@9VO-=U(ZieV^^?aqy_|z3yFD-PcDZ zA_6hIG?i}U2kBOUZoRgerPmBvoB;ppZ(mLYTUi)w{ie3G^rW@6c2Li>zTr+zYhwp31*GkLKjt+% zh8-V2af)NKdE&wj4_VNo`LS!8CP+x7y~V>z`blm+Q`kQDC2*YK%^j#vdAH%}sIXwY zkm@s`knXCLR-^l(B4k8a7Sx1o9% z7oVQ<*R#D6PbSx}aD`OoxW1UsReNbB%tiv!9~MUfO#+JtvAI{wGY7IB?wLpun)+1| z<$3CuZ+r`~nCAaQ`CabevdvChOF7lI3bEja&6Q6%Q@;^ws+dy0*Y?eRS}n^C#e6Go zzy9$%F4_sQlilua<(JeEo8gDMbs6~$G=HmDsxzx}QQ+A?U(fqq)|?)mmf6cFi^7_h zY+_ANXPJOhirZJ->` z?FC)`>dUt^^nO!*kBN33XC6D+o8F#w{8IXRA;wZ2)_Z%e0!}Pn-pT&y{cIsS$mBQnkUdLZ_9 zLi!mcrTO|GL-Qu*qJb;L4HjjFQ7JT>#)xhn_iDuZI_@24)#}$U!2Ks9UWe8k_BscB zEFzuy+}$npejy+%(VCw8wh}DAgJ8L9u6_fJVYUv`kpA~3Q^anSVs?Q?hRY-CQ)E@e z*Hi$`n;8(IHq8mm(bov|3U}MDLXn*2Nl~cGct{Akju?h%Bim}Y(s_)QN!BM<5yh| z<(KELX(znrRO>(b-_W%72|CMN;1=pg$bcoyBW`ayullOwG<6JsVh9PV~B;2`5i=4 zsn!Id1rWK&8Nc_a(n^X#r8N1&#a9h^=4TrRUyG>WDEL{&TpHBDm_Mwah{L$lSu0( zx6uZ>EuR~G|EybA5lt4_f>*=3o=W;BP5^9onL^p7vuvj+Gh)}~s|sFyIYh)VpvGxZ z=Kb2U=R)44nX0??_+=z{qkKg+dX9~Yc%3c@hVz-c6*+B-9joJsjY+pCUjLLAuh3lh zEmfq!{C%IsX3I5iOKqy2oVm7d?2k(^enRe_bA!>(1QxG(rX)BF3!=G8Lf$Awf|e#< zl6T$vG^?4+-!c!ygC`eCqvGlS72l1$ZpFNL|+Dlhfgh*33q!o6YJWY&Yy z&G?{A@%m+blYg4n3QH*?4IaKxVHP@YHsf+sgg8Bn_TtkJceK*!FBt7_sg5AjLU3{O1Wo{O2jJ8 z4$pWp#|t0Z*Yb?#uDsx?PAy1;{e4U6Y3!VA#PjJ_K-I;slU%!-Z_x|bU zMqKd}zDXKT=6;4JhawWOfROx8&G> zzUmy}Y2HtX>)qhtju=7RJ;*US-xM|NdhKvMFr~+FQ~c5C=$+W065?m>!&H6c9aIu2 zRW_IEWapUX-Tk7Wr5&T}(^m!8539!2z8h|j(_*!QYag9|Q{L_#xqk6?B=0Z@%*%W8QM8?!EK!uwfr+Statn7@2Kslm5a-;eoCjkghywq%TD1#LS?@^ zoP8{u0qBUn)4_xJGcBc6hPSt!4g;MHV2Z?uDV)<$l~Bw#6U~$6+>N8hloy(6;UROc zHGW$WVt(F*cWFWbNfW>|#A}QwjY$ z+6iN*clN#9(MiOERm4BO9<#!Dv(7##Uv=y%Xq1K=p#_R7r$DqM24eczlGLZGaLig* zGpe>Y7L|hsV0h;cQ#c49Yf0JbZPO9tEu@5awNdR*FdtIZi{dyzS3V|+G9*~7cTk%p zmGe_FUtzqHtuE3F3l12tqD|H>FXa42?);s+h9rU6R-Abl#C(n$`-gKNNr3E7w68+y z8&jB8v2i4_H`mj&ToU=EDdPaeF)=~2rKdh8lnQ&49N_~It7%m6jauPk&IbbKN;M&+yx@~M{-?FX5i;hdDfT*73>Q6Qug&dXSfmkcaZJr+lmtn)0d80WN?i{gNI2B;!hXprS8PI$fhN(r)B2FFHZaeD}bc(Mro z+Au_Fu~K5-0vRvKSX_C+T`F=LB-jUO;9QwtMwNVXA}s_t5rWqf*-6m{$VdHT+}y}* z7IeRflJTZeaw(DWy69oGus4-RMTOt^7gN&u4^)&JaA}QLE|FnKz`P_0{w1TtI3Q7f z09x&Z4J^dwEQ~&?eq-W79@mn{r-copC5ucQb66c>s!tK_k-2F<;@?Bgl}gF$g*8-8 z=sc%X6`pt`m*L=ry^7FEIlOle#xZGOeSqYNbA#Wx3EEm%z6J82)k*C_Ed*vXE*x?H z=ncgH$lPp#$!stV`R)--vbCH5!d7?oobt;i2q}!?1IXcHKN+Ag(8_oVR_q-*rKE7hcn~{gK*?Xr zS`P7mCpzI1PM0KAwLqfr0^UC?EZb-_mXcV@q2>$ZM!I_R$2b!_xZ4l(dlTCk-AUSK z9=G>y)I-KJ0>vv#S)(N=ig{1zLEc@RhUQ5yNwq*OP??v5i&n8_JMXGINPYGMOd({_ z8Fkjp-1CsC*$ygxSGP#DYKN}8jp$Da4oD!__+S3_lBT^1F9tE z^0eY><8dzJWf!=sju{h1FRkX2QfVQnr*)au0(KRf`ixW+c+u>kcDg_wS4hIE1&Uml z3O|`*@@n%qGBogeP1-jTfwAKP&ueRfy`0#~e+)=*f)+Q*ZQ@bn=^Ci>3 zjd!ATE2D%QOq*(CSu|K6pUMO@T zZ9w|~p#|NRsCLvt9w&^$^^NflkMF7{1TG|V(%g8a)1z;u?h~KXSWe;Pf;tN6Ijrfy z$gb!kduXfRK84QG(avL0lo-5oTNOn>IozvoD6l-oY)osk%0PNG_i5ii7#Y~4RP|V8 zHL!3HJf}mu`8K2*6UXu;kcxb)O8B^#@}*SG!WLzlnDc1H%{USVOe)T74|aZt(`We- zwnvG0>B>g&**~086h`^|v8$4mdO-h5TZY{C3!H!dN??2n|9ykBK8?RYnwT98HXC(p zXL8WF;V$P&VRTB|)EdsnHSOA4Q#r05TiY+Q8n7qa=mD$O`SigMP?{>N1>PD9zUN9vXRZl0XXYm z57Ul$y~`f6FRH_&1t@^rrR z+}yw^r$Aip_c}`4^0)9IEc*H`yjw_dWR#gmZmoRX1~kq}A5Nl2(j;=!r^A6*Yv zTc8rbbtIKV)@Ny~wd!>?QYW3m;D1qDtZmHCQ@1ticj{aXG!ndh9(AN&Psp$tR?~{k~JT2Ho1;2#S~7J^ki*zISbhBBOxc zp`>*?NFW_QP(>7Kj0e|{L0GgLeaqv3vk?ZnWVh=)4A@9jF= zo?`u%alNnmcz2=QcjbLw&)?sxLm5PF)0e%chdZ;6ov)~^sL{*yD{3q5-`Rhtt$R-& z6EBI|X>N;=eJ*na+ROY4S!VOJqxz;$x6Rj@3>sdpsFmoUse~7vV-;G|v7K|AM0|J- zJGs2H8H||gI;!IdSdqcSsgshj*mb=C0BmkPt9^SX)lJ{6W!fA|`U&KsJ>(y@@BoL+ zO~1B2;_j)o#dDC2B=5rjT;a5*lN_WGB2x;~4Wt$Vw9hNw34c?Pr#7{fcxaI;Fi=@n z7TR3Bt{L}T?rnLHij}bTM=LowNu(9a1)aUcF+LBz~i5pU>u^ zT?=PrVjQJsrYbue&vvxB*s67#S5%I~is(71yE5^&Rh1Rsb}O1Of=43KQ1+s7qc7H&$Y>MT1E>k&ZB(1ai=+(^8IvN@#``E| zx}zpp=a0*Cs+gz5k$^j)CFaF%S$Jry2FYA`fpId%p%$$jV~!jNE^>C*FiYvs3$0=z zX_!-JFXE?KOhH*b$|p^?+u*BGwTK9d$QS$%VmGm3*35PQ$) zh*oX`aX|pWTkXKt`bq1pHU9NAbP`djLJPm8^#GHAycLAuy0ws;P>8Vu%w3%pZx3+& z8uo##F$2V#py33BIe+yIqsaS^;Y@@$PbzXvv(_Acth^al@EOyq%`1y#`E5+W>O!5o z-)VWem-(mh5ykAtXq=Zn@^s_PFDc&IEdB%$t4c?d(-;8#o{W3ZfMgrlNdMPm&hHbP z%5BtE-^}B|9?({)FZBYj@~Q^>;HjK4T|n*|ZDtx?N@bTez%kxmGM=NluS^#)$T*y5 zBFC$zRG;HlI7lEOU5OOheU_q0MxN{^~n%3fAH?KdJ@l`YT8U1)(kR0I6sq=Ol??rG&-C)Edp7SvcK$0Fi#X!Z@z&3*mw1vceHx3$Y z!Ma%Q8@#Nyely8j!$w>2rH)`+7>pLP7M>~GlS>^khRMr1!-7I);GYN# zKYGbQMa{UroE_f6oa--8_BDSI>)*yByep!&Xp}24b<6(U*wfg@kIP2DUW8XtV;qz- z_H#wUIS0x210geZmntXxHoi^T)R}0)1mga~Pv~>9HrFKNn@qQgLCwIkRXBT6Dtal+ zUlsl(n@ox)U`qu3%O39EOg8NA-I6v-I&kQp)&rB~&>l^O#DG1o%P|>b$gcPL`q#57 zeQC{w$kpy@fBtZ$IfNwnhNWRGIjH5tEckw6H;}Gcl2op(#bg`fL>Im zn5*Cu}*LF&Q zC|{3Ws&8`oqY(g33~lh}&e(JEgCAHaGoFw3W99TRzKO*g!rDZ%JW7ya=}Z~D!YUnv z3M>VTdrx?_l2b=$ALn?d>IevA*IhfO^Ck|~q#9k~1XwE5?Ll^Y2+gsScNajR7}`?V z6oXq6$j>P|-$gb&*Qqptf9E7)znmB^GzbBr&Z~I;)wgL+t@Y_Z(XU-5qcFplrNy|- z8y*U2OFTK{Ww2^g!oFW3#nZo|ib=m&-^iJIaS_yu(M!~@03E4EsWK;^!@Z7uJ$o1Y z6V=NjdTg%&|L@$o$JNZ7l90bFynYs&Uzt0Zm7UEe&pz972>{NR61G7~%_O$_wSO^^ zPD)WJUg>I_jT<0}G&DWM5tcQTs|pd$3)zCF zGvo=C7IG+>tc(gvCYe{!^0RX~*u6^b67w}ERl-NQB zJ4Ha|MKWnXG8pDE!U!WwiN*Niwupx`-kkts%l`NVkjc!j%MU!IK#<-5W{z+}0ruOd z2s%_cYlXJW3m_wyVzon?r4<>hsI)vu6_5yaK;!78j zNI@Dbn5&B%hj?g6nJrRpX3u_`Y&{=9!N@sn{L8TERx^Q z4rwIe{H}M^nDH$$xb6@FApKtQCVNV(17-)^7l3bYbPEjM_Ay;~}%v?NIH2 zJl57?wTieGBFU;J&_3Q0fr0p|o_&NA&{i(UJ!sJLpcn-yBnR1+wWn$GxDDHsB=MvV z5eIVkU=N9_{z`9PY|k~J1eKf?9Ma9$K;|kRb7KKgb`l{5nk!-_1XX)MVhmK`pV4gE z0o!KzbOVfZ6*SC*Y)T$#l2qWqCswDlM>Uq^L_n+h6GJlqsW$+=ogzpRa#5g1Orpsk zk5cUlk)0cW+9yENr)&iRtDI5^DTGxIlnQkhfd0_1FEYLL23G5DQ=>8ftc*fK01?pa zo2oYHj;lmclh;%^e;rgwRk3i}@Xz+FW>pdd;d#26np> zz7!}nc0hAe1tDwLnB7sUWL_Z@Qbi%{#3u~APyoOdfYB$wBvssa=kaMkLt$eh%=L-! z8g<48%4_K`ST|5B3WT4k(MlK3q;uJclx4bVXDwDO_~40JWkGT-0Y$JFZ-8nM_^4HL zkO=#y1SBO$kfNS!FZy|Rdz{+Cza_%I--bh!;!f&e)=aj7_AS3`X>~*a8r2HwfmW_o z;*Pygs)WWI&sQ^U7w;E`rpS5k(_2twTW12cpAVc6MRAO&)R3A0s46WzT}E_ zDy&SM13*h&O1wfYP;`3^-QSEj!_yg_vcrG-yfppHQ0fbZ^p@vV^+I@RsZkB{Agjq| zv^!$JoEN+MI6PKAQgp3n>Tzq)zsA({jvDVk`X8^fv0&jVbC1{E3svB`7(n@>C=EX3 z{ucK26D-`n$+mv*^dUU&3>F>K$8GKeudbvHaHYal7(M`4X@>=vT$CoThD(g^sIJF0 zV(=<{&wbz@ghry2>3Eh9`zt|8u`+ShDd9m&tUJQWWZN1L@^w<>x+OJww*_;xpdOQ8Ee!rw;(Yjs`+~rC4@m? z*htnAXQTm3_7W^*%xh-cYvo11#771$6`*-FD@CgXJPqL`bXT2o%06b+=r;fQ7}g^? zlwb_^3Y2JJ;F}BX@?eF(@;6+--|V5~>T7~0s&=yPH_t_6dwphr6u&0L()FxL#^1WP zKigEJ2UI7H&t}T)_V=0wyycvJN4EbO-Uyo*(rI3Tc}Duvw+{UD6KXgZQ4Dz3nEpNA>XIzC)!Uu_*7r&`vw^fDD_Oz!ki6M;6Em2K1|a!ZO)pQPY9LVV84Kt z9zN@t)v!IFzkLp1mVtROdU@kK=m{_j%+O)gp++C}`Ds~AfTO0TWS}|lf(l1pi{DQG zWIV%J3KT%#mxB*Eq(6Ajagt=Q{PC-W!t8(d>#)C`=D>>IcmjW-B@B8T923JOLB~8W z0S7n2tR3ME=obzgpJFWKYBE`FIF7!;Ysg)z`zocM8j~t}4tsC`Bm4R31lH`^S}X3I z7`EJ6p8O&r14#Y2$T#3Mu>sY1AgppnIH4va`Cy^#j=$lZ*L{8Yv>;6H&kx4tGq8ZA zn5}wp*XDP`pVsdk)YhgLR3} zE0*{rOV4vlGdzn~shhucO4kM6Uout(9&#c;y)+UgY#*2CR*k=q(IeT5YT5EsCx5_b z`?Qrf>SuwjG4Qm?^r~|q;Bcfn=)cPROXu;~QmywaDrH>@!S0%037=FyZvL27VTt~= z8+Zc!DYcr2N@n76Y5vSu`I2F5{o9*^r@7)lqXg5p(H|3Qy;Ht(Bp;L(mcA|#s+PI* zgkev5@Dd<}3DKr;Vb6|}_Z+tCtwUcBrF1PB*yVK%j+47dgMM zk9qTQuZ?rxw_?rmXiWe#D=aWzJODihl7DK&Lb3q?XHH|*{G1O3&; z{vBG|=a?UhB>l+=`9j-nc(kGOl({xR?j8||B+%}~B8|WAC z)aDdfaazp%h!TWq`XH_{d9unU=M4JyrQ#IzmoeulETWx7<$H+lJpd*E*Lnqq@Zt)( zkv&AZo<|IIQ1}QD;68wxQt*B^{M)D5LR#^ce_L5J;M``K?tO07>$ra_L=x19OlH8uL7|Dm?d|2|_9Wcg<{znllNnOJ>tF@crZ4;ZbRJy;3V29cx}*3lni+$4+1 z7`B=)cPiS=)Ogl2x3Au&Dh%=@Jgeol1|1mGMVHZd#_>|pVu`KAkGroz0bhC##<|+p zg+3wzn!`I-uZ#0Sdx|4>`UzqUT#aJl&kOa5PK>un>BQS#Q(Lcn#=?Eg?(5BC(a zE^pcYAJkSi51~Y|Sy0_=@p!i{h^GxkRF(q#mb!kY)V#23C{1?b1!tcq$e@v=IxQZ) zxdX4}x@$Dc2+wXD#7&YP0Fg(J5ZHPM1*cNTzliyJ%YPa}+eK_@qlAk4>ta5!K2 z_DbB-6DB0}lqMKeJjs*wW!I=LE#H@l9ILQu&=c3lFowd4i~H+5U01$e{(WxErya@; zo~+g4-}E1uLZ8=Z;G%cGC&x*-U=Y|b2LpxXP;U&Hjc7-&$CTmMP@j_E@vbNBeZPMN zTxezrBT6&-zV~XV*J3Eqb97)NHG~KQh{ZdXl=epYA zhal7cO>IpzxA7mD5z!3R!RC7GAxGvIzPw-yL$T*a7RIt4gDtPC9v@kn=`e;|QCsrI zR#ukQA0_*3LXJOT9Fjw9?0ugf+c*Y&47uSXlJoqAOCn>aty_ltA6t*pGkLpP#dLS< zZdc`nE;_uc{A2G&XC&@$x99kegTK*+v}547{9ni5pKS^^LqF5Kxf%X0MA|8G_xWF^ z=);d;&ar35f1Tq=nZjKXXcSIdk{E2lT~pXYPh3;^^26QI#X3&hGG*tK=IazF=%jen znUqcc>M2B+dYRfNzgN7WVWpR78QNuP=UH}oOZuL_l4uE~Z-k0aBvW@ygU#obM->lJ zyd0N(c*btkROLtd5F7jQ68ak3|0os(Rm|DfJsp}e(On$=WejN-N#?)P@$O6Ioz9K? zsJq?DNnLk)59iLt@BjVd(DI1L#PPJBQt{k>xM5Q{V6=yKaB7rq+d%1!*gX-CaoPFk zp!ceO&x5AMImCizj1(_|KUm&~37K;Uy9iluFW{UBWO{TFx)e~R7}m$Sc@egn$Q&EK zo}qXdzWLxrY{b{%u*-;@s)E?a?~h+xM*e7@kB$1(^Y=1p5BgFy`d~cF3w(G(V~<;4 zHjEf^vQcNNf4ci3ZdLN~G$Hd$1sy&KAETS1>nXkY!+PIM?<&!5 z)8sfN%S_BM_Wt!&{~Cn+qW898yq#?E2LEkkOLF6srJ0iM!9~rfH-#5XhvtWPp$_!X z`w^}BGMt5n1$CF{ZC!?PQUNd2|3%e#IK$O|Z#!Yv7K=lO8dk3ny+vY|)l2l~EqV|= zh`d<4tkqWU(M69Qr0Jb#(SneWAS6U0qU~pX-^^G3gXhedGjry-?&rE`!VGZ&rp44Q z?rJwq3<(;hCD+QgK7n#|J)5?*UlhC1nEj@EdW6r+q<BKwp#+)5Wh!hOzGD{WaG+`(}Q&mXaCFVyut~y1E!f=Z8;gObrd^k&${$*;5 zD8N)xGhIC?1%KlovXONe#ZVfxnk!2P;&yZqwH}@|Zy#WawKMKg`K+!Ni&?)Pm`5|bF#l`MkV|Z|9CR!ePen| zyBJkXDg4ogi-GT`_6vB|uRfslaZI&g7QA)==f|(Ql407KdU*9m*vQ99QnltAph{!` z^x1a5-|hAxEI*vpe>KKt6FIs9RSR+W6tUrk)IB2xv6>K~w2EsGtkjW~JS#EB&UZ6x zpnmMeX;p^V=08#9x00+JFLZ|9UgsRL&^lv+6n1xo9&D>|yk-VPgh&~0UKI_Q%-5@S zvks6o^SN&vbw!Wrt!K%ApTTVumHbV`?y|DnVPQF%SNq_wR#|;%3pmeE1 zCe=2>|Ht;wTrvK?xncA3_l5u0_K+rGd&vziZ4ae7R`9`xs~;Zz{nYyIzn>SS1DO)bm$nDdxowxvFC(UT zbTeZ};(e}}5UZq@?T7k4&(tVC2)5>{O(XuS{gDGWm7~+?q~h-w=E^UPS*Xn^Ps-F- zgI+Q1wm!U%Hm7`au5s~b#&3->hxaGbIr1>N;;}Fp^0a7wV^A%QysEub#F3abTf+It z1m8_7$6x83nBedU=e=|OfXaZZLjHSW7UB8MOrGQycNPFbJ7s@eQ5nEv(ddEmULE-! zqr)4tlsDUp0$5g6!9i37jT6zy00#G%uc?O^vb$ckgo?j(QlXylnLY>uZ4P}&RKDo_ z!iSytzKkqJad;HzsPO_pJuoP%b#<1mh zL^;bB9sl!dnyPNkJV=7iK*D8}@M5BoL^lF6iu&G7{(O%eUKKF&F!1hgXIq_%Gy(M! zXJbPVGE^71YzoN*VE3!j!Du}#b#^rR>1+~BJcCY@N-C2W0!`GkTZp5kBBje$CNE_1l6k$ zxQA{r7<0imaXVT`EACcXnmS2*(tE0-}+(4 zc2bgD>(@9y`6kZ)Gua_&QkMH%c~TPl;A-7477|T?33LSJ$@*6`3dtU`QH!t6q=C6d-6xl1IaT1vyJyZ|xL0~r$W$sZF zq~XA{|G1rrV584Iv`z9@T=#V**bFKLMK61|UwoCot5NL^DDM1FpjXy{(c=MzplICd znl6QgFjItI zNHj)&M=OV9oMg{x z7o*5ay~-TR@GCa~TuzedFrz-6fyGr?qa%>8h5D?M5~#y-`@5FXyWxr8&Y2VqwYa+@ z|0cqg4xdTF)7a^n$oH^Yhg@WY5DFqj_}HMZqsGJL%`2I}^1a z^SlXKZRoOYl7$>(FTq=wq-B?gvmRz*LMg4K?Rw3fX(H@;k9AbG6d=kwEm9cV1BFUP^Z z0?x3dAj=))YpB-gr{rmI)ReVH(64ANp&qDkM<&ve zL7T<(qofr%^neS~m+Vc`Gy9=!m#5K;;LiQ)#!XsW6?hS&*vUpegOyWAzfq6AOG0O{ zIk)5XDE!|Z+H8f%+CqwJUHL}=wPkK@J<&cDz7*hFr9687Tr)f;m~<@1hxTF7x`x2w zqBdS4tqg}EU_DfP+3Q?h4W{%LS7G0QOl149CimIzWT~ycT&Mg)tVzB&<>4&jaH~Dm zV;}}o`Lc)7vH^{`s*Kgb(uFHT7dkILkH~+?08)H`r&cv@_xapMTYM`-+9HWZ9>=yB zva71BOA48cM#mLV_$wT4MD%?bv3M(GbtXy2xA=L~LF0>>F}gM)JV&sj0D6X?pgyi! zBy&4zK<|9j`=&G#iZr{>?0PP7CT0u!wlShR8p9+2G|C1_kpbxHCl8~2mw z{2`y17zTrZCQk^K28+nPcbyY&f8a#|{VC~3M2VusX<(`bK^49dH0YP3q&b=$& zQNLYC!7aVKmzgx>K*#tyYGn!JNO|kFe>I%vT^G8YeeXT7WP7 zA33#l5O)9xaYa6lD$F2@6x{g9(o81ukBZD)67k{k%#C*nLyFjkSl=a@Sn_c!EA12^ z0{Q?sBSc{RDnXK*UH(wl)*%dc0$IFA12Aq`($o}DriPNa*6?R2joQ!)%BUzCkuBj99Sd24%@>P`piv{!S}h zG>;Fm{gn}N7qmxzb$dYYKhk*)2RFY8^ttvlap_tgLo<1hKk_2E;e9kRBw3Ovx2lgdN2ZD`)EN1Cs3bAm2DNtZ_&3bEfA+|zHa^ck{$cFfEQG>b z!^*Rx?(Yu-hj@L^G#daF`@;J_^)O?v?JJxj)qfeDX-XcpAz((5yq&!h@S_8z<+zKPT(kwp(Z=Z zsHY$H={_JinzI}s^x>nHn>F`$A)DBqYjY=ZNM0S=s-qMN`_vhJ)>$sWFmO-l%UJt@B4H@>dR50dg9 z$noJ8iS}leKlQq&ax8$+0?PL3{CM?&z2vGM`LdOFq{^Q2a}#lVnY8 zfZQz>dtlh6MZq@NQQ3 zaapQZN2=NYW1yy;@Oqe}0`S&1?Jb!EG(V1~?@nXC4;*L$hx<=n?NbkE0hU5fzgoa4 z*TX4`;dioun}6x<3Wb|XWOP0T%3^42{)K`4go3XGKK1o*S>sUEa2$`csVS%4{iB%| zNn8J$Ezb~!2Vk#!X}|5$B_g4(V*wX%A~}+pK8E^@#FNS{c&Y<+$ye;k6{U!cY_&Fb zj&5ftnn>9w6z}Y$kP<>e&r0$mu^FjzZ9k&n4!s78LL7)(g@kfd#l7ZBg*c`*c@W^- zG+G-#pku5McN&d6AlaqCP@E^Sj;C)+Jo#Y%=NDalB)xQ5W=yvN9H@*6 z-VG&9DF%CyPw4Kb19x*6=skhoPPR>3^m0q|x0M)#hydRbkf8RQ^5g00U{KTs9#cG__KPGZS%Dv#&_3@gCv(GMJ+Q5qq_EfMdEDq!4*%t_EkA;kCs$j%MGFxj}uIxi4x_OB?d zJ?3HJ$#3e)qrD2tH3a^h(4Bfd#+)#a;nz4$0LqWWLQ_=?QMn9~)nRgxu;Nm%kt9M_ z{Q)0SW$XXZn<%P`0WPP_S&G6C zbe$-D19dmu%ch1xt(TxFktc_*!3R~x1CM5{0VI24RQ8+J^&AkIHS87rE3z(w(Utsb zMm0C1%Gf2dqqc#2)ig_MjrN4jE^ENur9+u;IZXhSBo(Bh96Xh9*=9asg$Qw=@*&w< z3&MTYaQ#$tc50@SXj%^o(~W($RMK;>qv+Bk+)n{O|DkJOOK!khLyS2<>kwNM*cSC5 zDv-n7#mtS`k$g&52K0(d(QZ1tUXcTabQ%BC&1LR>&6EQBQkp_1+1N3O=-oHDqmBsV zPHk9h}72s~l6H z*;#yba!MB>5k&cw>LbLNN2^Cr8ThXYn%BjVM|%D_Rq(%tKsmBGtYkp&F)0u~33oW6 zv-B5QX`l_5r|FEex!k0YNl*G*X}3^MKVC`vIGF)neq&A-5PnrNZkki_lCiUYl(f7yI6|ek>#k9p}ngNhG1RFDUX} zB@jkWBSAvb9F2&at+?o|%gNr-I!@knEVEFancN-I-sxXpo`-dhAAYX|6~i^FvV@+L zf6@bbCYQ*l*}GfOA9Fl0?F9}Z(4MtA&A1FmF!a7BRCn*=@^weZ&a?j>LTdLNW)3oN zL4*2xW~O(5qe!uKtXSjY8%)!&6J3|@m?N27?LIMSG8Sc;wq#t}4s5iJVI-qKMqCLi ztKuSrl1^aSS`0>CeH6TaTmc61Q*Rg%aatab@YoNDrWXWr?r8d^K!*^xH)5H%~KIh1_F@t2ThwSrC;G zd_T0FJSpi%gNOL>)Qx=+cY6p%(`6O_hYA~J?phIO+9L;_JqNmENt?|?1|>131Of@c z-FF#%qTdGctbkM7MrseBP-Kij5_=(Zt&x&`r-0$v)2C4S`RklbbWt=rzTZG8m%%MW zVx+koV&X^?`ZTg~zY175DOV-mtSi5gFu@j_3pjjK1OmD`SX|$%&-)EDQctWy6xCr` zHF%G|EcrGr9{Q$Q>W@Pylk&Q#V5&5apVy3W!xlhvpVkoCqNX^0YDF+sf}W0kZ$!f= z)RB|k@jrMwViDH;8ZPun@J?gK-vxQLN4bJ;G8Zi|#fpCq0S%37@^$e#xn*$lcmVC? zS6!w{fKUc6y@v#b$5qAxu>H61Hd&scEPy6~4hz<8%I+;J>b0xR?4=7xue|xgx?lqG zKSPBG-dQ)k)F3qjZp6(ES1=9rLGbK45B#bUn7Zu_dLI6lA=5AKH7&!K#4cS5ENTz9 zaWmz5sRz8iAQBPCC%D|HTzZVW`$7ir>&9O!0DGnW9-IHqen#%6< z_D8}_{%c+|L=-pxCij~AVk^%_(#aW5v|2sFH;gq#=QdDu@fDV%&MssWZF(03v+*)O z4hVd1hfA^VhVVYfQZl0|(tKtT8P#gww0G?d=eMzG4B>=N0PkMZt`x{QKyaR5Y9$xFlQl`An zvm6W-d(zD8=#u3Hm3*+Lz~TFzJ#yJ{C-K1{5JB>NESwsPn*rpnn49>}GgEt*-PPeN zWJo%X;~js_M}G8+_Ub>by7_6^L;Ce!WOLF_ea44BfG77iL>lv3zwOD}j$!mk6X7`x5MBIoQMzH^CUrI~b2vIs`~K0BS~*7Jv-46(CN|I_(huF^s#*mUXr z6f?6bx$=wX7PEC_?Dv+?Kh+ukV|&m^9MmX&*Xp+^XDfH#dxbdmT1w6J@k0S@Bwr2FWH~|C_dPtzn|$(LBX=#l8XntKBOp+8cSG9!DqK;xN5Pey+_Uz{!NHWBL&5YjKCzK`Cr zn(f)`j`+RgDG7%?&?~mVT9S~iN*mt`#~AYWRa*&Fl{qfC^tVvgM~xoRV0#Fo{Z$q% zqgfv&{9Oj;CU+WnKA4XlaM=u06Nz@}+2$iPlUvNX1bS|dwNOO&Un(Soj zi()=G6-G~R!JpsM)$EpD#<4=)Ls5f65kt4Xa|ASX6Oc$bWX)anFT_Fdr^NX%;B-BftW$H=P{JZ8jyf-k@D zl>Ft|g0hX&MKQs@=wpw!K69xcucy=BohZQ;30yR07pcn8caWYl65%(WiO_Fy8DY>t zJj7-9mpr#C^uNDpC8myGo{=R}WL%%tZ%MXbk7_Pm+Pj953~2(oY%ubH#w9o8-St|q zA+b`i*28vcRGs45thmczY%w`5nU+hgZBt=wJY}LpEYfmj=f_@Kxz){zmj6J;k6z#; z?{j<2me&rNOAgvI8-VxJP{h0i;h3$BljB9c7u`END97Czy^f)_;Q%&;bgj3A2kh4yE zW0sHA<4hxmIArI3?>*;Y5?Z*7;Q_kne&%z)l<$@pd5vB1qFXGaOg#WZ&w-9PPUbm! zAw8g`i(vmk=ex_VYQ)ZkPMFIs$KT@~a%YQp?UwaN*!d|TXVSb!L8VoFFH9%h`~q46 zoir_@c^KNK(%CyeY^h)hXHQLnPUmvg4Ln+sN{7=QCEsnS!7lL-kQ^OA4Cyoftzm}^ z7O7awQ8!I#<$Ix|N+2xfA&wWfyeYr~#Z*oLsZd7rLRX9q%ZR-4flg6ONpl?%FIJb1 zyH+m6YER)KTj|L<%2{$PcUDjqGtD3Iw)nb5iaMOUFyTB$u4J9Y9E4lLjNH2Jt6!c- z#D5H5itg;l6nBDJx-oupWT0e~4#WTF+4rSo`It^Ugx|-b*yzT0ZN3&zoY*KI;TFk) z-k#5hrQIRbi;5xcuIXeDVRZ2=F``i(Ds`sg>@hn$wMz0LW z`8(rNP5T($rs&+)Xf(u2e8)Fsuc-WJh}Rl!L9koD7ks*-W-GU2AZh{?4moU$*i{X9 z{U=F3Y>N0LSS@R%OI`2CLajsNv8acxwTWrphYq0{RYp}R*2~3{Os*emmSx`AYc}R! z9emw>`beW|#z48PNoPUFHUPbq?n9DOyHWZpbf$8yy0jRz{s zamE0-j|-44mGBV#tlXmfL&4sk*%30=nDKgm;St5Eip=~oskIVcxwsV*ihhEQDUY#Z z2P1kZTG}lTk_B3a-SfPjAA#`{P{Yj@yYnz@{UYyoXir!_J*Rjxu>VLD&GEjaQ((Yp zZ$`AG-7xy~*;`@r4P#kzEmxkIEWft_5+5_-?Urjl{F}Zn9$-o>n{PwUV~Rn@g^BC6 zrQYOp`kt)i>dfg^3wGOwZRWD>oU%6gFAO z@wJP17*i6DmelR&lo^%%ohKr6iq}vWWuN_;C+iR@z`RQNJaC=EO|cNH;Y&T~9D}`P zZCR6y{W^!b8lM>?jI-si-R0H@Q_`u~z>?jKmUX`xDKMROAVGcw*?p#Lv~o>6i6vFV zQu>)(T**kZ-m0Oqo|$U z+S*3*YxR8QsShs406I$4>A95GKZm&xxdV$euh}F#iUkqDU$`NmR-qfO6Xq_!@1-5`M4#t30k~RVq|>AW$W(ubR;h!zz}L8q)-Li zz*oM~NM#?~(uw5)4GR33hiYtkyBtvC^IOVY%qP-SyK$ir4?~JU=aYoxNju7Nkx2Wady(6zpKKRa2dB!9pdnxrU%d>Pbk2hj4RCXV(sRGApmq*s$P- z^WXuI>7iYs+SO2FUZ?{}=Ch%yOn2hIflSUCyHz#Zs|(Mq6dlJ6bzx=P?1{;|O3jrQ z$9g-XT$L#-WN;6KbZ2Mu{>8m2ENMDPv@;a2X1&uy%HVM36-vET++B(sAwA|{yLT3= zZHh3K$!m_JCYLuCGV&2zL$p{-)th|Pn+TcM*IXR`ct6kNg`SpjPl?(wLW3>&nx6>K z1q|Dp!g^A(GFS*Xtk9gMF0s%Cf(ZfFo@k7!BDO=BJQ?Ka2@#VNQ5LEM?QD+X^g0VX zi)t+QdfnM66JA+YWOu|0ge-dm86~PyQbV9hT4KY|kNuxyW!?hvT?k>SF zb@r*Iq8g}+W%0j%B9B!Oy+SYNN=G|4fY)nm1A5d98v;PoSW8IvLpAy2+Ro}yVJsn& zCNL#r|9Pz%vhG^TU4~b6`*ppYiR%7fM*;|5oh3Q-5?+E_RmcZAE1#P(uXa&wBkOxS z=*VdRix^DSXSOH;Dr-Daij%}?WK&9qs48sV#GgV~jZh?y)VmGQM@7WCq8PTbSp6&N zRZwu9MC@N7qItWf6Efz>?{Xmuh<8t`X?JIHyYvf|cNhOyT^ABeoY`d`iuOB*_8z|< zKuN#S%1aPS9A5wqaNVYrHC?25w`tv0Eh)3E)FjWc9rmhBjKnL5W%nps<)+zS9nJh(q-!8Zc@MsNZ@WO^q9fZr6$L+ccKNhWA4V?u1_ac zyF+Z-<$jTpBSIk5$`IB9xYQvny&-|O66)TZ;qKYnQk1q;jZogX*K8&I4v8l3SWyjl z6}DK!IBHGSi>Sj_;0AmID~tHxq7;3@J8zatXO2^XJ_v6INHEQ)pOX=sk5A|mtkxS{^; z0uY5OEKN+Oh&wF{myVZvr%}|S4dP5GCesooL2UH&+H=Gr@fRLr9VjX%rW%(ILrN|$ zJZVVmo~i1d9JJ-8YN{n!gcjlOtOeyH?J(G|P7Ad)#H%tU+5^O-#1WrL3?;NXwU5Ua zQDOj`K+bHaM{+<&+}u`ngb+^4lFqAr+CRZyO9FQ($54^LIlfXL4~l}e97Z)f%CoOL zdpOC8D`<54O?-Pu^f|`c0r;N?K&6h5p-yeTSNKqZp2-jXfS=}CoVkMsThGvtamwYzubiFWD3pk$jNTqoABRco=-rM<2pF{dLjeXA1li@3H-Tx2BV_z`fVBKzNW zt5A@Jkozy%LE7Kv>R6&5CcL9?N~U6Osbf(Inj{uUF%$qXzBrYt1s1%5Sng-ai)j^Y z6qusAm8v(DKp@z1!uaoUq^0LU=~Eo~X&?k0Hh}moGm22`w&kz0RE@LXBFxrf5bu2GJ@x=EsaT#2ZJ> zi!2IJUmN*sQ?|T?i{Aq2Ntotr!3oHChSK@G1-MQ-RXz%`N}&imGpy<|(g6|8is1oW z4c?VhTKRO2m6w%?uKd_|vy`T*pyA4zgq#Ad%I5mkN~RUcl^-dEbyL)L%%Ok*bq@!k zwUXy&w*gIRtaZ8BK@#rjE zS*?-Myq)))2l5mcvW>*)IGACDC|~+gJ3Cbi%0NWQjlbnk8E(=A9VHc*K$#u0+4YPo z?c$rz@iY_E@atm}5e~Id2&jnlA#Dx?vziDfXG!N3@W!K<>gq)~+X4JO zhs_(1Ak0s?yto7)FCqrM=C^sn4!qy782Z_n-yLu`__z1$=)o6rYD-1D$rVJ+-FUYV zvkBiH8WRM2sLqqd`7ODL*m{DNp>?{$FWeTTo>RVX=s4yY?%irv@v*YK9znYk7s@Zf zTK=f13nV#DLynK5Vfy6;XbA9w)`%c@%duw8l{Ndj@Kup$=?2OH-R-(9u*%QRD)&on z)g6=%PzUd9KVYRQ&*V`Oh;KFW^Lz55rE1Mn+(*@(nq%-&tNWhm)n9dlANKohRYOZ% zaX&m1{xl72tiM5O>JtVR<>Nga@gbVpP6XkWpjPkY2!&Yt5SWP&J|5b7g|2uCjnhy7 zUAgv7l%JsQ4O;JtGg~+SsSt-PVzXR0s}!KCo)s)jux-QoPO3Mk_r!~<0N3-$xZ1^L zAtm5eUcubi+dHGV^t(LLwI4T{2opXc!-Yh8ZQPl$Y@b$*S7Mgnj zVzKHl-VNAJdm20ON1}MnZ!^NwM^FV%eMaat5_^ef5nZbTc-yl6gyl|EnEGvtFZUDf zi19qX+xDA&v7TN}aIh`@qXznUlDWW)P17V^u#J^VFyxg`$b~{kivp}^t;jH$nn$Iw zciY@DR_r55VpSqNKWi$PjmgXc7UJ?V#-dE%z%wr5r^wYL-uE%gH-i^&;`b*vBTy8s zf+blrA|f9_Ibp2h>wKjQ(YYy3JW{~o+o zSRvC+RZsqj_Yq*L-wvB#dC?kY{;CY|WBuNf9?sk46|G&H=)Z_I`w%=T=!Mo{58k=@4Zi5b`-rIAOkIudJDop%+KFnW zDmDL^6Sy_Lx8^5x``+(QJAWL}(~O+=-gdVI?tgiI`huS48Ec?6FE-qDk~@PVeE~)F zT8qpB~1dpxAt;ntkDFNquPcBnI2nskmX4- zb8(?7j}7AFCvzlj_Kr#YV4X#nNoOb;=HKp6G|6}B(KO0XkX5%YRM=*&47`A)&p&`T z1|ta&ODRLH02YNo^y3Wd6sqS;ep03!Wz1^p7k7NG)CVI2@VG*81mT?X=uwpgv6e(d zUF>EoHdmHv9d+;eulEnhv)Kex+`>UJU&B(S6^YXbbT2^pVrTRgR=g6- z^eL>*MsX}lbX>T=vZGR-6zn|^_`@K`d|RLmx5KM1-o5q8M0rIk{!`Ja#{Cl1Hz>x! zLGe$DZ%+V+s>gp24-t~PgxQ&+owxo>>?1Ot=j4ArsNZyfR6%OHDxK-%Mh4DuFJ7m3 z@(_i&9-al8-2f@RTrMcwv?hrSsQ3sqOzTpRg@9B8-Nb7FMoPWX`ZnAF z{8B^tAKd0`)&9_BNe*|Rg}c2KUn>U2{V0L{!prd}%;7dhR4Nn}n(H#wDR zk;12u%%{3LB1AWP@TdXqJb@rV18Y(G(eo#UFFE>drUbp1zo*ycaK}W1+?81IOLu&B zCgXFxz|VO~56d?%Kdt7g?_VcFO0=UfH#5&dKcmwX0O1(0 zU4SS2R-I;A333xT6lpC%KDc9jv~8gDPa~tx;*FDDuOS};;Z#J1`Q3plf41@1r+rtF z(h|KNBq|2gcQwW9?LB1s0@(KCZ}Mq3pCiOFMF=xR?ZfYS?Fk=~D4ZuQ!mx*~TvRR5 z^N?;?QWq(UFwim{K-(%rb3B*HL5&R-b$;*{uyg(zID#L|38eASuO;T5@!hctevdRx z(Rp0^fW#k0S0;BOez}WRe{-e(v9!{cViC}_z=6JJYls99nI`U(bA6@=$!av{nA$I# zHt+hhuFH=(NaC?126;NjvFuBg@~@7YQd>xm&_))co%qGYZ37W?0Er6x!4{{6(1`nA z)|(HhUVncIDZ~tw`H-4?R*=v1znix;*vKd?b#vxU^XnA{ek+@avUQTCPAm8Fa3yo|mp!5K_%3OM80J!!oAMN^Vh16LrcO zg?U}bPYqd7`||MLNST?q1w;v5-%?e!M5x!jIegmfmA}aSD-7R{Z`-RzN#+jlJF#+q zY0T&YvlWi=>LI`rzSj+qiIY1juA+b%nM1XYvsc1*`7!M$M`u%tkx7laZ8TSkwTyB- z7-c>dQ`5%y4w5ZmH3?y)p471diS_k6H>^l(#4_fqPyL6nf@<50f&x1JRAO|~Yv3<9 zw@!tRhHusMq8P!=$LFc^4=C2Iu=l^)&^=UHFimsaa+2+<3@C`BUmNsiRk8j`=l04h zq21xDc(SA5^RL7D*`@(bq1^pz;@no4_>fn5l7lMbtBEg%=<=AYVP6eS=|sIeIm4Ks z@BR5mAGSU>NXGr}qQcT5wt9GQoV%=A!QoZQ&x|nJK^Hy?})ujR9w${5yXdz3i5F6_Zik@0HB5mFkJ#E~44`f@x(udc2~L`be*> z%FYfoMmKmlYe1NX{_pa@^82tSnhDJY3kkpFAht>?+0(qUf7d21RC_5s;@u&iE#Xsr zt2v&9s3TQk7Oa#`njw+7J{K>RhmooUP} zKRfPKuRz&8UiG5WaHNrT^4{Re8f#09lJq0T*Xk^wvwZKzr@^-xndj^0~#2z8&QCc{}#;5miV%z!A@ z)EB$>2}`d|n1#4Djq{B@r(xJ^<7lu}^pzv~AAfSAC8xv2)L)-dAcy;lrtrmA3Jntz z7Kd>MG{8as$2XSt=ITSM2}EwwPbfmR_j$BWKhB4VxxY(CiBZi1_lZFGgo?z8+1${} zUmmIjS+Rmdi>U4dk`ZY|1FEQK1p?*PW{llcO?gBn)YkDll=`RQnhxK4)R0{uOM%{S zpOgfCMy4n*l9gGc|N7DD-1#$wpcuEH0vyefZKU~vzQsFw!*fFd*cImsQ}x>;Rye3B z5uns?oTv=kZPG;c_1ZlBm~;CAY78BRq%gTNo*c(XGVM`2@2z^8q{D*a;xmn}C8U~W zOdV_R3k?y&jYS&^g%Yp`v*MYMb+-TThR23c8TSliGM}b!>xZ-J5fYg;F;B)o+v=Li z4U@CGHrIpkDeVkJA3!Crkwbnfj=KXk2}R^d5X7m-){tPU7Y$COuywZLent3e{tc;#p5w;!OmhWoY_DxxN2^cL-@K8%{7h2= zLQPL;00(8Bsb#Ed2Ac6^Y=CcYvdI-p*|L1HF0>pV(U!`fU%5WN{ zEZY4_tmErBFLhP^ErW_U+Y(3YqRSEoZmH7p85%b^zLwPDkl0o`#<>^6{yJtzZ$Ric z3HUKC?yh5dK_w<~PsZRuAwQUH0(6rFBO-&pGF_IRFe|S8UT4a*Z5zY#L4xbvDR5DHIyJBPtyEKDB*{ zHcYmc7S>->GR|x_Ca-eJ^w_0$H|kkt_9xt|$K53HVX`ShXfOg3n7XL+ySrHi%lS7m zv^!>TL7nNj+kN>7j?=?sE}pK^9hy!fSr69-2ldJ$@?E{R2Uh)vhUUl{L=(wbw<+a; zz670kCK9@3rTe!)S#95K(#Vg5P4rpXA(((R&CwK!)7HWAv8eJR1kxlZAc-YncT&CQ zh{+3R?qh?;b5@VVg)o>0_xJ5B7ACMA!%}BV`W6+P(CpyK;tpj2CcM6OHyIb6YN>}3 z2w$>uqq-4QvZA-)R<31XY(;oCjPo?UX32)JNqC^pgE`NBu*r&$;V99AP7mrChHJay zwY2;$dT(QTRe*2Gm9CpPYoiOSu z<&kEtp2yLDugKE^Wx}qcnSQZqI^9>Y?vzFQ(78ojSTEXpZ;CS~deKowg(~aM)1uOB z3)ltav!1nB_d>#PY<2C(5mQf9f1#jKy0{MrM8qJ^_=f2*c?@LSyDkQCclg!T`8!je z!vf1t;UeMKoHo=wy^S7;Wtj7H>=hr)j!^ZEsP#GneQ9733w~%Kf{(HF@Ytg;IiXwZ z=YF#Z?hX`2_(Xp(?NyxBsY~zuwjkOH$2>5l)L6al89oi-HgE_T(y+ z4(``Iur%(%qQt(UiuS74`3!a_mg~WZ1Jm1e;E}T(E5qGDkdU55O&bH#;eqw*&Hje} z5VkC14|a`8@^?LRJv7=aWRC^Z;;4dQxS_EXZVRj{f!xzZi;)8amFB7{V1=AdZ3k9J z4l8py3$!8_kS7ACPSe*wzjJclD^Qeh_f4Ow-nU0TR5_1^pT}UEZh)q}C{89dSNzwX z=@+DH4W2nB139>$`6UD)1Hz=YnyO`*}!^`F^4zeCt7SqqnNUFAI+SeB=*L> zLJF5&H;?Kfgc#^we}Rngg<6qNh(4PN+>(wYo{XDM%dvJEex9B0d*Q4}E zienP)K|UF9kO%Ui>}={?2`%WN>a8(0Qi8Ye9DxhaMIK*$8Q4qvhvLX+^t)^I*h+~3 zM>jP)u1*BWmMIwW+sUBv^1N@9Q`+SHc{IxzpLNKiKxYrVKry?nK5LsV#-638RtqSx zC1p&XPrJqAk{BUSzT)J_9gi5tmKfl_qKMbg`0UQBg6H8lA;M6?rPvWEHi_v9$`(s znCHG7D>sjk`tHs5sPVi!rEjg@8cOD;Q!5|h0gd^Otn*mag(pm5FlIprKG!r+ckzUF zRnb(q#WctdJExT0s|+Qv7MXjX^r)`hlbb(43|log43zX! zS>b%K=;o>xod?#24%$~wK;qhzk}P?~Bx+rDTj?=DZqXuVk?q_n8A<1#3Zs2LSpOi- zdMkf`l6EZKkU+aRtH;%sw4fN49$8ayrs`#t zVe-9?EEj0CTfm!wmAC@IJM~?3Zm*tAxek5&rbX?Uk|yAwilcdn=F@N@mD#z)y;$5* z+2W+nINTcd{+0dPaDg?vOY@71xv@ik2puSEXz_7gUh|EHKW*|mjq!^Oj}>|`1^YYb zeMElvVitXn(G14KTFUq9l*%7#S?(Hxa6REJIWu@h^TZM4YeW7Vu0p1#uSl&fuva;q zGBwhli5>Uo`oz*O$mAJZDR7CPl_cQ6p&zNS6A#beSb3X<+DKj_RZ?B=fCfbf)s1*WbIwKPccDVgWFFvbp}Uu zwkU$!=Hz9voxartC~Lf{!@afjnrCe{Fx;)$U0J2iI9=OTey!%7R{zYp#p4rT;iQA2 z?kn9*bY0u_`(bdMN{iLQVxcNJnH3YCkUBPo6GLgD&MP?gsC>`re;GzIa$uw$gHyox zl;(R(-2F2!Tve)LZa3#&29H!OFj7T5SN|wA7#{>u&vST`?Pea0?_3GIte)XNbV)nV zmg0Y~_Ims%uk)vMKDo7mrB)XOK=wk8GPw@BEc;lZ&^%JzcxzZG5}> zzl>MuVYvNQP`uXSUsRXf$?umDUvU4?it-y&<=r~f>uNhSRf8sp;XNhoYQ!rKt@0=K z^@;|bsV4DrP(9+AMzJ7-H##~$i%tAzJ5px_^)pO2W7hMcm}19B{$*{5#hWXnb=`ko z#f4AN7<}yesD2=<`+os+K#RZ2dH}vE3WLcu0|m4V#C&TO-gYldWYY|UKuvtsTzp{C7XR5g_ygdtL`y6xGjVt6!Nds z^&&9B1Xy5p-2enLf&T~=Y}Tw`LWK(%F6`Hk;6aEJDOR+25o1P%<<_;+n6cEwXckfY zD*#cLuwum^{z~YQ;k1I={!Novt>(FZI19=o$n)Phpy$lZ`&rOm!D>szHGD@A8^fpO zk}9l3(Ek!dmOT^h`e*LnJg@Vb{)6-n4?!*eFkRGFkl4Stwg@^)Xph@OSs(fS`_{K% zAi#q!RwYO`p{|Oy7&F$mj9JEI%LrGtoKcrzg9J5S_Wb#CNQ)zT!b}ME9}l3W|D{~{ zk~PYNI%^7>Nwb=;bPQ1^^hw(%LDWlkJ~g`Vsc^0Yca0*5`=3{W#}iiS(@@nvGXx=t z7EaSBHc^{)QKR;?CaHp^Izc3@5aGXJ|C%Y*e6658(4gP`yLEn|a`qdLnaK*G46%xa zq3oZ?m>C9~iXuyBAczd)E4~2<8fL=JD3j(N5TzOMpKdff5k-o;qiCAgCZfrutq5|h znEzjFbaAHEC?f73nrsUzA(|ADE-2a*0!zASfMO^ff8t5#o!$sShdF{oNk~9~-YJV9 zT>f!|6jur|WFcXu5%Q>lSV^iKyB6xCy*Jq+$jE=-k!!<+@=6FF`cmZUNs6fW)3ad= zMFtrLEi%;5f|#)dKhQ4xsJ;_3q|nd7M%;AM5()iNz>ZE_aiZ4>ip?dMWMs%xf>u3M zM~i&Ii8`EYTBsV-&e18kf~3OYtkq)Z4v!xFNjk3Ps$XuE>&Xk@2^ z==q17g8nL~skAI=i3S>lf}4l7l5Ztw znq9mS2P|RfjILybsQc$BnNOppoT}yl%S0;wacLe=u2ileVZ>DLpJ}bIf*?a&xx^CZ z5_+o}H}_l!leR2lw3!DBLTo}{TIMlo00 zf66h}S%Tas=nykhxr9toB8lXmM37P_U4=C9dZP9;fk>MT8zrdW`3Rb9nEwPRZX58* zGL$GIcM*crB4h@Xrf&M0f&MaE9-eHOzbTC#eb5MRXyc21Z0UWC$^{oD#@}i27nyXj zysG(k3KmN7(AiTghn$3r0vAFn$S5k2o9HZL7dWYkbF$*PFa6^Z>KVly{&AImY-=Hb z`i4i$L7T4q!xR_6)<0O14iI9j6%#pL`e-{E=k2$1&NA6Z1ba|$>fGuvBV)uQz0Axi|ZYCkrTgVXqal~L;#)+qtC8*jVxcyWz zAuQS0N_ff3&+sTsIK$jOpy86H_=7gmsS}spffHy1M~(@p3Q?vr9i2b}e8N;4Lw<3V z9<@e}h4@E0cC)O7Yy%e+BuF92)QSqafoTLugf{3h$`KxGJ#YeEU%YlBhTP&a{i#Sd zMhOvW5TT&6tRX91`AX>lW*7}q=tMD+#anKXeZ4FQOKjx0g?Ka}#Ho`@Jes*<(WZ6K zzzI-phR^Bfj37@sPOsu&4w&XII`L}=>J&nys9XXfulq+|6sY*q%B8)YFE7sAVx^#zzU8QL(l z`9PIU!yI{a=>x$S*Mv|9EY!JXL2@>%KnYMGLMf9dDj|&HpeZ5onCe8X;|g^qo&mi035Xa*}+*`R^Y_A_2}R8|F|J&D2= zxF||%TYXtLwN@r2k;_R?=vokSnu90RfJVuh@{XGw2Q0KPijXfKm|c0Aq!pHsUZc-$g9{&nE!801capw?x%2jpoNfc7^%pG zf>TkD2LI#14RK;ZF#_5FW0k^|87^SrXC{!!HEBo5uF05-p57$KD=U@eLPp%V)7%iI zT*1jXP&PEpvG^b8sETS&Q;iIxMz9!k!zel#HHNT@it_wNl6kC<8WH4orv1lK{}BO& zq>w)X4$y@yLl1#2>%GT-@Dry%n! zZ%YXx+G4OLg(qBOxC zdr~3gC5U=TkvJ}*mR|p52ocU;K;RarK>uIW^?{awsOaHWLL{e%@+2Z6R!*-n<=eH) z0XOZ-^f7+7@~ALWe7Tv;C?(VAZ*Qc8Xl=H%EPw?mH10?ko+V@*7^6oodXdF)EUR<9 z0!lTeDs~Stq{s>HB*FjT98!z|_h|R*Rb8u)KwdR&7tvlrDnuCE7FZ!??$Gd4?jYjl zE%3G-NMt5P_$+NgLxvxWhZUzIo!V+yt0xXmcJq5W9?Oo&ky+=DqB*eC?DvBy2Q`|M z6o1$`%}dJSvWTR*BzKo0D4`NK2qI{&>Rf@~5-8)%8j1lEzV%RHfbTQg7y^fOI$$-FCyX4C&@a{LUJu3Ebt>l4ns6CZ-_}>q=N| zW=Viip%MxwtSTWyp&D9BI{)IK|H`62un%GGsrrCsfh>aHh|B;%qZ{lkA=-fl6(SMh zPa}?PA}SFuI0bJ2;~{h*F2>3XH6lVHObkP08Qc;1Y6u}XB@-{g40Ykw*03RBu~Ztz zqu#1ENa{7_P~j4yDR`ptYN9O8kGagrH@@N~>WYTeVPa|psig6Nlwv2Up;t(uHzbH4 zvZVT`!5p5XKTeS%&;%m?p{Vu)`yk>i=phs$P9d0)AVL9_p05;92{aHw4L@S62Bsh# zh9H>8QKT@d=B^>o(NcQNU=o5vnxP(B@wM=5`&hzE_~J)`<1F`#WxxeJ$|A0eqE4g) zES6+eCTh;a5hzMXN&f=tA9Sx7lMD|;!7E(Gs)%wI!e}X~fhM+rF>kRZ5)*SI=Tn}f z8{!NolQJODryntbGCHJSwDKZyK{S~t_%MYb7$$l^(;z(qA!FjB)`}L3;o2aAoaV^! zkP*kGLLp)djEHG1VQU?3h^6{+CU{~O8le^%lGjl+mG9#oii9~aiHf0}ai&5sI8L(0V0po8{v4(^)G&IEWNUS2xK`n(b zn7)GYmSrAb3Mk5LzyirDXs|^Z;X1A(A+V(s(gF`6ffRfqBwPj(AmK{zpb*Z26hxs9 z#7Pt)0S_3|C;vFgOj4pO@iT3<1p@DEKmKMj|G`cAg4w_`Mn`TL$Pg+E!aS8HGBnP6 zjAuR5=O58?Qc?~Jo8i~e#~E0$K0)JFbZH`VLM^|DH=Ika!b0_Yu0JViyUHPppn)31 zG=ii9cf5iWe&KzRvqyxX6f!H9Fb7Ug>mNh`Lu~^O+yD|t!8Xo9Tt12=6c0NACmvX9 zp)#>xX0$IR<2zNcFGi$7_(dPw6V0M>G)FTb@B<(>h1l@qD}n1$fM_)#qBTt>7*C`H z!J_kG#y<<9WK>GJl#8PLN(5P@HEgFZm(x{>VMQ8~ApR7WNI_W7LY(qPI<7@cyNN;n zL8u4=;Av&cho52b-;vXY*d1kF1YgEGiAAFu(kM1f}sVjXZ|7kVLWnWO*G<`rRUw!D=v4x(UOcJDHR zX8-j@N15S9byg!pPb?3ozuxd?Gs0I{#wHR+(iHJCT+CJHDh^MDm;5Q0nznEUHZggm zH@4wNwjmw#@CM~dNYd*!6@p}iV?4ZqXLphysE8U&BwkhrD9ZLvKnQ%cB^20zthx|I z;+7PLs0(S~Zp#%#_SSDbLnz<&BMk3ye+i6wDROHDBSGUhk`^OkWUVYWX=Jk)ByS>M zhPh}ABbGuyszPVVVHzf@PVT@CqVr;$p&Q}|p8%v6bb%G3O);pb5_N$cQ)HCvjecQk zGx;_tGeld1m+r6-8Em#HQ{+>R7ppeR4FMx_aZYJpa~t#vFw9rz5EFvh79xcqRsT-V zX;(t>W>JhZ_YaZ6T6YdCrYh;Qj5=~scdZH%=u=9z1*x)TA+VKRE>qTii#?0CUns*~ zK29NML3sJ1J3j+IF6AH|7=o29MVOb1a3tFzH`{`V1P6n2%m{HMjeR7qM4zl_V}zHm z)1(+uZDfXVD}yr2fmpCorWQhhD&Z>Z0Q;!OWx9bU_UI%Fg7nZwd8ar`-0Hznr;M>r!;RFqZ1awk_+$TIR6Lc30h9>7$N zDT31O=w^~4DyV1^&SIt7woAO^3B~SHBAFq?QIb6aA0eWcA&e3LCq8wdKL488KK?-+ z*AR;=jtwdKxLD-FR%!+bBURK2jZxSlZUiRO6!IJ=U^TghOyoRRl@DRY943-Ah(wGF z0vA%nWlEBdX!k_);T83Hn5z&9t75ibj-U%#l8Lg4D?*p9xFN*3A`(Z0v$vG7_?ji! za7GzLLn<*_Fd;A*oh>7DGvZaJt7IUM8jgk_&LeYO!etn5NtgzuHNs_FhN4rXMU&#< z{uxD%nIR&KJpaK^DTYLF3yJ?(K*|xV6qV7OCbn!C%{y#V~}EuA|7^FK!_zvv!z(74;|1U zOQ~TO01B?7N3897Kq#S+9gHEAD5weLC`qx2P&;rlO0dJ3a+^z(os5OZxW9b$957i0 zFXCq4jUc=_AqbQ|UC=Yo(QzkJb$}`UeulHrV_TkttiPojw%eaI zW<8@hyg`D77?UP;MT7am=H}H(g{~<^EU7+v4O=H3-WJ^2uPYY9O>`MWt{bV%YTX87 zZN7UUct|6jguyEUVIur3$brHW;>_w=&4|wa{(&DlN9r2FDF3EAtKosf9Z4PRgv9Z# zTksAZ1jXU>oA7H(BT`f=h}#BQ)|O zc0m{fymhN2y(4SN0f%wry2{B4e`F=PG@4ciqk_5gBZNF)6U)7wBK35ZbY-HCFz22N zf;ssDm&!dYT;BZ7OWo9Kh;>h0)mPmjfEY9$LBUZ(3?L$> z8R8MPGb6BX9R{Vjsr)10Ro?zVcNci0; zy&}|oA%I;Wto-NJ>DlidLBXF9S<}l9wPXi zAprg}6uySyk0>ubgiyrc2?B%|{@XPK2t58GdQS{o{WIo`P-30pRlN%eVku?bD^h)f zZ+@a;ea?UWBOv}FY`!6Y(&aUT;Kg9r%N^*Wo*)E=*S$RuQeE2#9xxDI>bqXnLM1Hs zV^G?z?fUNwG~Vk=ecb;c=O-fKrZqs&KJDk8@c*3jGU5T4NuKVr{67lfJQTephkNe_ zf0%v#VhA7c%Su3oKJgoWqI6wG9bfWIDYF@W@-M%J%G$gzpYz`)n*_@6-<_@-!rn&d zupq+nvBcL)o-oAmh32|#c1&$Avy3-uF2NMFvPmaKqyP@GT0X);xwQ1 zPvpCrWLV7Bl$cI!C`|6#25=SPyCgo4CJS)ozWQHFm|K|nDmgq!|3i})`T#eWYog2afBRsYG1EFBW;WzY^uj4N3U1gTJAMUV^&A`G{6|-#P?anV zug$2|ZN<4t`&OjamMg(-ekF#MSQ=sM#0M#RY>4|GMWvJ{Q|m?fcSVZS8aitToMG_X zw*5}_*ex{W(!rD0el43CZ>4Ir7iWmQv@_PWd$Im2oHoMp!CzKy-&|sD*|c$Yi~Za7 z@sY{l^KQOhPYm7n4}q%{IMQsj9sd+hJOpu7&Tt5s*V1ge35Za1@|A{NfuPZ+pnxH+ zM*=N%N{e7q4fVr#GE*p_}C9oO7QafRJix8xsuI6ijwf#w0?UK}pF{}x-3#LO=GDxb1?9B0LM`kH6S5=m;R%2y`5?Y4-*TC@~knw z8BL2at^l`G?y6xnyKBEU13PBV+S=&r#(!pMZ$&k$8!Olqn`@E8QtNmx*G5O!jn)LQ zU8}gXfdFwv|yU0kcQX+&J znv7&rjzUTW98~20ME@Sjln8M(qUZ}PX6r!IgtE>ON zZhmgoK~|1#7Ax^={!dV-Q{^Cm?L;(GoJHC-?-h>{$ZGbT<{;36AS*h^1i;*Dur(;UqWuh8qvig5td^hNv>wA zgNRRpLJMHoTBM^y=wp0%xe@!m7ZO}yq#XEz&C(FU7c801A_GIsI345cey3CmE1z#=?A;6Vzh$~v}WVA!!_TTpu5wZb-h=L&Qgv3|~aFCA@B(4^TXb9#p%e_iu7edWQ1P&5ag5b0e z|9EQ%QrXqW`mv}ic`Hrt*bc62qLoZ>r$+ZWIfPb3q*cWWDf#Lmlms@Yl5MRk$@x`@ zVD*8!!a?MgDjADFb|E;;CPCOT*MnHn99L=186<+y8SJ73A;4%wqRN9%#I-#(1sk@C5HSRHtAY7PRX2hIXl8f5&1A)nj!Quzbo7!e z85kbfs8;$4c)(Z$ORj1NK&ldW!3?fQ3WPRP%C2L=jU@;vE%#K(1-QW+?l2q6fym!_ zc*G>u;v3p>t0*Cuga_HMJ_<&m63ckTTBJ-lQZ)}6>v+d7%~JHP^rZ|BET%jzvW#!l zARn?K$3|}Qjzhe)4LfmMNTB~wXjJI2C5P^_qg!jb4F5lR z(pv;eFaF#Lf@lNK+PFrh333fk|6|h?AxA5S!MQ6_dexppjTKo9YcYme)ClpzRfc+y zhiHQss7~OYq9o;53ww^ZMGcbUJZxcydIHzj(OYj|k*Z2WuLS9}X_Ad?K%VQ0jA%&Y z7M<;3&w7eoKnOf4>>_I)Bv+CSx4X%>6@umY-QnJx2>vlpTwBx+$d(AHCBi&z(tF@w zoThgPPH(j&l@bVPg(UtlYnJeOH2n_aDiEG+2fdWc7{_)iLamE`HyYFtKgg%iDiN*( zyW=d+t-K||@s{_w9Te$>&4*bLUFdx0I&Y}VfBwaFu!YPz1-j8ujOL>oo&UoBi21&h z4s~Zmed-k%;(*8mNSJFU=RDdYY1g36mjKdcQ;CK*mi>F3N>kW zQD&H#s`(Z@wJi~YXtjtPJN&o0Safb%#KNR5CN=I_S54YgT5)jy1HW1f;NTHr_#_G! zA=};Jisj^?W3u+2wz<5}_+pTt6xj&k-%^r0GrsFXW<}n07+7iJ8X?1n>GTnDU7>Eknns~ENXOEaSq65NVu%2E zrCpJ7|6}&9mxv`%Tk*GGbe7V;5u$>m)P4xD4%(z%HTX{eWnupiQ99vtErDJ*FasZj z0W@WLs>TwiwSWS+SKU>CTL^>*aYZM%MF!YI=_L_?B@rb^5DHikMF?{QQB}C4ezP=% ziX{>1M^n%g6ou3f3{Z9!frb(>P%ctZ*7O1h2uJo5h*ed6n3qaocoo)Uh0#V3i^zpt zH$`8lOKV|ztko8Gr$tZ}IdgV7HsnR0H$`kWM@z^OD^^24`2S%Qp@FF;5vT}9?N*7y z#%2V8OG5^C0yc-YxJTszjPK?qm`E_bHjD#@gUJYMxnhh%c8tvEZgV1y1NV&8NNKKlECUi_?5zF|GbrvQ5Sde_SZRBV?-$0NF36T-0Pcu|oV z*=Gm|l4TYTuQrg;IFfbdFkkeLDM?@FlZgbeccZ~YNe4!hxJY8fJY8Um;DiU+1$H~fEGcNV#J9;gLQqmV0M{xe)$%G`E%63ku1RqSSJ&&c~Eb3mRhMuY={zk`GKEg zm$n&M{y+oR6D2Q@bj#_IX-1Y?lM$P+XIFuf*9lIs*oBgbaJt!Y<=_>0_KR<^4on7~ z4W^mz*=5-&p9a}>=4o^<1yA*9W)UKuT-AsCx&KACLZ9R*pflEc2a09AFeUmqI=!f% z9yTxmYEMn#n&<{fR@rvA=^+1UR9N7um

{M62|}MO@H!T-S|LLS(TSNWG_q%ana)hm!*l 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 z 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⁣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
BktRo2pn= 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 M*wDfNrRN&^KY%6{O#lD@ literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/dashboard_drilldownOnDataTable_8.3.gif b/docs/user/dashboard/images/dashboard_drilldownOnDataTable_8.3.gif new file mode 100644 index 0000000000000000000000000000000000000000..9a50761f7bc2482975969f1f8b247e0931eec96f GIT binary patch literal 594583 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

wy#3S=+g&qXQLZi_ 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 z z>#dDQ2L+)Ii3pQoHN-vX@Uo&bB*#57v0&EV|yy?b)pBmWTuLew*)9VBW>$?Wl;87SJrxJteoR`27N)Gv@wJY3?Z~Q3q<1841AUP_%%H` z0ihznOKfO#2}4{FxRKh`3!XqMLWogKjIoJj)=&L3P%*emAiU66+ypTFGC>pHj;t}U zNs0M#0N9E`Su2SuL_CMd-hp6T%sL0SFARMDWpa`yCt5B6c(6c1CPX~Q{(>|FOXE9j z<}8!i2uiEqx7X4ZUls_Gt=A;MEx6PShS|0cVyb%xAm15a1AwoB)AELGr}lLU-}&BN zuEa^;yk}X(^)Av*Th;r#`tZcA!-DIO@ z%}Cz2o1H?}gQmSQU-FqE*+T4q|!i zPKWP;Dt5o$>@JY~m{+t}GW=l{vb$(VzsmY!{qqmgn%&(WKV-r|BdohypeOA%dzb2> zmG{;!$XHKq_AayBzYlipmlC)`_t8W`(dYNEhxT#UR~C%s>Wct2IkoN&%n8d_C- zr~;ld*BX%kiqE1~x1vp{DpxzAyJ}LP(F(PE6wIS?z~KST0nk0x1&6)lINm99M1Y1p zPWXXpxhwVvE+<_)nwE(Q_70dd_)m@Za0hXJR@-ChJ+s9aLHDHven?edHI{m>rH?=< zq|)`YfE%b5{=%3=0mB%hd#R>7`eO`^^6Cn1AuR?s&UpnbM*mmzjONo0vH1Z_llJ=; z>ogc@pHBadLBk5*ul$&1FXht*HS%x29c&T zM{TZWyhn&%x8=i!mkrn4?@i7Km1eZE3IHJ&m%-pFjuS@$b}Z_B{=$sk z@M4o$bwK*Q!I&ma4`!Kq*Q|%$fP6B%z?PAK=D3$fgC*|KF)B5u5Ph~Hv>&#={n?Cc31r_T}CDAa3!@n$1SbiA5nkbN~oaFmd!ix1wL)Db2vr?0jUSe+$gW{Vs} z{iHn*ETG+C_7>bL)T&5nBrlC#O4zIK`ud;?%W>lvgm~@n~8BHND z(KG0>CGYj)RsksZzywzST1M!EPtjn+=*ZFO_g;kwBg(5z*?+)FV5Yadu^RAZJT@4I zK2QT}0mOx?xU+NeG)vC|-nreU1~+}MarOc}iPJ!V-m?;yN=ibxqDDeyw|X4526$FE z##N+WAlT7@k^24bvSG6ANNFW&-N?eRJPYI`7tq{AC>4BnELLeO14X*BP|Jg?Ew4B_ zR2RlRUMUKr1+_c$xeF5N8Z)Q80(Jlb6AHsIis; zwkuNzmD6tB_ZmNKSbHl&=t+_3Z7E@RoSeZo`Fmf!rG%q*)DCQQ;X@wt%iT*eQl)e2nZ2ZLtd}8ww`n>PYwQUB6qE9f9>!gJ} zb|PN^&dFs4E7Zw)OkcDv_o${ZGs7q&9yUu@=wSE8*7UEkKCh!t3qQvTefO zS*{{-QX*DKSUYD1F5p;9KN)P)#1aBsZ>lF>jDZz8IaCL>w14l8DZLoss~MMX;x65V zV)`D}%hrGAPJYV*FhO+hZFRwAPXXI}-{GHXk3xz1Fm5w5NicmeE%&KnU{pT@u~^cI zqb7TE*J1v6eDz*U9U{@rKuPjkdGS%hX2FZrLH)EA*7>Hn&8JFxGs!bIHD4Ym@B0v6 z-O^<*R!a8WUP;g8vHJ?7PVK)o_FJ?>dnIOBF!-)JV`=XAn3?u?#D|$^J z7oI(9$oQ^~-;~wKYoalgtGSNbsnp3a-d|k4;Yp@DHcJ|=fj|+y>?p1Iadu7Rrt$>M zST<``Mxg+nFQOEhW4ip-UuYTv`V)}rT)Mdmvl|FPDJ1d}5UzJKHu=-G$r}XMxbw~j zOpA}w@*x`%u=0@@VPk+u)0WQAMN$6e6XI>sRX+}^N!L`(kL2>ZSTuGsrqAEh;h=*T z3@NOmp#zQ+&<>yU*rcFYiXj4Qmc4K8rod->5t0KWj7>i`F28ezHiyE9Gh%oalJiI! zJ&b$W4xd*R&y5+b%j2rO$6Kp;xI6C(__mV{ySaqHG#^q5PhDErC6+ z#*1Oy3jpz+<3Krj=#B98xk<}Ad`s4@hk%0`?~)NO1#v|RK4Pj`ny;tUL~axhb$wPw zeOMvB9DKf9y1sC3?h0#sViY*hml4jfeO z2O;^m0UQJQsT5&eLDgzjv1~209VN3oyBV!x%#*3hIYDzb|-{dE}B2f3mrTQg}Y^=d|}LZuU9zG@Ve!L;Qz{d zY(pr--UMt;mP+p@h?2VT3O?YOW&oDq%$h?uBvXw!9xVJQ6hSRytQ$Npi$^Pp2JHra zJi~$BizqWj*>v;$nL`>T8cA0Xrr#1N8s&kr7@1QAj)l5T#7E?gpwt8c$LWch0jXysDfq&qse6S#41QXtG5)VM;)GahFr-osuB;C9C)Wq~O41 zq!1i6_r*!!=590^4sP#fJh8tjZqSrC3T^QiJmPogW?~d( zE@@u#y?w*Y_cydvGZf6oPh z>23q7;hI?X&(zGn_0NJy_|>1bx|6776@O4S>kDN=>ulsZnwJmaeof1}OnCl7DY<~#pPn`)|>c%~)wuQL3txxW8UhQEj&qFDEL9sBxFhC~QH zv+HlP`H!2=E!zCw*0KLr#^S}{K zX*${!@yCY8{b9(TqBEedNe)8kYEfveQOqi;xtNMSn9jgdPkQCq^Ki)=(PuXr7Gj2m zP>UqjkH73u;Sa%}N``&2xyTt-fuS z)8tC*R9Jia?o_&Pb1?mdHv7m}ewtK%^`d&#WqY?~;TCP4`(*l~ZY>(VW+Hb0-@pQ@ zq3^-hO#Zu@&s}N;AQL*Re-3WP5hqX(wCzB4C}uAsgK0Q)lT#-TbrZ(Vs%ACu^s4kS z`U*x01zk~_QzPa!zUa?Y=7{7-K2$6gf*Cor(Numg9p)8Zw;tm3{{VbXJp7a-gjorv z4-LMKhL7Rt5*jY;d5F6}_TA4aT6?TLyg4f0A zntXl+-&cc$Rs`aDbPJt@5$=@-K6)0Ia@ZF!^kGl{mM}2H_h{^18^KM&?l50s(b?cu zey;?+$X+|O+t$DCyk70M+A93(&a2ML>yydnW!FDvUH7g}7XsLBZcAxz&NuSQZZ39e z_HHisyN0N^^m|nn27ewsw7I!D-TS@s`UQb#-wRbS1A(CX3yQ$LHz4%RKSS5s_kr|h zp!`+GPJx+;DkIwpstz!xQ#9`1&lg`u_0?qgmpb-;xAPj`-A*U)$Ik0Pux@`Aeoc1= z>zjiRBg||_mu%;sJFis8es-bRXBiY-0@DX~%*ttZm+)O3yV*T4+Fv`biZnP+K6KYJ z7eu`=rupZc*B;cC@|fr6H1q{jJ>G$iQ1z*Fapj=@fmsQl4mTnCm|!TmCfeJg=mV{! zKCT^q6m^(q^?T>ls!6H`;RWKNq>QANNWhs7LCFU?NiS#RVzXfJR@7;2@q=#PKn?2C zl~CrKF_z$$KDadY{jy9bM5=zrN6CR%!7MlYnVuY)R7flvGGrIS-l{?Ac(mQZQy{=U zza9NUko?~dRnh)CsH*5MsOsl-bA@CdNHh7TjaZe?6grd%%K9|TWllPG`%~F`iRty6 z=jDHdss{fJR5fk#zX(<7{70y2?hdLFcDjSA*i!DGs-j;|RoXA83cKnSs)9WG8>)JF z2UQK-K~>myP*wLGRJHUQstWuKRUQ6@s?h&{s-7$x{adICJMeF)YAxY^fU155#ix74 z{Tryt;uQOpuia|MOLIr=O*LKytwE94aFHutgk!BL>j)cgtHji{W2zK#FRb$hI09H+ z%?-K~X)Q}54=^CcZl`<_{5BoK3=8BK(fpwe4Qq_boY4{AqN}k|sbl>)D0F&NWcFMq zR$#38{=-~*F%;^nh?Y-kHU^1))rAM0B(6ILUAZ0Thwxf&4?{A#{Nlr2<{C`;2G%a- zqkgUlo1+1~_2Q#{?65k==L!oRk0=v{9goU0z$q$4g7HV)@-ktNq6odl;jh{R__q|5 znI@c~;_Mt(b-k0QMjWtGGD?1GgRVGRMeX9R?5CZc!B&gJbx&E&7Ty!soh=4FEInHa zg%N%J%B(mEVG-X~}s4ne!GBEl2#8%;}|u@ZA@*xXsS# z2lZmMd$vA`-_U+L!ON>XqV4@5CdAE#n1f;R2*IvK6>_H&gzJNV6Y-ZSs)Dnp#pgSV zMS?e?+r>_a{L4_BJVDVOYS`8B1Wxni*?Jl5fAtI6IKY8g*@8({=!Es^7Uo zIC~%8({BL>Ervt$xbo!&{)f~6TE0u|QR)vf_}h`(AE^PCp(s+*kZa6;mm0unqJpOe z)IJ4O{+HaLtjxbn4g7|x1`3p2d%vdr0aX#5e2`UwLsj*3QTKP>3uB`G{VD!GveR!f z(Bl84AG6NG#kbG+o%Gb&9{2J7ooX3uuj7I zzgZ`P%Kyqbu~q)XIyL{vI-UPwov?qgP89aPSf{LCtka_TFV;!3_x z{>?gF+_6sdzgQ=?JJu=gmUW`}#X2!0La7DNR%4UZtng#BOg3{Z^mzVz)@dps#`+1I zb;>_S%M_uk{>3`ci~YqqCH)KQr2j9h)0XEg>-6G1oORmvy=9$z|6-k(cFK9{A6l2? zQ|c-6s8JS9yXJ}|Z(9z7Rzh@<`ClY|pklwotyz7oFr@YwAZaDGjNn%++U5K;rUBF3 ziM3{9`aO%(D#yie9fB2x=4Wl2D#UTA^qi3atWDl6#W4I7sXTcrwhx z?O1GzKjaBt(BU`Ya%WF*?kTw^_H6$|3hT{!O$_cu7!lO(Lu_JB8j$Qs!5cynTRu|b zLL}AVc{E|+G|D+4I6W-Ro(dl0B@9a(!!=ID`=+gy`l3|(W$q`@X8~c3ld?*euf!N5 zNUK!2oRr2ohDetWL^93%I2EyCU}1B^CEcX4E%$JpcSL+NxNPU+ryN~XvT94frun+W zvGfYY%4(~KJw7h0DdZY%swfYxBGwRT?evQMerOjxvCdV1Hd9$KU5Zq_aNgV2oKsf) zfq1S=yeD&i2yh_LB#m>(jV2OxB>4@#i9>_?LdbRWS=qH;%-HAa(>AdY4OA4{3cp8l z&D3p@wqARmoy59D+b@q1yBbAT9@4(PzLJq1+7Px%@4Jxs^8Kkdg%f=Sf=aeO@_)WZ z%!a#%610NgQWN|hVM_E3* z4f}xjk^2&BT_S|4t${p}CZoK0Z8-}P3+iM~Qlk%j{P!sc zRcbSV$Rw-!5@FU+lQGd_T8vbLQ!RFhAjx%$5vf!7AmvaI^mI!L9Nw``4|`JC0I1}5 z*|{Jb`Dja0)Gafm!$mpVwdK3)oPw3SRy{{-@o%niR5_>-ehSt#xt`r}jcequp};0Fd-Ac;N&Ztes)~EcCY`!I^AXG)W~9&v+(|Ql&{XIWL3=lLlTX1 zQn$#&pc(Am#W=Z1pmb5_qf#nt8t+FZV{*^sYyRXK2Ln@)#f%?^^^WBUoD``3-(a0e z7URx5Q~`;tTEf);E7LVmomlktQrFmst!nk~AAX7yJXp-`9%|AZ!e|-co})(8ec5U1 z_;OtdJKCMAj|UC^C$4emzh#|Z4kK$kuK(mH=VIZ1?3***E&G+e|I<;vWt}vbX}j;w zD9JYIOh<4$2z?ZU8*h9 z{I7u1n?LBnJCYccOuyUSxFrC9%wq!q8n*@_KICZU8>Z?CAQNGnJ!4;y2&NLrLJCq{ z>4nl6S1ZcJ81*MTe9-&G|2JJIe{@F@Ygh4U{1ZuBVBOREiK){S_Wje*n{VV}?ji$8 zVTI!idR0h^KRxs#S=Aa4SC`tEB44W3+j@_l%((1}Gzr;883>l+E_WGrQThMltxS;% zaQ9Y5rc@7qD-#yVHXQh0d@Gy0PE$y~dn5LX6eA89}V@pBHZ_2Q8Pwc3J|L!v*bhOyQ9%IYNr~&5cDpaXK`jsD$e? z%4m7%M8cR@!YN9qx&^${#87BkXY7L|*`x;2Wci1=QV z)UN#koT%KU4K$~VmPC)nias3pB&i|u6D3tb4q7S2x_k5HWajR@+STp!e+4avL63&3 zgy$HCIX4$qb|mHkFNZ!MM_ooWj1Uz9nqZn3;Ho{=adgS6pWyw^m4c7)^2N^8_eC)B z-`h(8xMw%p5GXNO^FcVstnKOEv38PkdiWf#x796dIK_lae>|s#fgSsbO9WLpIZRQG z>V)S6V+V&eNHlANsgaciO8pd_2N94B5=Xb>JGf-}t+fwjG@MSVGqt`9#kr5A-RC7MQ;39E?5=Fpt2mz;4!v z8TysMP2yy4mQ)B&UTml_47h?Pb3Hs8iIIJ#@|M84WEIgIgE;-&QZ?ff%N}CrXL2ot zAMm+1#$&Bg4ChPHx`yh<>dhim0+MYK$Lm5J6VQuV)e>vF<4j$IIwGI6C$6o^_iK-%{?v6t!&FHz=afZ(L|KK6(nszVf`o-jhDLlG|JvDvqk6RjZP%EHIg&tvg;l! zlYjesk=)cP5DWHFmylev-Sf2Q{y7wVx?ngcRBTGZjJ_qp_#j02 zfC>U%4QPw{J0D)@ufgU_t(xJ$DF9;i?CRDgSq+S-K06?nl_w*AAotf>+1(kp!q*~l z9(b1z_uv|pSiToYYvmK65DXx{qYF2CRKgFTS*OIgU0{Nhd(T6@1P_KhM#e_BryZ6`Au8u z&T;JHMZ%#i_K&Kt!sq6VVz3X^TX2&2U-RKh8>E0&f9JzLsnBr-7qUmP29kUN|3npk z|1R!O!o8JHO8MjT0JSs#A zexGY?j>A@qn#fc8D#s>l+r1Q((7|XZ6v4Z|u#Y-43!6voM$jhmtWcNIytqRA4T>ox zBK~VF{K^D4NzB{#Ctdg-NaF5)bH-gpxIj*8J8A!Dm??EOmgv~jtI-i^EOn{roBQ$R z^q4adM8#fC&>aVmX)OqoU#5T6R-~4Wv`QwZW1yghIC7geISUb$y z$3(vw-a^^#%iF(*?S9rq@gL8)5t{I<@!C#=I(D^JHj{*xXI-M$hgf|r^94wM9wOv6~bu&`3r`OoSW385T@Fs z(ICni8;H@=wpxuP_&%9qx?pTY%SH1B{=32?&J^SJcg4~R!i?c4S8kAKn@w5$M(tP)0t0=%;sdtR$Q|kqjr6^gEjcJo|M~`HWf8loJ zn701v$M@~l#h>6aIPL?8z8Q7(P_-BS_(_~36i~vWQFp$aGGiu#v@&>K;9=Gb1MLHo zrtlkB+v2p>16KG8GIi1ngWtm&t)Zc%>DpKgMzUHa1hw$VIPWOsAHtkR3ILGmrx^NrB@V2wZO zYr`Zyq4=-r)>DXvs!37NJ5AeM`(Me8=?+V60Od4|(~6~#hytn5CCr|rTvu>WsM5sBW+UbX@o)pvtX)i zQ9%4$VuT%qgzv_ZRPs5G@<()kFtanyM<#BU_DIiz4u<_DjE#e+ z$jGYz=HC1+C=$pIXtkvAvm5-x!|#>R4jQ4vIS%!qc+AC-8Ht)3oyyOSSX^&&IyJ{4 zv8;A{xRS_bBi7rY2&9EVWsSy8@kX#XiQBFME-di+kELi5dqPpMA0mW3K#58~i!$a) zFX(R*cmc-NuET~W(H@%R}y*5+(a1Qg*q<# z&B}A}-uNM(m5kSZ$awI@x=IEm3fVl=sJxFA zjgFg&bG`m_X-eEB`cWz#IJGl!vp+*o!&5M&m#42z4dhao2e- z6o;C}(PT4F2Ft3M017NLC;++W7lDOZuQ_NF=vjiKt$fsN^t7mEF}4--yS2;0xq>{; zlUW=KAtPuKaTg>#)L-kMIOxleG)WpQ~o zu(#BGk~ZfN8kV6H&ym-ps7EJl+(s#^vCzf&a_WMNs%YGH!A1(LPe8D0d`54Ebb9~Z zsBUZ!n|c_tl5$kooP172!u10~1SZMw;e-4Nsg#E;^!ir*2my|A$tLdA;C5;JGPL__ zGH{Eo7JL0s$-#ry4-x85IC6DX&uNu@XmFo?r=u)q3OxX8B+Twii2w9N_j1inyNCOb ziV2EZdwdBsY--~fh*t4MFy+xxqR!eNY6kA(n4lrSP)HXY6V^j%>^JO1 z^L;U)kEwj2=VVg^(v zQ_`lC)9I)8vF4^tq%ksbE5&_whb|hMuXW9=&kHmr>8h%c{E~osft*rSwz(`dN!d!3 zB%awVv^HSxg^d0ZMW-%5GHhl>{wJq^=hc>d2**Ej1Q+-j_~w zlr;0yfLA53{}K;N6*+HJWvNT#J*%@fm{dWMynZw$%{iw}iAshbP$bLl_&t{peO&3q zHyqQN(#y4Nmu&QJI;E)|38c@@MSG^6r{Z|L@7{&UK8{@>JFR!`+IcabFtcd*Dt!1_ z!ejl?4{7hz94M^q2z%_@`JJP~_5Hy;fvW|a^j8ooFN1vG503=UrrWUrMR>aG25k9t zcT6z3aaM)oXxeE*v%#Syf>Rol@+b-@Ezo5v@@XY8??orW5f?p?#ewD00iVIrURBS@VkuV5L7X7%Zbz1uyz zSAYQfgQY70c>@Y&-KIGlWKZ@EQ3@Ig03HRfvWC9<6t79lUXtqVV|y=P1!~oZyN1|X z5Ig1uFOb`w!6P1(`xs|`pSd+sQg*?$IKY+8&ByHl(X}h(w{@!c2_RxE!$dqF*PaTX z3j*tcnhC)3@c>q@S0HwzfR?vtY6zO_*cu1uanU&94^W)o+gx-2ODN!(zmN9h8-I3B zHxrj_Rc~OF@2oo7+9{6EsiB<~5%z{VOccu;0_IErt*pNmk|kD-gfLA4n`I39@7 z0DtTwS-bjaqY~Pl(GT+me9H>pav(wvg!sV{=!|OJ64lX?=>VWW&?N=H`+<94w9DCk zPzEG8OBOH1l2wWT$G8hjEJK_ti>ud7-lyXhMd=yk81&Z594*uBr#()?NN}hRj_t$X z*0UhkLP(NsD6K<)|ACKUOXyV>@S6^#NY@^4_F(A1wNsX%38>i+zAfG^q0q4H(Hl89~|- zz9Wl^S{I=q7BR3M0bq!LN4>E(sSMnrV5(7K4n&)}vsm~>; z6N&cj;T+z(-9AJ}B!oezCIAl`U|x{J@)*IX7~v;&mRWX^_~C1{tfTulqmh_=*>X}= zEPcaJ)lDiD!dOi?K@E=t z1~`9Gfr%zFWFq8OB#6O`WxH1)Kms*bc_K??+_Mp)>coe8XcT6eX^HG{tRGW@TGC*E zbl_qtS|(Bnw=s(Zx$RW?7D9^uxPn$)hS)(Y=0yeqJ8cPCCRi^M|4rtoX*#4nlVm#c zBO*B&Q5M2a9Bjs{(<~^Och+ZwEV?ZY#tR&_`Yf91EMW;upm8<_T%mGI<6@*PanKKO zfU>oklKLd%;e(mq(4bFef22-xk0Rsj&B-uMSzf~O6=jg72WSdNl|pm;)!6!bUL(un zHZlN)3aB&%fcgT!n;v2FH-d(}kmvGvjgfiJ?kBK<^1EKqCF5K7PI17Ut9CgS@qJ2P z0qQpbc%n&9)nSFK;zUeA(;rwrVyc{f$Ojcf_hu#}6+r3>Qmix6^j>Bn*fjnuAjU1s zlaJkwD+Eu+7R$$8oENGE#a8MSg|TN=Gg=E%04mV&00I_W}2 z*{P7qbV zC)|;Wu+@)8bhiYhX%e9?KMHSo$$r+yEq*!{_NvURs_&T}(H5&o4)|I{s|y$NX&2LV z{qw~#EqEW}#Vp9kUgFSZm>cu~Ri$eb7jqu8VGIMTjULe%n}5owtO9!1mS~YWB)Zcc zR4h9{C})g34D7h-lT_~k1ura+5Ap(MQh_I55Hf3L{fjE1 zUyxWq1n_I$w$*VtFjX<69bgdRFnz-82eK!Brq9eisBE;3mf==p8jiI0cWBkDKt`f` zyzLBeD*tkV-P#>3RA2MXKg-R@Hwb8z%y{}g)A;cp`Ac7?am4WwbFAC7bsfc1Y4 z;b7Y9>y9Mpi5Bd+9wnl$?rxW8YLx9sVHWx_(?j5cDRtD7fhpXk-@6;!>z|cb$ZQiQ z&x-HZou}Sa@{}RrX3;`>i>LLU0%Sq`dSCCdJ!Xpi1ATz|3mBOR#lb zO@4H4pik1W$$hl@&pEu}3>c}bXVr2p@!ow!VV+g_hNfnZfoHu<>W&YzP{j!$9GvjY z&QKeS59T>S>P8sJ>zXx(aCAEG0MHKdw@lSqsFAwM5i;1(%82RZBL}&}dWGTr9VCQP zr=@tQBScLjBy%HVN~M_ok6M0?&=`!;d5+TWHsP)`Gt7;$UeokljdHL6Ibnid-KhF_ z40`qG2KeW`wiAC5_7ub-9c$+tlVlN;_8e0@==F^mTWd8_HL!kv)cr!&n(6n$?O zaCkFJ4FLV)v0P4XDnpAr3*4iY*vb^0?fQ6L7e>7Bbc4F~dNq zp-;C&n~6Z;fNWbo>(|gBZTHB0mOeKzDfGbZNht&68AM+g&tn=mE>uDbjDKb`1QAD) zZI~tN8tbK6zPXR}B^4wv=)aB+kWNyyjb;hD`gpnRC%F% zkYDJ>mfsQf>(K3pk=4eV?Js0It-?F)hC7{acl@XkAE!aW4H#g%5MSZk@4#IW%97WE zkXJz)18r@QYHOY&sOp9s41K%P#_QK&%VHH)S$5-RQybyNMo~AAF+;gR?^0F;+*Fsn zo2>b0{948D=8JAkAg5H%l= z%pZ`!4k*YEsYDJ5Pwg;Z)%}Wxq1X#t$2)HhF(vX2FJTVk2FWZ3Hw+Em>5mLYQcD@; zGTv~IAB&3|OFlc6RsqMntyjbPMq7ET3_DgOKT&|uooyXzsGWFHjwDi^JSG2z%YO3o z**AmvlV>776<>CLT|DMC<1}Ogs(TuF+a6y>A3N@`IXpXcBkxhg!E-04(26(-K{&fd zb@uw%nQYdHe>0;kJk6GVb_()aEiY6xoZ7@ipQCu{jAR)2N}q%Z^sEtV>WryCxm22? zJ^Y1I$(bouOQzCZRmczj1vg%lDaK1RLt0Aoq9i~o_c`bU$4l{aHb*zNT@PQfS^66w z>4^E=SM*eIn)!HvgL|~F0Mw|Dow1tsN^;*-0(8?sRa|<}1y)W%hVLnN4A&d6Fy7j%J}Ol5;eKbaVx_qzk^3y_dvX29PIH{zN0Z!w zk7fg<3e8K!MDZK5;kxE=TxYm1;e7&XH&6MXFJ-%dA!o%!4%tVl0J+~~1$+XvI()J(4xX;C1g?-WC#kd)Yz*C1pkg@Nb$Rt%{P1f?<>X~ zngf|uFLuW;@$&Z=eOn#QmU)>bTYs`Wi7Y(y`!yc+Z#LQ3>M`NPxbxFPL(T6duWyj) zDKze3Ti#ZY|7!od9W~Q0z6axL89mk3{6J~rX?yo1%tx+e>q+}p6*+Tt0!SS`YKB*l zW1oy_50AkE>4HBumT%iXbL4k1tyZFB=?Ye&Ph;Cw;O(CbtI)eAVOrQJ#sv!ugQpj@bcy1tvXLqFWM}=RuH%Gssr7U8=;H6vI8+_p1oK%y16Xy; zGDCT`Zb!|%(~#)Do`nBu|Add43+*0-TU)EXOe+Y@5-ojq$E;tJln2ud z7T5jU+AhRQB^QX(kVHU{F_$@F>`R>N5=4{Ues~E0E48tyEuk z(Dp<1to`yw^ckk+%O=4NIBO!e6tY(c%i6Y+I9tZ%}Q$>c7`^ZaY#Z{Tf46I>?C7zMlr1jYD2$W|DGN5?Nag6NrCHM!J;oGI+qsk6B6K)E-(rVrYTdTrw9lP_@ zgy*H_YbmZj_=7v&vR-WD#M@nLe#kGq*z($>P~D&(Xn~Un4W%)lkH4zOKdaAuzI_sI zCt#bIP!I_6kgDN%S#&Tgb6Z9JE0!^owo=QTf2|9BrvlhtdTktej;`j2_roG^J}CpQ zWkW`-ui+)^`qxr%g!M`I$%h9*D6(H*lr&zb#Sg>)lg+ z9~Rzw(F=dbxQk`{t|FHecqbU@_bAj@K9H`BXnNoOwu;;}P+}$*fU<%SF%EP4yNWy> z(n!JacPt~#GElpJsbVX?gEbi4#jp_z(smomPLkqBZV6z|pQh@kDU0&ue-@n_0<}qov zDvUiUTlhUeHDukce`U0>I}1-I7ggJQQ8UX3uZZu7nbw}8Rymnuv2mug4l>7hu6=Bg zjbDLSIJ%C%s#cMX!L|(jM*M$8ss1tAyVh9SPA`Agg~a%@8@@Xf@PJr8WdlIf5rRpn z*Y2j44Ik~XzkxTMQ};yUN@OX%b~Nvd0x}7&pmOH*`J-7)KZO*3>y6`m`4f%E`D?Ze zh7g)$6@Wo46d5LEOTVK#7^H(mRcu{utz7~t$r98q&(NvBuF$&Zabzz0rMOFAJ-U;GuS-ASruTYI3F(p(;=ha&oGHwVkxd(Sq5@=xOo zQ{z8vkLQ_w#J;HKQJX2V>iaHqnP=P7OpC(yI=OfpBS zGS4IzaW1mq_LvP8D){>GR@a)2@`+(n)8#1~rAlYBS8xg5yhZ@YZXLYc#_ez*m4<1> z6M3Q@(qc=wrba9K{Q8c6mRj_K@o~(n{x#ZzuME*he^?Yj-ipl<_Xbz0QdrsRE`_qP z=z`q2Zi__(e|8TCU6gDrN0Lm*-hIbu3_qZ{WJSJ1uB3^c8s=V&)n%L-bP#sQ0#JK-wMfZPY+k#2i$LlUO7$SzyFVm`2 z2$M_PC&FK_`m8zPzAI}yAe9Cjy5&t`w2$%fkXGPBh=gp=36!yz_F z{nWi&>%~rSY}rV=?(EMS4+kZ2t&ZeH+5$Lx%J6rqqJ`q2&M7MJg7ZiXUg#@#g=f1b z6J*N8C*vx+1YDE7sSj1BjcQn^rX&;Rw!CTSwtvnE{g^mtf~CO1;NNkH$@C%EPHOyo zzQaBf#f|RU~ahD7wy_Wn}BKh z$>`7w+WFp@Qbb!p7>KAC*v`%d(<|Wcg~+u(*P?1$8)B4(;^_}s1nxW;WqQ`stIs4u zG-Wr+5^t_-lr^2s?={cn!Tk$puZCuw8ZWCW@q$^?g@E zS5%V5*7${=UTU&kyFMphvQz*Cacpg@D0%86loLPbZRF&mw1X0Bp^;43q>cbbVM zbQbDRD(OrdMj-~Jkr{2Mlyu=Hd}x{WDn?h4BN7zKU|2N>3QcPWc^P9PFME>`^BTE? zD7HdTF)AsvYF>!~%T|H)CVrzXsMt=*smF< zawZz`yi!}aX+C@KEPy$7Pp0AZd+~QD6%boAPlu?%G@Y-{aj-CTIX5%{MUX0ZENw|l zvt~kxUlic!Gi&l>%`_ou)=84tKBYy}iB#IELtK1p=rOdwu+;F9TGYh!w2Cm)idsMU zy|PO6P5dO6#p8&fedD}Fjkh<6Y~->`vJ%<)Z;e0H28MpKCV7W73R|U#=?WMYJvF0! zTEpFzG5>`;bw}i>j0_&3q?5s2;qr_WwGXXkomIwOSB645pyc#ttouENWpMO~b?#aM0`Kz!s4v@jZ}@p9~otb#R& zJgy|ghtj`|vR+OvNCm@L+3*#xovXhhza`El|sTya+K7}tFZPt4qW#TxHbIml_7 z`Ke1Sqw;jhqlZ5C^mfN9D2`YK`;7Uk@E0+5?=&e@S23KQ-AcMirxBu?sh6);F}=L! z%eRms8BBM01+Ju8upvdyx@90&Bj|W1=M};7@6pAC!y;bubtspR&a`x{meU+{|M>Ym z01euJq<+;;a(5Jg_PHC1?*bM(JAR>By=os!u)f*nZ0T%P! z3YIE|h3^`fU3@QDI;wt^gPN9dLrI&f+Dd4A=z|s%#=08D^KjDUw#g?D^QBBV`(0Pc zv(^Q)Fl1OpcLYHq#g~0cuFrJiB!*2;y%*9fGYL;a=B%-P!%AFqPgoC3K6x~D=J(fUN?HS#E6`s@{-L(+ia~0i76vMg` z(Jd9TzW&T1;}?aT!0jS$=gTRJl1{iU2c2#Qk@9daE>IekgFY zhNLrXVB)Lygnise7D)~`FlrpO0?-x*^LhkCAdGP8ooDAp5-tK#+H5QXCHBY7!~mCA z(njV7nfD^H+%@6cE(xq5A-q5JR8v&#T0G|*Z@4`b_c$2{mP?dOgv>g{YQ++sU~^sL zd>#eaWOC}IyRb0E_%5b*G-I|3a9~J<`Riwdd1XXoW<+&l#4KjSU1uZ!JSQ4J$3`@)EbOgYsD%2{aKaL*oZbv_TdhB2!yu- zgg#^7GmUgw&2(*gD%}o{0KgZMGly|2l~E>x2%O_di8=Ze62d{H7Y43vkkGz-;Wj29 zMq$esj09=Q7KKq^FVef30^Z70}p z#rdu>AFeoKnVTVxM?<^{67|x6OTl*w1t0@R3Q?i2AZlq!I-a-Z3onNiln|)5Cy63* zSYmqFbzwyK3mFPmy4OW4OGRuqMI6M%TtdZZg3yb_hkQ+}dHn@EOU3cmnR#D}rG!dk z3`*p@OL*R89!Hjd5z~txxNn0oz#FNb6v=ZJIm{KQb9(cmD4l!sX&$2yjjW~7_Lou= z=U^8XotP%la;3IW#E&PY?_A&jIzS^0C=ZuF=4(03n$Jca#lt~lz7AUq&C;O0a?vJ~ z7g_WHFt~^e$~|qg|Gtj11|<)(WAuom8MrPzO02{!ER&o?PGACk`;urOlq3MpMbQ-V zB$gZbg61X>?4ZQuCYUPkO1NQ?U@BD6J%F*HNG{G8Klc@~8&L??kaOoN;2QFUW)2qT zvo{8iXeQ7=6$tg_UPFFrT|+z%a^$ZHC@%Uq4z{TxDu@D)5h)s-nYRnp@i#J$&$8&- zahLR$NFOoPQlExsKMy%vI zOrJ)g>_+0wM$%~K6nV9HuR7u6QXd!F@tZotS>)WrY}&;9?`~jPZ<*6^ZL$ea6^x0} z4gP_0jW;q}38#^_i*sbwYW%=Ca2k1=$FaX4XO;<67b(K32%a-|zAKP_%hk+JoCI^O zwAHU0O=-IE%=xBS%P@;B)+yKEBFLRhclx|d;iLsU35yIwt~G3zOM1kuE|eb@wN?bNxI_~W8P&u?+J1}Z|*pi>U^I~XD`fV4D+!(v`U4o z0db3f@scggo0LRfah9SXd(jk)%;5F?tQ|pc#A{G9aWYJzZ4=^@%>|@Mc1JXgllV$` z>4Up%(r7{hvI=;O=~5mEr;!r~yMW~Qq)B&cS(pdnLlRI>jd;6{$If2T%j`HG@EeBX zM$*90F^dZC^LrdwSdhrco=MfYuPm*1MH!sdS1d|8C?x_9nH-cejO-l7&0LpK9npo^QHNoZDUC)b~@H?ODZO@JbZjQ z>>MNJDl*~}!@r#{;_W-!-9G5=>*G#38YD6rVmKP+J345`YXM_=y^!?gIR@2dVG#!w zu(N%((ngQ-FD$w3OVdae`$j^?O;9}30UsA2L61L|-q)UdF$e=3_rqRVZvnaSc8Gbl zod~S(ezcsAYTWs_`nf4ho*}124((IjkzmfTO0ybO6WZz+QU=X2EYoVk=ML|~3NwY? z;I5ZgfjUURIVmQna?lAp&1Zty?03qPJ(!eFMA%oCDX%-K$+!u%|v zlHVSF>K)gWBJ@?k>r0*=90NbVg3vnhei~~nk?NM2MgEFOrH)0kc$FL(twLW5;yQYz zAFFgO@J{nd2XOW+>p2b|U$h^gO_lD4QZ zRNjhXDSzDFw{f9G#|8tuY_;Lhx{&O1yi^S9p9dxu2#K!t`{2+huNHDQ?2-wcHO%h& zfhBHMPeebT8GXL+`+SxAnZpRFg-ooLjA+CNLVx?&k8|?T*ays%cQ21WdiDW!4*2vw z&OU@Fh=>y9$AYONR}2l;t2QABZwZmHmCTrXd=txwj$=xR+oX;#5ftEb! zq3=JTDUwqf^76f9`1unrw3d-fgq^hRvyAbUod1?W-j-6&mdfgu+TE7M!)>iQw+f+c zogQl7D$~e=ce-j7h>0EDX&c=etAL-Ka!nh}RM>2*+YYN=ocyz%9r6T_?pzm%p~%Mg zbd6+X@A%g3czoOmc(@xRw(I5V7~;Q+1xwuFquGsi-3`gxjWgbTS+|>r_tl$)$W3kM z#8vlk%~zyNiKc|@JSVnHu{~rrpMXP1WgcPp{9dgwbsb!B#@=tfTW#`J5Ov=#dn;=7 zdjGlzH6#J8=PlRC0ycc;8oUA=mNi)>nfO>La(an5(kxo!yh>_{(f>keCKkMij}PaN zJIyfG-fNDl;T=BKS!y0}P|PFG-H3k6ZD=(x0KwV5jwoKEgFVRI3k(NKEt zul_y`GSu~55J9W4qzJ$5`x2e*fu{v>QycA^Ev8s z#Pu_+c=Ps0r()mF7T`_P_@{z$oyIR!6hDK+IO7bpE{79UjNYi*v!CzdUHCma6O_A9 z5x?5uzB+8V@cw>6G}~e!ei}M)`Ge<7_St1^38>BF$}wJ8`k7dC`Gth~X?~!|U#+nF zrquttO0u3-IjleopCPsKeYO11Kddmgl6-H4Ns$#AO|-Etxtf0enQWhQsMF!zvC%F3 z(bTxu2Me`FNN??PQRt6{I$54ySBFu^FM0Q-3s_%eaPQ+^Il1(CWWfTlf9*e3JgPRH zGN35<&|nVF$L(ypx5AiZi@jS88&h9mkgIjIAI}GD9jSf0ZvUku-|s(u9N%s+`24op z$6jl7Ao{*39CtSGVkWU=ae@%tS9nv37_Y=i+U&7Kik=m8GfA7T65f=m6R@;; zZ2ZD9!=@~gBHhBf627N!$NxqD9H4EL^lA9mk#9!`gjSAmW7&xx{6c@p_ zSK$B%_)IElzXav$ajcF0HgG_P5)sG%;mja;<`FB?etqWHBHqL%7)!$yN zDrRqqZUn*88h3x~DGYm>Nfx4)8+D$2`0!-$Zp3%&wrE&$FWs=@ z3i*4&m1LT9hm(AKu`Okr8H*b2ag%P0X6c^7QjnyK-)9m-l{qri*UI$wBWhN z)|1Eh0@li@s!NfU($c@EWK5l+oex3=^>8YA4{@j`^&63;QNnIJtXTN4MST8;bf2(x z*Yp&rx&imdP>=V~_>=R=={{>Xm8_43qk3lVqKi8 z&MksmVEfdQ0`n-Mm-EfMSuPAtDoUiW{cS~)E{-_h;!i-Wk>(UIqelzSMvFk9a2YAq z=2(Y(XoD;L+p$H01=vsscTDLa5Eu&r&J){=sfE#7MhZj$?`9DS)}rZQ6oaHE&OE%J z{^SNyHBlLE0;*eSfXwj#y4l#o-jyi?mhn_m={kYrb`uC2wO~&d%++^A0ZMTWXpoLf z+Vz(M9Gl_!xYVi@r7l6AFs(h83P*UnHGl0tEk{ zwyN2s-3QcdGUb>IoLXUNDZE(lgfd`~mgk3>zq-ciAXqVFp;!j!d*6vHf@pFaLt>skbNgS1j@3pdAUCA54l=O(PbXa^>bQz|mkW(P{DsDqRBRL3|Jq7p4OaD#1! z5Cb`*ZNHlFfT@*O3Eq0yi;&tp;ke zEyFj|*xdDQ>?u0NcNVM);V&$ygCJS=x8cJ|tx)&Stk?7w?@Ri1TAIEgg$9+90*^?S z9v}r8Hkxl&^d*m~a#<3DjMD7e#E<)N1P$JpVHt9V1l2egpLDK4ga!J^%8o+0Yu2%K zi3X{i8pIymN74zTvDO_&qNuM)UOyX2_hU-Hklg~nyiZ0;-9(d-P=Kp)AU<`2C(a(g zj>^8pVyvdqjWw;OOu9Og(cEM2Cneb=)ymedzw``6{&MvgZexuKCr? z=bx#oO$B~OOGO7nq(XK|-drn?z?`{jj zu1)v!PYcz*)OeJC?H+$lm#XI4Cb7V@Froyz%6u2HKtgLyPVAPWSLJWzMCr7AIewK+ zF2URmRg?!Y34V{JoUeSV=`P@m` zI;?OOl{x|}tw+pwWfTA-k_|(D98DDI+3%8q&XDXGnbjVdvk;kg^=nT-AgTl%FN6MJ znr>9dao|RuNL2;2W|XY*Dk>8ky=)rYB7nCZ8hw`-(ebO8*)I_D4<&iLJ!W#@PbGO? zFSgYs>ciE;g^bwsLLPey>^4g54S~1~J>o5exVWT9G2S>uw>Z6HOu^RJnPNMEw2z!bfrd$d?L2^nDcOns|422-P+3f#l zFc62*RgFlTc@#iz#`|4IGHn#^2^~n8k$~tIBkX>S;}VJ2_CV&jqM(}>)Jq@qJTl$c z76h+trUhoeIQRo>(|7PQa5U3>pqX$+_?ACYf-^%IkcqOM5v-V@*O+c&gZDyTGJrAj zxh=oHZMvH+sH!8QRwJ`fP}OrRQ(l`Oqa)+BZFVAKa*-`0Mn4^|B)g6g6giik;+7s} zo70$?l^+SOVWu;C@`p0!w05M_d-10y3N$a~bd2S|gMwz!0a;s$neyPj0AT-tg#V|B zHT5?=|7Mi?uLu?RuE3pq^{#xlgTV6;D+$7 zg`{fOJgw2wdqdd#-VlCrhifHiV61JG>CyK!Ge=>TF)0^Rm`NvR6lJE7{mT&6`ppo2 z!C>Kkqo`SgA_zBxqpfJZ$^_rJ+5R$w^L*|N;o{#6;WirS%A3}ELKvoHSJ6`U!lJf) z>BYSvoVs66Q;KxZU>697gxz^hnBWs@`v=W4L1;ED^J={I@W(;*?-Oe)t<;C@za9sQ z>+mRdu;lpv#VB{&t_x@ z9nWSJ=xhJYDEDsC6rf>x z?2Z7Cn0}jBt9f;Jv;SLO^+%^4-`anlbolYT_qU0)Xa5!?jOC|xcP$|u_zy_2w0}^&vD72u&2y!l>&a?X@?b{cv!vLm| z*r3v3lBF~?jAAZiSd*-)0Q0%Z5op+<;8zntPAyCDJzI*UwiINgG=~VDmw-r-1QSK} zj;TX#<*Cr9N(I=GD4Z>nB_8~JYW6=A@AtLe3KU(}|DkyQL-GDAidXF+_f{gV&WE&2 zkHhPog60_Yzf8^k-#&w2$6UxR^?rG)7ejRa2qmzcBMZ&Y*vyc-vbX zT5vcwDJViXtTQ-wCmet*{}6L=ZsoD46n+zPg+9T>TuGM5BXXHh6M*iYXHY#??#p>+ z3jUULOpnolKPle7OwImR%v@vzPUil?%qxD8xsqgfgTW@g8YGi?eSrm>u|SAC%6@4A zZvXF?c}5SM%#HWO{NGW$lO=TgW4|cgUqF-M?^Cm-OwkK*I8_#UpQI=*i|dycgat@|DYKB9i6V-tyQ#K)Zh({s7-H_#^z`_k!-P@P}Vp28}(@ zzi$~_bd~=%;SbcxdH(?ICOew{0^0p5=>D6a-F@ucZ=fAK_6}aq{XO>XUu+rtKk?1> zS1)%84%!L)Hl6z0mcj4v%&#p26~6m|?q9YHD!0=Ne{C83GiX<760ImnO`n6JX-?1E zvJzRIt#v&BFX%$j)FrR*vZf0HKZH+Um ze{LQ8l}>Chku*ierQ)&Cpp*;+;d148auhX$Lm2rcD`wXvq6vAmkiWWY_Q%txM_Hgl zipNu7N^x80&1F-Ol(1GI_dov947llMixrXyM21@!AC+npE9EM+{IXpHnkW%De-ST;F z!p*fhYKjCEcIrX~>a96^HjfH9msgf4NY>7%MHOrPxhQ*z>rJMS+fznFAK zL4J|PA?!s9fVYA(LG)%eo)8bU`G`oYqeYGD_DY_LP%%;F3*0!0DWUO8jaM`{Avf)U z-^_|-?9N^PxG!O z?{8+<-)`op3Q~053MsV^BOUaUIjaOLF<;>-5Y(pZAziDlFC`oHnOf3yxRACb{2 zAijY^z%}pleNLZx_CW`KLBLcrUOUR4ZzuT)v7uah8mFsgquQ4d>3nUWw(2oL2Ig$Q{&@3G^ zk(Sc}bVA&Ia25v_l4kH%wf4;GzWNXrOst-okDWmk9AP<`%i`!)I8#Q`I4~k48JJVV zz&Lz;{`eNH=J-P{>81G@74nH9qTGAz-i0CjFW9{W zR=G)rxSb&iu_uk8luLry_~`tL89)0VVKm zDoJHCBaUf+3*fM90%_71VPD*hwfmb5|QvFMoOJQ*O*DF`CAD+so$OT@Ja2;`>+ z47%K7_kX-I-2^5);gK(6-JS$A(6fUAQ9uxE+V_ulX4cR&SUV_L;LqC(j@_FxuwnbT z{2uwDDfjJ^ocx=OC;+0B*k7L?dXuimzlkLUeg5ZdcJ?O(%oFe(eNX+5M!0HKLQti) zL2Tf2DTk`^CV3FmZSZrLK)yEbwrC&-fkhKP0^t>~ssVyfZJ}Ci@NxV@+w1dM=TPm} z<3z(;!{>FLQ`N?o;~#r&&g%oPYE00S7y5}W8X{C{%m^nIhJ`Nv`8JasW&HjknZjs= z#m{qAcC@81TN_`&Mpl`eMM{ozQMp*6e|+fzhCWc&dj3w?Et~e^iHqA>zd^v|$}4*Ym#-K8ahv@O0#>c}{y1@u-FF|w*8ASyW(JL9S5xei-~PDG8Uo%DDCyN?U@xt=h= zZq67H(QsLKKWRmPp0)qlYB}i|^H(E$RzHqFo%X*J7T~4X|Kke_|33xs-2VF2!{Bjr z|C>NhKxiPTVpGX4Il^$PsdOTp!+bmkaJnj&&BwSw+JS369VpI<`ZJw-W2R6jl7Izx zT%nbqV5^i{#knI~hWc6aU)FS3RbD!6j{g?uiNC(_-v)aAtC~*R6Q_S2==lb5e5&)+ zv&KMw_>i9O_TdIxj@Tjc?SK#Ifgi@Jb>EzR`Os{?BkK1@O((ux`1*8L&|H1GN7Ul< zaC1Vv>pqT-e19Y)9zLWOeKUr)_7a((VkUs?*m^Ap6FX#08Hev)j?l3&_0==FAJY5h zK3v9=uzz5}F-%d?|6@%@ktSMA?yG@Xn*tmY*0cIYO{YvQ-o~JDFxq^korg}&+TX%F z^LeYjfr=y3nM%fdsaGO9@_5jWvG;hYs*%S-!Ci^aG6EZUZ@SkDMa*P&;1bdmMMj(S zurx-y@`SS(2Ba6`PjazaPt+NZj|G$RF(iYl^a}c6gY?x6k{$1}NH**sIry#IpnCS} zsEj(m*Ylk}zsUB{ayRopHW@<>J9^!9+8(aLBaIyIGzv<-@#c)h*U}pFA&wRJL}*}^3}%3Ect(zBzpy1hdb$51N6h5h-EBU*T>6)Rp8vWA zzVe}LmQ%qbE-c@IeU7|2@B>5YJ=-nS;g-|YIU;@mtLDY zX4}{Vt0@rMb*y9z$);fXzEbywMJR8bcdp93%q^6D#p1Wsz4DP!x8As`(_``zOcnNd z%Fly(9p>+m)9tz{5*O!CmZ(?e>Q_gvirWsN2!F>5Fa1R3+>QGL6uXKDQ6-ru2`{#B8|#2UTXU&MCGD>= zf%9IwWhn?kTKqY`I0KzFn=)owA^j4tk-=Vdfg}ux7S0*iRZDCyY*=TcRvJJvI$MYm&wc#;0$2}4JX=Y<1x^}a4zx@v(q~m8w z92m&0i$60lFP8^(V#_{i1d?&DC?Uco;hceaRPCH7+I`lgTf}7*X?O0GRllX^@@7hY z*M&u#uD^almWThzMwaE_wRKXwlXqvj2kp(*M<`P_`-s7Li+c_A+D_lv%N2#Kvc|FB zA9l!Z;VkwMlG7fgcpdm?juNuJI-cQPylqW$=kq&TuqNL)$A``R@R&e@bzN*RFS{qR zxU$#pLug0+ua7)3Zmhp%RhBMpj?{}MpZcJpXa2w_ctCkkOolMyzb-sSH!c%@iFFj1 z_vmx&A$R5{z<2WQzyegP^DN01M;hcYkR3jSeuGQ}Q$WyLfNAO*$m<3H_qjIsf_Vn zq2ue?phoLr$QCAy4spdHTX!<9SdbQ1PqoZCpUo6OcLc!O6qXP~s9CZ>hGVY-rH@m zXU|84x2PZyJkk^&9rPZRT`T5XyK)98#;eAB0K0I+@C-_#^K8i_gh_1jpP7`nO1uYA zpeoWxK8kZL2!!SF70C;HxA`J7&j@-d@hEd_7GDw;*zArT?9ihC62&PZ4Wk^)pH9e@ zEDU;Rs_-Qr>Fektx_2>D$5aXg_z_zy3mmRy$@CU9YTS9cqXgbc1xH(B;xUS;CIl8# zahV2up56%|dWof|C$=(iv#}~_Ryqi+fE}^D$x)Ti!~h8DkD7MK`mU0$0Lcaki7PPm zT1um~A(S=jYA~V&(Ykz1)}R=g*s3H`%WR9H%t`}#eepujFEv!cFYsfh9B%D%Q4}Kw z%IKHqdy%1j4o`pH;I!`X=A^P#nC&wyK59uMOsaJt!N*v9*&;=hJ5kM@$S93sUCK0;b4RsSU>xB` zLF5>*F!#OtDIY*j#UBt0QTmC`p`E}r9x}O?)#q>|PP3e-q-4>H=YAx^#gceS8ET3d zhaRrVr-Y*`*RQm#5J`Wa(jhu+ff?;0FR+Y%_F%kSoc2h8%NvgjV`~U7MklY8lW+^@ z7@(4K)r>2gKL#&yL*6=v#fu~nNJS1CA#g_5tGt8SUyVTDqV|p-k40GQkZm()1wy|( zOA7Al<7u>GaZyRD7VFtH-UN`gT)N_k0E#>LOz}`BaF|dx+yp zW0BxS#*3z_5mu+hWX|qg0t4^dG~=^EdQ}^NOP(=-3&u!6Rl7U)D=*Z*F#IQedqqdb zW91**as!p1ES*{JMCqF9Tz*=}>(XUn*&lE+IAC<5GrjJ{cX}+l&cCro+o5PXs^I9V zxkPYgv}nT~O;Ti^TQ^8wuHX`!`EKz|8A>KAnxrd{TLwS~k0y6lPly zM656EK=lZU1WpG@iq@x*#m4onc zuq7KWSh*lDw-A+HAb7R{{dzf8BSnhh* z3yUxbs&E&DFjE_-V#U+v3}9ygh@SwdPdkmRT$n8#$Sx!7DSCtlI+eq2XcWvwJ#YaU zF2Lla7nxQO9<3LiJ33Kc4pJg)Wzd}oAOZs8 zYRqFci{L-Ody&J%Z3fh<8&57}*>08~eZj~a7!ABm2&YnRUWfweC;A7)v~MI3bR^op zlNyyvB!wnfZ9Jkri=pyL3fhhH4^LXTL?D@yB8&*!Y$qv@bKvz#7Jx0{&udr+L?(uQ zNEX${o99Row#DUDOi{>8$wf^O%!KmVLRFwC>9Z**$0;IEJMqX=N!wKYjuduOJ56qE z=zwW$#fw`B{B4&s>oKUEKAt@k?0B8VJeww~$xF)s@>qnrT;upCrgzS!`$9AP0mPe> zWY+=d8k!mXG8z5Pr6Gyw&WssJfQ(SCht`11!i@|kXhtGqdOj!FGsg7kH6^22?Cl3h zQmz^Kg<01#S#^TY;|Ii5P=TukMVbVfYmICxu55rQwufAnwrLhIfV9~wqe~ESm5>7{ z%&uG%Y#qzV8KWD%#uoJF#QMaeGNKNsmK#wqs` zKxlg=D_=>_1;B(#g|LF6fnKzE{Q^;9u$oB$A{YyCy^vWG0N}*Df)?XamSpx7p;VQS z2IgM^INx7CjJU=K=`W_-KqPZ1vS7+j?!&nYD1jZJ>?`84Gl7UTpc;E*DnjL-8N(&_0@#76bm#`>B}EzOdZn*EF99<+ngXn2P!XDiBPE2%+gtZ&ww`&t z7LZtvl#F8yK(%v5ayr67Y;1rPU}wYVsVsyzZcUonZ^%$UU<3-V`w~>RvT{#=Mpy%o zX4j->pXD=bbA=Nx)1`@(~MxKW|VTKWQa($DEwI<8Xue=94Hj7MP#$}$3iR{Uy)~L>RtB9T!7_L!Yu`TwbK1% zSCJ3#=t!Sgg)HmkK?=)E;E}(XI4rL_-g`rB_8LImt=2+Sy01AM>ep?*uG@crLzvS? z)YS)NDc(QoqqyxO73n87?5FYV-&ShE@4|*#F+{gGOc0w@1bU#< za$Z^~Eg#u^BIRI@Ghsm%H9N5PxQmjWx#o9H1 zxISQtIoL}%D9$oGhlpbrGt3v*&mc0WuQCjn9m?q&;xmP_Nxgy@c;EPY$u!;UCxr2^9nnH1)5497G5*zuP_?R!e%Fez3Ghgi2_>(6Q@ys zbbo2Uez~~RcdTZ4yk;4{?qHm(aZJq>OEU?RL~FbS6F+NtqB7>y8`5F>m@!od&hUYA z14bW)ZDLyIqwIFhi3e2o0T2Nb?VHJsgBZ6Fp%6n06fdq1%L)rMS~!bS(HD~-+_(9G z69>0AdzhkP*He9S;qH3V7rxV1Iny^?)3?6U8*37wx4DU!sI_mAzfl5eIaraI zRBTi}sVHXbg#R?0CGeXi@(U;UDV?%Rx4BG)Xaq%Fp-kj}%*JquJ@y=?33%}y%J$w% zhaovrQ^66I(2L6oo|K1f2!QVx9!4>W%ptgo`AJ4I&chJg<-d_jIpPYY%uCnKOVmO$ zBj|)Q{4D$ZNrMo!2jm^KtwK}g%3cKIaQekkKqmtb&11YzL|{8rs=70h2~qq|QG5UvZUc^JF?cI*jyP3Ay&x^QWsSm+VoPjC5fE*JH^8iZ9Uf-D+bXzyf z5DEqv3QR~4Xu|}-vl7I` za^{%;T}NlkjRdP1iGwo!_w>z}bC`+?hF#^-yUL-;9;$~nGJ79CBI|OXCI{@RN&p;Z zP;(0Qgk}AoNC09bklSWZbqkORA0TOOA>~M*59acHmq32AifYG;CgTh=pF!>_KzhrM zit`LZNkW$Y2wRoo$e06_cMZ+I0Y!`ht#U=k-$_UyPXJ0N0fB^lZ?T!P#t4CN$izMX zt2!gmIs>haNcNlzG&oSv;^P=SQ2^}g$8Q0X3s`~s+-WtU+ysFL(Z9;^q2 zy#Tj>hsn-JArG*uG?0=TP-bS3l^&ot3PW#c!tdyLMvriw;gC9GlhQw98DV-)+T@L# z91dH)+&FqV&$dXsi_>;QuIoI%?TmDnfTgj9BD987D}k(0fTZ>vM@9l!KK5Eh9pF## zy~htz$$5Uz52(C`RDMLRJcI1G2IQwea^pa~D>%AaLox>e9VxI=oPpzh^AHN`wl%bn zHI(qrSFsvMhGL8T6!v~NQQhkiKOG`siGIF&6ZYg)#1-bxx$hBUebX8+%}YNm%#6gJ z8~HzNT`wP*c5vzoW8u+kJV0p+IM4tEA-bSE{r8{wyAuDQJI$N{gLxb@;S9teikeMPPPQK7M0WA6ft1mSPIy<2sAQciYMt4Cz0! z1zoIEgZUkYw-)Di)YGPya#|Lg%>)Y+Q`sz+w5hs1HWIvjKaS#1CQ&#hI`AGZ(3G2c zN#QbnIM8pgeavPajZ5>S)nz*kPicN##%1x#;kK}c#bQrjpcDz?!jWm8lPDecDADm| z=?hf?lrfAG%SoAHtEpvuD*d;4vhjSGlP#O^0@g)zE8az0NhwCt{xFdwj&BnMF5l%; zFe{#|7MTX8ur}tbHizW6#|oYoZ@+A_iT6#P@;d5$%^5www!ol)3F&@;b1 z^*CNuy6P4=ksluBZr0)M0M!`23ZyVo`Dd6$EA#2IByN+QZ=rC$r8B)4w%NwZa`iCPx{8jx)1XeUZ=^()0=24b)BRL&4vnynUG zU0;`B5|3M#21hWeDNCbOz3b#9lS%_s<;88Y5d9tf{IsI-(Q9+Wt-9d{#Rdgc+=LG6>pSHt4c5<1u$`Md zO4P{b$shKOTg<+b4xq6UH?pLB#9}I(;+(8l$CKIx1cHdzXsJkyhc)^!r6h_0X94}B z7N97;m_Wk*Q4+@relheW7PC`9fL1SI-_oeExrChz3>Udy>}J^xd*%oUoFW|(`(mGn zw?dM7a5e;i4>7=VQTGKLvcXjbb*f!dKyFpLZiUS%FDzTg?048gEsbdW~G+2N)x z3sHZxuY!~4IpkBS;!Cj}$KGI*QNv@S4oo7%C;3py?!+E@W@n&2oQUUNbNs&ud+V>L z8u)FO8kiY|VL)19=*FQW42CX&p&Mxdi2)RlZWy{tx?5UMKvIx$2uVRoN=ZRLVh+#y zeb0H%TIYxJKkT*k-kZB%K z=(txQG$I8Kn1W+3m3gFBlM6wW*0v^TvO;HxD%HPI|6VHJ*PKjh0Z=AY=W4MW4og0M zDwI)QYR7jqJff$h7We$ximjk^I8i~HEjTn;b_`J%ec{M??nspA-;l)h`-ml6XOW{F zCr`uz4C8n&rXt9Cu3@n5k+D8dCP@3f-dygpapGF(18PvJtF3$vb2hh%v|VISB`_K8 zNC=5?Ob&o5n!lF=J>?c5u>d+j%bhp@ZjPGKT$;Hn&OFScyI2pe=Je`kq?r#5pM)0G zvC2x$b+Zlgr;5dE?ZfQV*iI95VJ+OYQ)~UNuwwyg3fiqTvU|=}u~MCa_YEk_QdeX_ zGV^kbf$c>)Kip%S=ld*WsH5~okD(RguDWI#RZQR-xdQa@C)sVI94f4vElfGYcSu(EXojF zGqVRMFyT19zVADV`0Ib^}!Krg!}CZBFFmuL34zx~~cAUZ@ zDUt2u`=7Y)7uEjJ+3DR#7N{By<9by@7T_S?tT*}7=v7I9*pAHf2J`ujXBk=Qi@(m3 zQ&zICDxTapqM|+wC$GG!VhwZDeXBTAV=rFmeVt%9#4sDK`MT}_(+81BJk1`QU+kBwv><(bEJ7IE3a#Vvv@?wA!?9!p1 z+4GjcAuIf;MhdN}FaRN%JA!h!ep6mehc{#OiapyJ$Q{j_T)#8;9Vb*YpbB|GW!F?e zq4I|J8R<#W6L+?h--`wx-d-d|#)ip=UMctfT8;^QD=R(VJG|#_OUjm}Z^dqOZbzip zprGe#I`8PM<|H=mT4QTaw?oz2iJ-t;hXI+-qY~{XNDK0^rtP9qH$A?FEP>d zf%z%FT0A+)3WmqaZ1|{wd+cN#aZ=1hE znpNmB`JjRbtg(77qXsKf(zJ#u;7E!;gbu&!k)#&}-rS3PxEk^BLW)`v;FJQ~g+)J8 z%CHxnd~DASUTyd}uD}v7%ll$uPYl>Y7B2T`|mOP(dtCa*;=$a?sd`(cszOW$<8z zilQY%$x;CHxpy#qxJ+kea7P3KAyRnZuO#&W>5!}BGyr$3RdOCv%3!7Af1Efusf30o z`#Uo1#ZdVl%crZzyPGM$6u_wP4TY|W=A)9^OhLNI%A9aarxC_puQioNCV5vmyz#a64uRBFC`K>wsX|v!Peslv3d(1g zE1$fpRhaG7_{?zugs_gcB z2g1IqDDf|96{|!tmB_GR-j37g&|hg<_~55&L?37RY!EzD&vHu4VmkF0M)^m%reg~g zFfmmXrNIL9Q=^!Rrv)e#MpHTr_DiY*(H3eb1DWt3_e;mBG=dUY!Sk%FDhvCJSLg&V zq%g|=fviqU<2xgZtAM(xQR2{VVqEmF#u}sM*LjWg$C{gFuu!6jO=r#RxY#QAuvBs} zwn$zoWPrVCqPa&i3p zuu?-V(2!#I-)}9PKjti}7{`brIK%uEKoKdDiqvWe@lO!_?9)Dqeq7s1xKHXk{8cC% z^3@*&U5>9~93O(GX;NsAJO(vxeCuHwz82{L+IL(R}yEax!RkU$yMndvb9M zepM7W56JKYG9!TDul!_1fO)Hn`TaIpz!_6y^r_c3wMQi?1R_Eu61y;^3ED%%Oj-BJTfIF%keg-OyY&-$8%;8BxSV{(j?(Fd_2BdHOwsz*B2 z+5{K5ahl>7R*i34;W>DM7*`{0gFJncI(^eT)eOq0i*|hraV?#FeM@T1=l2avYJk>d zqBc)v6DcX>KgPiy#l27jRa&()NT!rTH>Em|xGc}Q2+F@?Vxc56a0d)AF&TP}fA&Jn zc$&{S=^1(j7z#Q^)rA`Rj%!fW8T!Ajkh=l7V_Qn!@J`HQGl9>NvJ!OxL;7TKoB?yB zeQ{MYo&9l`nU^}azjV>le)In0M(OA|@JQVI>vTsjX`e9&q7f7DZC<#@@bOO&RcYy< zKpEzuBhilI2H6?04}u=+rU_!qpBSbjMbr<_hF(Ig_F^&xd-KMP7`rk`T}&zh7TrO5 zm3b!Bg4xgW>Z<_*px0k(@}h?X#6L7;y?dS2sKF4rX5dN|+hUgukHa*L-+2yAJMxy& zjf_8ZExGTSU{vP(22DTRnD&et?#6-QmgR2Wl8;O;9lJ-oU5q&)0 z(S;Cv*$3gK_wQw5$J|GUGf@PNlq=}Cq_K#!E0kGF17w|*Y zqysHL@y+~d<%L{4WizP`-xEevlX#3%lfFrZFO##+cLhH$JDO`~7(D=hXB06*HLA=M zl{e<#{WA={{a9+WQ4;cppx!F}+jLzX%LwY&uQwCF(;j1tOu~|K$ATw;#Xk@VD>m6H zEkHw(#^<%9W>f|_9vW6Ou2!^LsC$7{^!aP}8xuo5rjD#pL0BthFHp)FMW*(KJhvcq9Ph>iG4@CB_ENYWlI!Fv6z$$mWvY?5l%K%W5K?CdeY% zYVQfiB1tE#GGz8OsCAk*som`NYtW_s`P3GP_^3mez)yIit&~=S+BaToY?V!}J!JO>FQEHE+$s@XS2+doqS zx!nSFT`~2QGEA_jY(eI&cIgpyH8%qSo>jfDcH7jfbgORtG-#ZO7e+}%N7v6OO|q-w zDM-<3HPxY`L~OfC$$oYG@m8#{{?Cn5@x5LX6SNn&YsD$8J>(%)W%6U9>}&N4b<9hC zPP%zkC$C>#sxbq^3&Pn%3bG#{wl81&S*=pEoYK@QhyQ+ArA*CfmRk4$7eN;`R@Uh} zk6L1e_=M4O?))@p*rSX6m7467h5nf``En@VwcE%cY{z(S;-LM)asS{TALV)obvq`; z2r?g*CmjT98=ypiaQnl*ff$yAL(Egs%Ui38EVuLe!*lytyRwAqzl%2qVujI%_)L44 zok#;8$3GTmVmCBN&`}4T8}QKeARi5mgxDvO5Y!!U{fa}>zsSPw$ZLS0Uo{X5Ku<|X zo_O3VAVuv%aS%z2(kk_mAZG0^P;T{OK~~sk9o37z;~<|;a5Yyc9OB1AqwO$XOs20p>A3}^H+aXPl zAeM{h4suN$Ni!21wvxfiB}e+ukqmZ9gQN5vmICw_DZJPsm3h($%fxnk86S@A6_5Ul zr`sxjqIiKl2gDELK$Hg0R34z>E=jaeCz=(m+AL=WTeiC7yEj@*ZSbQZX?B+JGWhm@$DGmKfW$pf$a!WR1hHv{s$Y>Q*Z z3Rl8UUM@epRKAL29C=OPi&TGk-4FM6mGOR+2tsOk^Sg#U-m&xg>Keiq6$t?86#!?) zB2hcUzYVxV3Myb}jPcPh<@m$`>BtM@Yy5jE4m;pMQ8^q225>qC7(1}H|LZKE2R<;F zfc%X>nI!tsM);C|Lb>z&3MPERzGbWu1x=E+p8za&Vo+I0&kA6hJkc%~*p@>?1XjX$ zf>=9iHRcWR@6Y$74@;vIKz4k-!Guh4_p(VBGcFte7Lvq{Y@W1}u||XU6bqu6Qn<1z z?s+vvypW7Iqcf|;O_e_Po0m^`R&dG3{3iu&dpsU?s|(t}ZaDY;>+(*1nietk54hX& z&tU$lg#>K61Ln?+{@V!X$pj2<`+X+4E@(Q&1pBvoC-)XyjsEc4^0^*KOfW!QV|*y^ z@89g8MTQ?-KX~2eY;}`X==TX1J(&rxTf824f8%J71YHTzUON0&p9G!q_V2;@CrSF( zRo-j_VVs3u^c47u1^Cy&Z)Y;2w zbcUiP`@C_^+MV?%Ev$D_?|JH~n{U`f!08X%eRAOc!4>@1KK(!Z+5aDz)=(nF{m|3l zAcDMj=3bYDMo8q=^pc#dU=DcNqRU;g<2$h3rZ`M$F! zAAF23X~EN|H7Z*FEL3+C0hvEsOWEgpB={cDywy!XPD+z?P$1J)p{1plC(*k5vEJq| zolLK7zxci5+}KS{tNNV3+q;7sU%Re|CMwPK>qC#_0Ln)J^$V&{i(dr+&-DV{aXi`f zQ|8BY=5}16$G2i_(!hZq{zs;z_2VETWs!FAEl&WeU`((W)v8RX|HDE#_W{=A&@-30 z)v$DoXtET{z~Mi{)G&n!qwsb zJKBPOWrrO_sWY>Zs6g|d6!D+Fb;`3_YTN(86)56+z|)PGvo*|&y>>a%_Bn=ZgQT9e zZ)Q6DC)0ACP}xd9&AZHe>N4xNo##`3$ra_%d#{5umq2bH=G?~FUdl(v_8LHp6{%fl{}`q;zn>%TRwjkncO95wi~wJ#b|7;2CD zAU_n{`YlFCj|a5()P++*6b%LrJ9f{RNw4|8v~-<$*<*P}`%UUB^hU(dSTeZdOnBA*+ww|huKk5W zpKMg5*92a+28^5Qnsx4cyXuNsV!m{6|8o0vgO)%@G^)==DDJ@L+sgHw6!AGFcGi2( z`0sb`!<(9snw)>PcCpiiRY;{tLzEPJgYy~N|opp6~;<_V26_Z;Sh)R+VB;GptqQj_;Eofv-0o- zWwsa*Lk-_319j8qOTp535h~@q1leB9(K=J7q?P>jFpMdb@9wXNRSnIZ_NVmpb2NpGriq2kVnY0K4hrN5hP!v`<&&T1InfA>mW$ zcl_B~WQV$0s7~5Ps&byN-BIhQri_U(I}u0BXeDYoWAL;L*#uH|5&4r*f66ZY@e52R z;gAo!R;sHYRr?$ioHPEFJ94XDfU zPJIj!Ib|tzR#dR9()!pl&HHuUMhQoenZOsGK(N3r-@d7xh6dRKuA}Jsy=jFrsCd}K zt8|U{lEtT5M1*gYaUNiu&e9pt-5ND{N}cN5;?fE_d^0sgp8g1jGsA(~mSc zDwNDs@Krygq;-ESF=N`*zmznH#HxAI#_=i3^BFw-z+aogY@O`EMb zd?<|_kko8o^z5C*v9M0wKSWDttv>7vy}2iu4vn^LE4*;YRo*g+G9%?Ypal#P8}NHP zaJxa(S6PXie+d(|3+q-*SJ};PR0~;c?ii=m)oQzfTz+`ZdR~?u!oC2enz&bdcta8h zAW#b7c+q#b;bz44_7j+Uo9p+!c|^b)?d%w#iY?9^wmIpg2M=vO3NszcwfQCCKj7dP z2QZz;xleCFM=}3i0S01=ap${}8l+~FtC)Gx}R zv8*3VbCbAI>=3w;Q94;si=;>S`*=;b@i&cBy(5q92OIZnqeLOfMECgik%^Y)N%K!M zV7f9)3$bzS9?nW?Ns#ccXklp+?Gqb;)0{n_?ewCaVoC{F^Pq+?ga7^=}6M zC4q9A|7HZ88>a@4ulmJJJ!^V!I~c#88Y&VQG>l{mbdYB*l>?aEzi;%ZSd@aO>32}6 z=4U6E3XFkrKXL{Mcadysn@hvT=q(6Iqf|c7rSwFcngHmE1{AshVHR#z%ep2Z3TZvb z3KFJl2lZ{$S4&BNhntc|(Dt-KOW4CXB5*lPd!KN+gZhK(wIMah0dCFX7}Njwv+bWH z>a%t5V}$BkQBo_iC*Elr|4XJ-yP@lmT64WANUJ~k9Qr3^w3bQotJFke>7V?o?`uW` zQbSRir^PR?a<|1kO#RZ!QG9T-8>l9oTcmlW=+e4pWOy&BdEyKyoH%1n{xQ)YP_glC zS0E($-@+32@iTqn{c4ks-vfxwJC>fPttTBUp9hwF_;Yh8I`wFkXgJS+{*I{quY{F=xOKa zE!*eJr}8JV$-mx(U%mcwi^H`f@&!(lT!W7TIjPtJPM21c543P<>#TuF6fB&RQAUpu zX*lG5kVdLEMOh*26O!Wi1#L|*CCLT(r&YJH_rcw?!PHYhXYMZaB19W#4tY2Q;ROkS zFod8ngg_XIr!BFVG z$<4y%!*M>xMmY@gZvYauhl-_ykP1Wm@u&dpFtK?aiK8dfcvMtIi1(jiC`k(Ld6>{q z$glUbh8N85+X!=x!PzPP?!qLpNiH;8usB16^939TrSkhkd?r4f$AG;Dt4%bSC&Psn+D*2Zk zS{W7IE&B6^cVoSg*hNCGb;K`xW3B%zeq zAwqbBSv;IaN96QU6!Z(p4429Gt6Bj~bj+hz(l3M!tddqP-VA ziA+OPAr6zgyVp_;I?{hmd)OLh*uTke$j)%;$Z+n+uvl;lRq$YGhTxEyUc4E?O_H(q zJR2%911~d!>9azmvcm6VTD)1~y$^5E^j5|XMvt;yRl$-mqI-1g@n2{&vuO{}S-A_@ z`Ip&+^jS;E3?B6CtlON4^enzeiYXXEvm`9?FLSmrr6C?GWm9&^dhjuRLgEQNsqR}J ztH3)=$4)sdz8EMpL@RvtxzJiTKdX()Pv?8GZeZ=)U~R(9L6|2h`%Pb7`eZ`lRL&{x zn54M}rbRD6JO}IHh1qUXes0cxy@q-t3p|)*leQ$5NXi?WXB#CZdu7DHY8__IMoy~= ztt2R5EHcCC(Y6#j(F&6wknt6}Y@=1K3#){ONfD5>LL8Q8;ja_b+N+=xJ^}`oFL)0- z^=)x@`N-ZoCsN+)-nWQ8RpKpG4WwIv2g`hhnGKfM1}|@4w}AXT=AI|mr7+X8(3NzJ zWQ4QiK$4^guJvIfuj;ijJSLMtg18O|j7I|7EQwcz2}ZdfPfgV9laO}>9Im;0SWEnh z9@2O$F(S#uTXhL5>>JTJt2x9C}8E}$#Uy|T%_b%ND*Tyvf zCeMue;808D=-g%qH~0aib*uzCBz%>;q9OOT2UJQ0wkdRC-XrlWB+Nwvdbdd8;Wgvh zgzIQP8WxCxLu}9h2?R)_LCUeZ(k02|XCYx-56A_MazPSxegJgB2@SDC4ZeU1Jb+~> z;R2SZXq5zINsNFw8=?ygW6B7&3y3Fy{p%zKvP24agt?Z)>qpR;J@PsFu9#C* zM0AS=#3MkK)r2kxk~%yH6k@MK&0^PE79yNX%-xqtYnM)CmK+VV})M-gI<^rO28ostAx^U$it-~ zh%j+(4=5f%+=d4LtD^~yNl?M03b2-P;d&Q1L>x}&{*OF-kDT{qX`?6j10U=bi@zI8 z8s7tY_KW<<2==sb0bvW%0iRQF!?|wR$u1g}4AYG(Fi9EF@o_WK<5X1Tu z#lp%_dZPm^dh_Yx?Wce0SwCZ0-Ig9~u7<#-?rDC69s9Ae7sA|31A_5U`wKAXRdUW4 zN=;w(uPHV2}@4sMkghoG-z9g-Hfh#OY4SQJioT4QBy$&0c4-v#_zAY{=j`cz(=}{0` zxtw$osKo}&T_p*9Kfox#acfCz(*Q_A1DqbG)BPK)fJ4LoYpVel@BrgTpu0QdDV)%9 zk;oJdr9lEakwh+NIvZqp5Z`BN+^dX03R*k>nIQ@qze?D)O1@VOd+rZ7MAe%7BD^zQ z`N!S0l!@rB$nOeb3P~-8a7ZAWu%f4;u8=S=X@L5qColzyS3T_1*Cr8M(@*f|7C~^m zSRw&$vs(i4H2^A#h&qF-4K0a%YKhhhiNfK8B_%C)H94S~#9J_n`_(uO*~!!V8ZM8( zHUJh7Ur2gEm!5!<{=wAMyT|z5A%f&nDw)J8VG)vC1J*b)0+R5Bq#-~xh#BUtlaTf`rpD6 zB9r&bW$B*0WQxa%;WQ{%k-XI3VI!tbg~wkjB$4qf@yTHL+>NJ=spPPA>w@ zRe|g1##|WKOaR)sN^**Bj6Zsu*veTeJ|AvAU;E7{+NC|TWj=P?MAU^_P=NE{V?L5= zW|ca6A!%Otn6gdMxO5>wQ6W(U9G?$Mgyn?9!w5tQ32X`pSPO~7(O{QFV&6Ry1#Gj# zDoNjJfjEk=&V-N;39>;E#EpQ$(RX?9qN6&H9Sc6^Ffb(HcKOj50A>@>*i|hNEdoQc!8BzYz+bqX|t@p?OJ2(UW@Bm`AV`b z)SUHpA)QOp!#dz?)TF%mmwBP?`RbqRW5Vx#BHnRHywkg0|Fh>z$;O&n*y1*`5xPk! zeY;Meouf1^RcqyWPy0Wamgdv=Sizstt_*^%n{?Wnw#3Z5d7E<6AI3wvxM>x{47cnP zJVaAGo@utV5oWt~Pj>yveAUbM&2-xB()X8s=&yR$S9OolTa%wGL$;flSx#dsyo5=l;w>L9Ki~z^WxLSkTJnOW?MRDC z+P!Gmw@QlyVN;{IlyVblkheEA(^U98MTOqo-GgKFkElNXCRpqJ-C^xPT1u`{FH&68 z7F;przHmQIffB!fEsoM=6#!lX;47es`C$_ld3V}TX6@sqWFaSo4_kW z0r~_}b0R&3EnsvH3EY3r**}((j^X>~`iTn(nLHA@_k(IJm;D;f{VtzutykfYGSCvA zb~51!#qVh;iam9OTE*iN&dC$Mwc<3C)#9x(n)*&h z`q$t6-se<(tZv`D>y!PiUy(r<(FGUO=UY{~B7IdCU*At9CGrlVE;CqULuGg4LOULa zY$tAB=Kp~EYf|7vJ;-^$mn(Bw{pnxrkAL;Je-_>Sd))&LIN?F&KXgS-YuzT4tjFcz zEUkpcIj=XZ1b)XDUO!!9`&Q42Kv9i$Q;vQXpF=%~9_qMbX;jh(c*nJi(dxaaS6PaS8f^xxSpFP^=eZ?yYbjx%5S>+-$h_2Jg? zRlUq=S_l~D{gu~!qdR?xECC^T{ByEQtHNUW-|OECt!|$f)~-!ZwoIo9+y1&0ydDpiUgN7p3z{hJbYJAa6WvbwpU^w-cgFi7jOedA{Sg z&SEI0tH{sBBLMtRq)8ymCVG23^t4d=dt6FXn-7+^ic%U2&I3@yW`y^O45#s3=Frs{hcca9vF3EP*Xdzm=Zw9VHzKwE($B`4Sk8#3|G$PUTPC8Pl**0grIWuU3{~dg9QGZi-Xv!35;b_wotI z!PE}(@as@U>4-m_ImNpLbX~!|(A;DTKE$^OwH5ABbB_leW4;MchMlvR$7xgiVQFGt zxTqY|c5%tI)Dp7QL%c}**L-%1)e;5=V|YWDo3W9g%fRbDb3sA3SLe7OJYrOEMNxt4 z*l{8uSJGpK`<8@E7szYD4Hn8$IFX=_EX4junvx>}mnC)~3sbUnL(2}AGPgaR;wTX^ zyMTh3*k#Iwe+e;J6`~0A`XgWy@D{&l#HzQ@*EgDCe4TOrI#Wcmd67|G?p6xU`2A7C zmhL2~#d6M*ROg`5m#@N@)T9ZjIGH!uMfiJVo$aYsSO-j-?nOgcxod~Ylw}B#N!nHk z6+DFXi> zKW2kGGZ^6c`-fc?i2p%=VE_$WGvA;h_!0qQixn`jE4=OfTq|gs@^C$z-|*+h(}4}$ z6xKe|zZbB_>qN<G6$3s-e_r|rg2qn%zaUj!O)9BM#k1>n;&*Q5m1&VBGUq!L{pZ(WU(#NhKae;4xYde?pLzNG ztk3Whu|Y%FG7CkLn$dv0T^VMa%;K9T1b5cET^c87jGSXn;bF>Xs?4@69T5ID9%;~0 z!s+6u;b-#q2;5quAAO@|3j1I&b~iF}aj}bqEo~XR|M;_RP;B0GHGkZua}bL5<2T!| z9%~!c5VADBGRwtMne2zVz6MRv8JEs{s0i5i>bfGgcr8x_`QoBDLQ3miYS`st?&h~V zx^f;l((yXL&1~<={CcYF?d4CmAdQy`A>qgHvM^%qrnO9i3pu)9CfmW(A}b*mgU(-( zBhM7vwFPRJb;ai#Z*f@@^C0P#I$K6$i(DkYA(kaNPEVyS1>~ zOl?yAEtZB`N=#0Z(l`XNm6Hff5~%0h4I5scOrnV{yP1!XX$vjzua7R14cH6H^37{% z5UaVLN1^@cA4{y4xU30H^%G_T*i*7#jt z`VTw8rSdF?%;{e9hu;1buWFVlXHz$NRCoSahT^zm;G#7ms=KX`ec$Cdi^=lGziqNc z`#b3S3IXk2-qpQK`%Wyj2&UP#hi$R(l;Sm}(;WuQ$+LpLR4SHeastI1NGShbQl9@3 zQy&5W{Qo#?xSI{mI~bS^Fp=rmFt)Hil#Ep*HyUj<7zO3EprT8*k&C@28hW zL)`UohmPG)&;yNX#$9(#jVzv*d;@f;FEmq;VPGb;{~Pe`tCyu?rJ1P|Khmeb%X6~J3|NjQOA26Coje1p;v?(w3=Bd-x3VPx$0=mu<->H7GxFlFvl0aL9g~fxt z+S^}lgkoZ!(nw}I{w#}qATLx)UnvvTmQ-J-&R~-}#q|TEA8!KxHLH5FoT~B2qj#>s z^ViB94D9fSEg?RO=3|K`A-ggB&nG(XU|<#WAR;2O2^p~-cbNxQZ~iw7?3~YB>hF)X zAwQS0?ymnyOrM{7O4XnK`Ss)QX%hMtkCx_-!chLkFxoROt=|rq9ZQ z4I<6|Mjmko17i(-)bV0XCIk_kgJCKE&)8Wl!4_Fp#4{TyIC}?pFOxOW4CGwjvC&?> z=GlyTG(xhGbO(4Z4a5GP+erCefcIBSs&?_!vOaf!cLO7A>W1;c&n(*vSYBXZo&iS>+QfQo8=ItNl)+y>g%6z|g$Lm22ivSKX z`_1p~m29*veUC27E3dyZcAA!S%C9>fc6Y9i9)7~>pT)S%0-TR}k-M>XiRrl%8kHy} za6AAZ88IxRdU0LUr*Cz=@dWHwd;GtQop(|mvj^n_5h5$~d_w}BDY;|LcZunC?VpLq z=fD5_f22H#gYMI)*k6VY+JqO*-;7?=oz03@Z;;FpYm#{d)+9XnF>N2^{d|!T`YS0z z*4zavsv@pC#cF3lX=xgrTf#eer?UU?2Yx0gm9!?rJ>=(j{G5J)oO;~8g zkz#A#B`Q>RIbCpoeK6lubN5M_Ktk$I(lcV!Ah7n({g!sb(ml>D`SsIV{Xfu%*(XLD zqzM5BfG4=G7ayx+I!>U+O}GD4y9#b_1oSjF;Pted>_L}n`H_9*rkQC;(GPAUNDp=#a!4_{&mTZYP~9pux?6l@&zh(O2fspn`e3B+qP=OV2+5wI(#O>d2Yy`IV8EVGO_`U+xlD|?@7itk9_ml=>@Dz#1MQT{&hQ9>Wrdb zH+?lsWz3@lDi(@UxMWi*EE*_-yYtq{Z^&-~sifK_;llpIOyfYMlE>=tl}oHFgbU2~ z)=@lPKjhGM3`;-5KZ%O=FICl?N2;0(+O7R6kQc!uSB4*=7qDi3=h@X#+sF8dzi)_c zMp2A6rto}ij^NO8q|$skkO6(esqAH(q>Bu5S}NhZ4GvXL#l|Pdf|7N_qMn%73kRDK z#qi{}j$G1f=E&2RpZoNG&}nMOGB0A5RJd-x@W7uq%}7AW>kVRK(ntIFoh7>u`ao zd<9MsDZ-@67=p=Uu3C4N_;^`LX&S*NBc;xK_{K|J_x%{as5$BxM9U_WaN zG=7D<9wqW$mr#(ahMR0J7IB3~)RJ3q{<}?{EL2FY57tl6z*yhyUjXkyG=BT^z+pdl z{{xjeKPyUB{$et#wAfi|A0ReA?%O7hD0}Jfr67U zuz>sD*lq98r4?{xTepj*bC~+~ZN0Yk;bl#|eW&qFX>Td%)jiLOkGaIx>_mWFzSr;7 zbAim6{{t#rVw+1j??hY0b54$0ylT4xmHu2Hi9UlA%|ltr5Gs>p_I8h*08d>2e| zorwD<@kw6z$jn9hd-d&WNnZ@wf=j?EWJj^>NBq10F?MFj&_fNMo*b{?>s$AA(ksgr z7cmB27mFRkfSBImnC8dr1Im~XKQB}+LuxgZ{blG|dqxD4jRGMDo?42VSa?Zk8jnAG zoMrQm^(f^VdyUy~wzLzyB0OWb`NLrYmXx1qb{R%O4rByG>v)WU#W-TThcQ+)B5@xY zj9yp?4QG;`gj)}`!wn;2i9b_WmlJ*9rxhA5$ZTU}7>5wOT;z8=5~lKxYj>h;Q*Pr4 z$dJ8HG-c+5wtUgK6BLI(RQBd`w)=f@pR6;M=asTm+IcPR^Z#bsCtB;h$A4K|{hRCg z+bX5U7;n|H!6aT80&X};d`(5fjPKFb@>av;#eLhwyZ!fA;S=c1$%g3lPFqZ?IjybI zUnaBOESUjq2amA9?_GR#o!c6RzDrjt7ZdNh&&S>TDy~?6Mb>>BJ&}%zHqpIRY44+* zIEs99y#`Bc|1U9(dTYB@%j9G93VdjgPO}OnNA=zOqYv^o+YrG$Y7cXbJ85iLYUU%4 zHDXEGZpmk`yX(fKSwl0V(6rg64*F!pAE+&Ay^)W}W69+r;)2FLXsEhPj|14kg5nn7 zfk*wkz%|brEFpuomfF0wK&jGqT}P(GH1m#igOF!k@IZ&~KKUZgu#4boI>(Q)uL{pl z=sueCp97OcIg(beCjuDPH-=La{O&EXbS`j(`#x(V9g~E_UM}I}{znN?up-c5I{|Bx zJEWbtpP;B{fKd+{=^?f@qv7Cp*V7|nYlwu2XASTs;K%E>tbyaPA&6@%kpp`D&mpjP zTx&n-6H6E{utAZ(&Gn+1!{XSS{!t!+8`4owe0h8E2=~1R9p-`Tr5TzhplBC~e286! z6dgxVUgJloqKePd=)$1D-Zvp;_zbugq+Xm5g$7r9IHVIxtg%XNbL5RE3^s%@yo%!0 zK!YjfiKP)F;#lC_bowbQL^%~QipLwL%)gFy`q=|AnV`J2liyuJZ_!{+EK@=zI=lfOVd;05grJU~ z&!>r^e|p{>^X_)vcb9ZSIMn9_X)JD@sPLQ|-5zqdN~nMZD-MGC;1Oz;q~fAsomels z9r7VGxGyQ_775Bt3Z5qsM>`OksYC*VJ=nb=AaB57AsX8g*35%}NyI|9VKmCIG~97y z+p+B2LK<_gp7+KLG&#)|OMtkccX8C09VvEY^0}3IwOfYjOCtG^2uK<);Gyz`YAlT$$;b(frS*- zDmo!d3S2Z*Of{9#QJWc;P4%@{cVJytykG4n%3V$>O~E)#Nh(dsSj06e4aEkHlX&6c z0T~-i3z{Os;+f@$q?0zknjWN{pyDf01O+02whKVCV!Ek_) zTvchaO!6V3Iz+`g@WLPO3PF4THdvrNJnNFm9E%DuqhP2mV!FGzS11|dkVHglREPh~ z?l}l&G7pc_2U5t|d#Q^M`u13$EO(sQ3@{e~>T3X?R!Ka2NX4<>?A>sM9)rHSk$ev+ z=aDz6kO&KZ(}pB6Y{<^7Vm4afFJ^~Yz#-vSqPKM5lYY|rU2;!LVi7D*10Fn(9hPbg z9YT;?;z$5@@!TyIe3yf~l6+%|di%pFVTe~~xj*=wGLWcO^)3PVvkka20R^s-GoitV zU_%=O$^I^hX-_B$3s%4qzw>fREhKa!Vfl$FqVX-FUW^GF;uAB1#-jlw=H~NqYEbxx15zPlF!pkf2g-FAF zjD>4jOlq1(p0|G}1AU=hxigSQQ~)Ml^M`r^+&$~yPy`mZ4$IAUB282yk~Ja>TqP92 z5=r!sR@^oD3kj~aEBbo8BeKajQ3N;?LECC5-)gONLoF6YfHzNsKoQa)h%NL8I~IsI z(E#Z}#XI=GVN$(eLv)*T15qqBu=n}zat2gRn)N@}YYAHGGNSwi)=4{;?ELHX6r5uM`w7w{@z-_qa({LZP-dDN;`qqxxH`m>*bbTsWJwxO;lL-NG^ zXAgra(B~fyWatBXY*?$&eGPYT@`Zc0Wd*}cM2_WH8xpM>8P`FRmTw=RdZ9}9s*TWy5vZ5p~Z#1*)Zl^6S-ds{1q9~Pc9rr87b=_%=o~Q7+th`5_=?a$X!}OkJ~;87y`*G}qY!ka z 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�dvwW|6fuVI65ktR7>Oa8gPo z=l*d^#u^6>d1#Ior<0!VxmZuZIENT{f`8`d)m5#^@#u|2uf1h&{cDai%#xNhj>3q# zgx9Q^n57+FfE&Vw>~S_POyBMYpg!y1hQz@6Vj?H}81)I;jnFu>c~qONf61Cdb+)x) zpliL8Blp_(@^E;kGCjP#>s{vL%1kA{#n71^hq_}R`R&;C8e3v|G(+apvQhV+lPO64 z_joqQe*Od?auk_@9W^=_gMtH*!jJqJvL4U(%rZ%^&i>RHbV@x%n)Q8ebBt=8-8iFu zNO-0zV0bcWW=6fsJba3coy9lPj}l5TJH|a5u`BW+kUc!0(!4_MSUNogbI@LS2!=s5GB@mC2VmuQS0crZ>^djW#nrGo@Nyx5lfCiy4u1phJndwJPWBpH*;Qg}Ra*NOmnBZv~eGqQx=}&0W1W zpEeT+H>`-i)b%r@Sh^Qq`~U^kI@f!|ded%H0YxJhRQ^zqdkP3D;SD|FpJyc({GrA> ztf+$h+Eq)%fEH)$mRI~8lib=l-abLh%Uz22EW{%i&ssc|T7 zrRMj468uRL!!V&3P9eg)O0i8--CL)$ZGsoM?eUXogAw;^j&Wn#sBd$Ic_*-Mxbp25 zuMb17+giuix{wHcBFW%u%3ZN(RD5@uiIX)MWdi99YFeMy-_~{?rXeL!^gCG$Vw1qV zDxjWsY^3}i<;%8u%7&2$!~XH6c?|tG-Hh|xov%Lh#H{JMlm{FmYXQT|;#~()U4&kg zbH$ejw1<(181Gz^85E(O^FE&rLMLfav()T14ppyKB$e!yjsjaM!rPN6O3G)xQ?zWd*$u$6%;}2qsY%`GJO^bNeMx8*`A)VQ zB%3I!`y|HmL`6O27k018Y|E1)$_3SL_`w}7BiVg{c}I91M_~NmjLtfU!OMW1@AoB} z#~^(6N^nU80{)`#?MC_1T>9Kd_MD6To6tv5TMTX!6q#EbnJ+mDSU1R`H$N=lnhD~H zZ*W`)Y_x7DWyBtfZqDg3d8KY&CjuxIuJXZm)>;NKQ(|H`7O}7zV@~Wm2$A_4AquVA z0xeTjQ7b8#TmQi?-*9f9gN;%OzTC{4<*Q;Vh<rPxV_?i68IvHxXLqx`C2OIK`r*?VF2w432RX0clfN><%frE zF%yNH->R_9Ih0e>PwO%3i{%~wouBB@V(PxFW=J0AkHiAH0Uy5K|Zt8wkn&QPWvpeRSV+9)kz|s$!388B@|Aw z$pz^yqrW_n#4irp<}0!Y57*~b84qDsk2A2AR9ffvua8^K=E@mD6Ft~Q6jGG~C7}Wz zJP35!TyGAUKcMeXbvbO;i+d(tFKINI1?PSCbb)0&ttKYlWi+sT?igYiOj6)GTW|B5 z*id3k`S!WnW>tCoq1k4qEtvKo>!gKaV=R@2b^|kwbE_$U8D)?ys@A;UPQcM;Rhvt9 z$QrA|TWRf6!>>g<-5(1Sx(>Drt*#wSdaI5nn-P|@u|k0LRmEj^)s6WO>rx#|u_A+8~NKFNgCH+^k!W?l6Auk0NnoEJRPD>zgr9Q6Op-ce&b zV#w7O{w>ZUHFLxNTlTKOYW-jA-QV`S|DC=2mp$*t|IOb0%bo}Ovc7KokM_Ld z#aiRPBTRp9m^UW=mk3i=`(O6F|7@85N8#+hHq6IA|4W4FANFooi`P(`7Vr*Hpf!OL zs(OzbgnD_UEHU&vJ0bSQ&?z<;KS=`|jy-P-5$cq>j|Gul25gB=2;WbIP{nD-^Ak-= z(gecK&*qB>^9Jo`4|$aWB6;fP^2G5%<|33pFSL?+84C9z zp;6(GBr6&x2FbomQigP>qPs>UQMaX8I>Ln9Rwm-Bc5t$X$Xrpb|4N%`N`y<$p*TBH z`D_X)nueKFy{e$9(0fWcY%m5F>MyBW8M(N4Ks1Y$Q~@ud6>o(ZRKuhKbtD~94u!Bl zDmsYh%FEg|$gFFqr_oLL%CQsKsu7RSVlQM4A`{#}AVAv$l4N1XYXg4_2_ZT%uRhbRfu;vc{f1&lW}>5zS46O5@Q@_945{ zD)TYn9c_uCDV#7591&R>2~bfgRu7;EJgfARs6?p>Vls zN`MHEBiqdc1MwPo5$9Xh*%0+{RI`|f`D=%XNjxmRG0z-mRi)&KAfjU&cFLc+86TX) z>t%{>D@Wp|;Ni&ldRWs`l7luw274MR3Fo%<~hA*i3$yC4=G_0gu~ED^8T?C+~~Au_Bq{Mh0tdH zD#-8Lnj_v=F>ciB6jP#4b%pRsqMikn7>K^Vkv@q+b`jMM4fw|J3mF4dwyBce1Q+SM z+fak#vnSetktg(Q&b$qJNdPUT8p}xuLeG#G#4F5SrVxW#j8Ec?bE5uY2(IN%x)=Su z7|7nr?j^KgY+7OM#`iR)sB|;O!f)S^vsil|2uKe=1%t|iYz`@(R#bbiuUZ3~tirKK zQ^h3SfEg&!!jaohh|mIPD?V@mH7ily72X4wHVVR_OGe^z!~Nt~L6k}+1!5ciQrtu) z;krRaWTXy-49F+ph;_6QgRRVb%0W?v1llxXvS4ZXT}oiPkpwlJv;dh@EIe8&B@!C0 zuk18cco3MeAq-!EB?#>QjH2|?3Q(P_i+hAm3|=~vMOs#8b>`V+cV$l2>r@{$U5$ghg0_EqT-;5MWE3rr#mCqH+@0KV>|5C4!1C{ACQ8#?W zQ>Yo8*F57&`TT)}-k)@;7P*O>T=3V~IQm?q`Ue9xqvH?ePBI1~Nu{>YM?&%Li|O!a zlG#$mUy=mn&9Rb;rw%m@a4Iwh2BYhYyxB}Xr)z{O^Oo8oO_OqV%#JG86}s%5$niYM zOtail+P$$+Q>$3XU#M>)G~Ej~cv5GECMPw+HSOBildHy~C%2%SmJv!~tOdq5g9r8w zchoc1B18)03aqOg)0Wha_Gb$?8aO0I?p01FuUj_WG0FTGn~v8?=sc&h6q=0G_Y3$a z#$s_U8P<_4FigyVd1d3lgc~6Pll7tH_4A#R$M036B-YS_xY1fy&!|ay(Y4TYFeGsL zvkrQ3VnFgS8JlNeJLuazprE&U@t$EnVoy$E*asoVAB|G`8U4@ZVOmAeH~DC9srv|X z?cY{TkPK3BF}>!y&yoSWLMHhdNF{@50tQr3gsjIsppB{Yanb&P4A4x#%5CJ%5HoJt zZ+O7Z_pfqZxg23_h9=Aw6uYgSkDOO8Vx0Z)YhODT;A>w*_`F};A(ACgwY;Q46# z6UF-&ijPxW3M^4Fp%yB@s3J#-lH_?hPLyXtHJC$J_$bW>}l zGZlELeFXNo+(t4I&t@6>@Tddwb}v7nILn$+5|DVp?hW1GEBLZAT|G~ zJ;rqz=lvDpw9%Z+mrQ>g#HQSXF5691^{qRz(>~PVOGn43VoqQF79SD2urZILDdd0! zQEUcQy+0>I#SpApAE-@x-Ji`!QQkUHs8wsW&uvMuT#xH_I~PvqhTZp<*6_xo%kM91 z8d=beSHO8Bze+9_93vmZRKJPf&*-V-1dD#Py~YF!K7e6T%zGKXkN$bMI$kCIWp#R_ zhyK}l_Wn}-G!~?N(uSyR0a=CtY}%w+HvzTNZrq1t6xxBsz;ElJfw^_Q!uNq-XklIg|pFrcn6LPSKbe_<&Jpq`uC zIU>~Xn{8i2sJ%aqLrCo*QMIgLQy58OYNVsRe(Z3h)hnz7lqj39$Pn2mcYpa|RFc(} zsDZ<%V6G5<)MyJsr@2<*dj9tgZqbfgA#16`8NZ{KT4^k4W1Q<;_fv_vH4Kj|h((-4 zY3m}J)UewcLBB0xh16p2TY2x6V(&;k0N|zB9Rg49iFmldNS4IQ)ZokEAhd9zW$?RB zz-Jt0;whw9z&84%c&z$PtP~#${--!6ab{SA$>|kPmoApUlJLe)N|p|I4id`q1C;cL z8PH&qLgDGEuFbvSaXo0z?~HNZE{l*lFzmr4R@p@oASB*%o8iunmq_^HsU9uf+P`XbsU|d>=iJC1bqAyAoAwWlI*c zYr18)M8^l3kLn5eU@R9S#%A7;sW9iIn9qkR-eLd1P1Aej3bEuXSIi+rU32{->uJI|h-lqbP| zLoR&(pU6cZDn5%I47vF6zqvxFHOl`zuZ(8OY2+uR|5K3hzqmrI)Wo#@+r07#tPRVx zjKK;r$}E45X8pS$f6S!W@I_H;y?h$!-&ZJ?T(vr&zH_8mDp5 z1n!`j5@Tn1774m#Zg2%sFSHzx*2=b9UfI{WGAde+{-#|1d-BR?-uE*W)iONNu`>2y zbh@!R!grC=T%&?>$A*jgLDm^2?T^;YD5rvzk~4yZEOO=YH^<_e9CIgibX8BY9VAW1 z>TQ_I9e^ApBr68-ZGJ&;ddv&PuO1|%XY;;bU}s!<9v&Tx>cBm*lfZ{2aEWW#vXu^^ zep)*pqL5~T3{pzcIY?xvcdCveeg37If~-K_AkLSA$s_xgDsy_02LY>gR6uAY8iJf> z1vXSn&{m#;<6(!GIz{X_^{IU9g76}QUpLO{>&k4;e^!{Noi*lJt2KpR*SlSW4nNcMbCopbi=4`8UQ``g=bcZfS%0%8 zkP`)&cM?pDUQpx7a$bzkwQXE;R$;&0{ib_%f8rckC9naPvg5WIw7MRhrpfcJ1;&T~~Sgte;lp;Rr!a|5?nN@0;pj3yu4O=NnXi801q4UN+&SJie-6+d!W00GDzo|*cNpq1C+q7QULJKSWuU+U0= z@ddB{rzjgLqu*tpNg?{YY5!$!JoTAbH#m*W1i8;#IFP!Y+AsZbB8s`e2@ybhd2O^WC%X)Rf-+Oe$$9b zN_w7SU@^1{H1in5Lc8h<6qD4~egpiSJlwHB5u^x_1+MSAffbT=d_?fW*oi(=bDJ4Q znjjh`!L^EqmU4yJTuYO)GR84p9xJEZ3}s}`)yosYfZA8|5<0v9HN1YR7g?Hj2YyjNBotg~wFJVF%(wkB}G< z6KqZXkSv3@)BY#;KpP7L8Q=^($!jSj%IGqw+@20$I(*=bn4+YU9a2DPBbqo{sRWrS z3C3$FG;SppX}?FX>$7SRfmjdz8fCrv}^$I=X^e6JP}ysP9VCH-5L@bzMYrii22xK2pwh^RcQbd zUa|D5!?g~1p<)P-Y0&wrv3IQq#rs&6kV?!=8dF~$Eglca|MeXeRX4~6lwmk^Gl#=U z$YovcIqI8vmxM54VQbi@DS?VOuthQaT626|?t-6p-A#t!^Rscc#7?2~;IT`>xb|=E zw#xNdHb=`h-&ydNN43lpjhd||&MU9RzGGdp=sKuzh&)uiq+X@{9Nm7~@c^BWkY6s* z$2<^(I*+(aItFi+9*8_GOPel$&GBb=`ck*1D8sqO?iDH1+mBQ5)Xs>I^H=@v#gw>Z z8f8e{fnDv$#6^gPv9P1LEZzo{;T#=_g3FImC=Lm1Qg6gWgi(q&45(3pC1@GAkoBz% zv4a3IVKqJBTz2`mq=cc^xrP{`{q0!o6p}d3J>eSGK=OpmAW{kYdSp~sv7dzmtxF{W z4Y+;&NnTdy;`y~b!5mddYXDC3CJqf#9@fhy8^N=myl)Wv22F4X)h{k&9!MbmpAh8k z8c>K&P5^4j#Smd9OkQwr41TddBuG8AeAy;Xx(^8fjoJqb+y@f(LH&?zrYWj!Zpf2- z04T#>I56oupZEEv+9q8mud}~r?%~Rf=lX9KB>- z`hS)6nile!VC%p9czxvde(A@CC8gnKYI9#KJNjLeNc{cN+C5w@McT1EjYEo$_xBT# zbXYUPcv9yVKS&H9K`>GyN#&gJ&0ubT#>K~rFcmN5g%@hwH{vAQ!-N~O-wRAjKd)0+ z1yqFfTu?j>U%ODAP<#`7YwL)E+zdcrOlEgy_^ke#g*pIT^|R-(&!bTBm#}Ck?sI_V zougL1*EusDKl40FsXpP`Fx-4yM*MB`8=V)$!)FS@*X>x%B$7~C^zs1XL$T6?rM_+( zLu8)};6_mEE6(Rl6n(pVv;kr~ZoS!kWyg7;ZMd&Ka9?4f2oMCh!~hv-2{ljEMkE)} z2ZAoRiI4}o=L38{g3xS0F!KOnLy_gp?Zow#y~o|NGeJ=^ zqQbR8@YkHDK~Q6&mLMXCX|@VivxJZH{d`D!P>iVT5@Nj+qPC@D8>VtV5Gu%RsQW&Y zS3O8NER>zbT<8$jsZVsx*wu@lLNg4I@*#|O#@DelOdRSE6mv+UM-M(8>;rxbY18zD&JT#QPao*KbH6H$2|QOiUKCW)k~k7#s@Y&|5vNsjDX zij)Uphq?hyL6P0V)Xl9S15Ciw52XF6QAFDjliJi;B+&#{n0){p#rM%NGYp0#f`+Bh zZN0YKTqs1p-~B|5X|WF%RQnrb?@==ei)oIFzB;7t(2l)NjeRVoogl$auu%Wp91A}Z z0^tXri^n3v{84FOcSksu!<5yj>5Pf5|(ijB?Ks}Bod{W zDI$^+6_3K~mJ)AqEmWB)*XZIk+>^XR61Cl5>$D}!PA5rx!iL$tjgFFhWpG3-lC8p> zwAzyE)RJuFD1VWp%)})-m67+lr7YKldMu~7GbH&~zP3b8_J1IQ^@WC|rA9p9rHCus zs3t_pk%t!nSV_|gE2GNORk^>3nDmoxI`le>>diErt!Ni!2(DU_tL8efKJ+M zkwV;_$7huHx}Bu_CNIk#GnF|%HZOyrowR~Khxr#F+e*IqbS9{sG=?;tCxW=KKZB2q zB&Mw(fXhS#rgk7H^q!WNlrOw>2lO7~$(9qzlshYtk&LQ_NB!(n>J1qGSth`z-XDAEC&k*S~vjS+3jV}wJ3WDV-{~jF|eGee5e8VBHt&gf! z)@f9dup$5(KBFVpv4GgsG?*|FqA&tbU(1niKthSn#CekgFRt5=4k*gSMXF;BvZBw60C4tW1T^q^lK62uVot@E z0SqzdRzOZQ}&n z4&W-F)@Gp=z5{@~>WdLs6E`D6GFFRRSBEfd_KKAyUA}hHDo4Go22KHxwOxk}tP52O zV*4uXT3TjD(7^uIlZ36gmXwv#Yd@3txSsyF-YcX&=&BYCw~j~Q{iz@z^Ea#5QypSO z1O5~20~+};s_}6De@v49?v48IlVsxmi%D`?Oe?bc-_}WoF2=vDlSM{Ke@&7tc4LF# z|9z6gpww&L_zo*&!~2(Y5_b7IaXl8bPyC-RU(W1*UA|b^={jI+1^?$A*yZc){Yp0s z-rrE=gTec;2r4jm-)84uY{hLCq~_~SY?9X!Gj14-bX%NOz$Q+2x zWQ8G*UI!&h1eKA^F-w(@(H*HaY0ZDta-<=&*7xM5D>YeujWJ!TPAEjsfG94soEhf7 z%l3ZxM4+T`%)|6h^ruYFa#M8p4;#sCa0kBGx~8rw-#%X9SqH*I2Dl3`*z;TS0e53b zH}b8*c?%rlUbPgGYY?Z31P5kZB>=6xLa~M039~ZT))=AJ0KH z1T%=@=mhUx?v0&`;omB$&e@PQ1Kzx?vE>v4<7ag*(vB0X$i9JYtcDH4=rAEBQ?J#c~I@~xT(jJ+u$&nw)3 zH$$S+Q;E&j$WkH0qy2oHL=S*tz~KRzco43| zED16JHi3vij*?--UUvYLmjYaPV87}{VqdTUC@3p$UAb8tATv)*k-G8DLeFKkdY!N8F`amDd(eTl?eq4w@FMxMxn;;s}E5yVCp|p=S$IF{0v3?b- zv9wJAxqx{Cb<`QE;;FlLvR+qw1nA0cW-Cz#P*sCw(#uWKx6lg3t{BDxH?OE{Hksd$ z0beP1{vi6eRHPQW+wSi)p9lpTYO82VphdkxW)Uk-nrZ8IXv9lIAVttlV;oW=E5uE? zk!0$>oT$QP{@{IEp>o2a&CS(V8>UogL|l3n3d>f(s=srbx5QQfhL#c9pYsvl+TFFCXX zZvm}CI!iXykd&s@Q$t*6D75WDI%0uqq1M7(zhPs0BkTKAqB(|@8u_Zz#vN9*h%9v9 z3yAp-ydNk)6T&zCH@vSRH%}Y+VL5mgtN+4MQiD@tJ7k=AU=#N}t(IWTNZ-f%*?B&3v~BraeSFIJE`!hm%sS}+7t6YL^V~8jSIC{*qNv2~NGdG- zQlC1cxX*pfK5hoHPA-n`^ZqqSX4-RR9%M=h%sx!IO*UlTjhh!V?@alrN&NVFQx4h zLYL^rNj@97@q%neX1dKUkcDO8_N}(xkS+FLH`j(Loftu7dk2-9>r*C9%!F1)qJ3P9 z-B`fm^5k#C75AGY@i%S0GC0R;nF)6)ojGJYtueQ2G)_;Pu>^OlU&OR@9w?o+c(rWY zPquX5O`Q8YJ^h5kY3(83F$JMKZu+~B!BnUh!Bk$G0F>4-8s*Cf-Pb>kyITj(1NWmn zpLb%%_=np9PU2FecNr8_1e~vO9a?KU_iWt-#+PZXsi)Rhv&tVPe#BpAWfUEV5Myx8 z)uLpfc(bX#^DqFsWmM}&@)X++cDUZY$-Oy>mG>R4Mhb|pYG9!LuhAMfxc|VLe>C=w zb83Bu5Miro)!f=p6mt2@LjcV{BqmU&-%YJxFqn$VV{N#Ob|fBOGGEc%!E`VVmsMmJ zm8W(oT=|p=n{3DhKELy`lTFL7E z5WuVU`d!U`(OS0)KPjKh=IJ*rnd-KfbaY`t(XAJW?MC{9%zIv{SbuS%XpkE~cc_IcTHLi?m5{HI7~e-|m2=UY25PI9>7q)V-Dm#&N3o z{Y#=6GM0Nu+Abx9V#4Tmg}RR>Z3a>wBK~^8C~w*eQZl}DQP!Y#?5~xs1264`RYQNl zo7nIbS+x+Yucu9Y^JHwzYc9uCx-(|)Pg{0j@TSxXS#p8IPBv?1?%5!#S!=~8>&I`u z_c1KmANA9$zr+2M{nmp>Y;7m`ObLTG|6q^9Y@#A;_TgwMYnw$x=9vfa6(ME*u^|O>ACpetv$-^H5d*Wsh3W58ik@XW+M>axBw$x%3`)GA>tbov1Ganr$tb7m_7b z!61%d@TX4@E~uS;gzzvph(9(612<1%k`X{yZyF%Jg~VxHCm!CTDu`m3r>EMIWo)6! zf}b{82{n0@3=|yngE9>X?eE66bydPd92pXYvbYz^!4Z61*#Wg-MC=@hWO|+Xz8kpW zM?uq~`p+mNlxA!vH~!phyR61IbZ3>?e~SAGe1?&Q zD0E;lF~y+RPBL?w7CBdlWXo@*`f{R9Lz#(=LhexJSRBj-+|KiJdlem2Ih9WAj{M2& z6BHoO43avgi?Au?F850|)e?v^mz+5wcioW6!`d1sMJ|`o$J77{j1((a+cVRl7g8g$ z=SjF&%G)>M=np(9d^Sko4FSoxBwe8>lG12|OJTYMryXfg@{2)H%ZomT#~3(`#(4sq z1xMh^bvG9@ei#&&@ug{e&TJqr5_u0CSv7lX7Ob;^bvaZ0DA8H54~#{ZqKHJS(80fr zF=l$jvH37`zws(CIQ5LiN3}o#wQiw%#!?=ZCeqz_RCrsuMP(osj>8ntMfO}!?Gt?x z%YD)8dI$!Zt{)rzWQml@m4YYX3N(4IP(TPNW|soUT0zwoe!LiahwdSnGv~jLhN7F) z6;9YhSKEDZN|r(kAVhtazep&5_`7vj>F+LQS&F8Ax||i(f9c%)t+j3$`&(wd9(&zl|j^Tp^OUL?dGDWB?52gB21dDrWt zAh7D*fCN5n$k!#Gs!FzH=$aHk(k_aKz_Yws=zi36a$DkjJc5ihyh2RA2i(bPf+-fG zKtN*DDZ``;tf22>PJP|Va6bf{Sm(;(Z>%I@* z05P|F#n&|skl;z1rnW_J0bEe6&7e%Fw!?oRq&W;3cLPf0A{JhcMzS&)VuRV`?4X7r zywqvHEMEHxlZ%{=Nm=_UP$}`t^nveOVCx`mh!2CkPK?(hO`8Ll)NekLnFPt9g*a| z4N;LUE*5in9tGDf+X+G~5OPl?`jktOiNVFg>BJIf9-S)=y04nWY_YRVI1wS{TBw=d zmk4t(`gh(TsPK2(hJHdtL=az4zA26_PQW*Hlv-`Ow+*nihwm@Y``oVqv&^kp{zK<{}2IwkyKpYO=@TV6o-P9v8nvL8rh$BBzS z)~9_7KJ1~|=?I6;Q@wE`n5Tc7`6iO6^#_MO6w0v2IP)p~{VfMZ37Vsr=%Z=#6L8Bw zv>A!fr34^jPSyeM1_k*MY)O1j$A&RwFm<#KoYEt)enlwzt2Y8pzj4wW(M59M6JdJg zTm*MQ?=5;PsGUD`vJY{u8=g3#jort$c4mBFES60aDLc%>OYD!ez8KtId&%Cu4gPp} zF6g-Ln&FV7#Bg3f$RFYS8A^Rdq=QK8t+D*w8Bmb;HgU`r5TgOX>ZR1g#4N{JA*QXc zbcsBxA#(8!KYA&^huXqM43$3D3?|hzxCe#=d9i7~(GA5zd4&bjH5-F`4Bf)QhRMS% z418O|Vxae7;KO%s4LsuR*@B9^;N!4-48oRylH516#yx1wTH!xtkin)dzwdB787Z`; zBdUgRtM7rA?<3x8`2Mx3UK03|61iqd>dYmZG!#i-Pt?K~wG-?&c=&lZHEKmVstpMX zLJ|!*B(xl+I)%LVp2J>Y3L2Lcx>dENGWLQ8#;j|{?7PLl)IjTD9`Jbq_zjUWKing^ zBjEipqWfZ8@*I=7na)vYNP5F#5o2|6{orxY-MB@O?ui)R$EGqcV9S6$=7xN`3|SSA z{ZvSiW{UAR3;;Jd5cKL|av`6z;Dr?PlP@D{qJA?yp!R_{+f4`NamTNUgZ;K}pedXj z&{o1RCJIYL@as@Kf^ghS1LQQ*Al*Dcv@~kR+Bg>)2_ZC+QVW*2_X#&!0sZu`uenf~ z!SQ^!N$51-Gb4=U&A1WbC|!i)kB8*q%L?$~NupOQ+%(vVWt`>J z9K?U3(Tg?N#|P4dmH`fyiTq^H95*x3>->kx1fXJi6{SR21nAG7 zK#)!QJT%6_a3UdK!i;$MQ=U8Dw4Cm=HJ!StfV)~vKsbRonsYc&6u}qsR{{;ogyNxj z<_;gtwQ?}Tv(1f&271%p=oIjJ6!51P2(}jpuM~(p7W`G`7#tw6@^K@V^Qt#Xx?Fhn zA!lDAZAcQwb|3vY58YuaLzPzNCAW~kzvvq}-Yj$+*~QQOqbC0%F$LIkqn=SY{z8_6VwPRHtP75N>wJD*8*FYJ@R-RNIJVvjZ)h}*J=py1<@?3rUT)gSn z$%0r~QW_csTt`qYy}eBGFOCHr4yrLKO~l&Z1%Ohn^blMzeqH16C%iQJ96DCZ#MD|? z!>3_6z^pbmn-|wz8qEykCXm5tEtvQ6s@WRY;$qay@v4dVRbKjCGnRjgcL!h^Ur)cs z%~8xkKDm*^umvx#!pkZdAGbWbzUg|pv16ur`BfX=RtpEco^zuF@iclUT8x#rgt9yV z#xX?=O&bwH9fDculmpIsEqVH?U_?S`q(H~ZFP_$n4xR=WmdV|Ji(R$Z`knl3w{9n` zW9RS_*N{i_*m0H3L#LHmDrrII%vY`+vkp)|t0@<*(+Zy#6utY8c&A^7#Be*2iCS%+ zTAiyrL0?ZhkFm=_8=~1eFuQ73{cMMhS}@m#0vNbsW4G% z9$j|RWx%aqur$K361~F_^h-uk1RaeqDHA)}*w;p18F>&?Q#|9acql=^@g`;P2_PpB zD{%s#M}G_9T7f`o_4E7DM!ep3+_{=Q@DC=S<-LY@P^~5T8liTFJD)fz5?d`6P=|G~ z(Q5!r!J2acgZ9#ZBbAr=HoS#P823h1030H1Ce~&j*B5R44a0um51}i(zlYrkAwmTc z7cHG(C150eVDSm$wKjxtJ>=&F3J@Mf(ilFGkD-JH4u@cZqSl5VuZF=<0|}V?6S^a| z3BJDJBixRanVooVVa3{k9dai`Cy{v2F&+5$PiW7=C98yt&^U zBQXxB@xpiS1pO3d%70BjBg_<-URT6Dp0h>~|2(;iH+6NwexomE6!jTqE!zztU#~t7L`NXN6B^1yAwBDCS1r z%>B~g&A z1(cm~i_dS4evvCjM~B`lICO<#aVvHez?t?z1$^Z0+v7 z6rt2joVW0`iWB>3>B<2okY#x{UU*e+5%pHb0*J8;Cy?L(5CNjM_45AAAnF!V`Mw*% z3Pj(|9fYMctrVlb068{F)7Qd8}V9q+A3altyl#USxFtKMQ`LStlNQn9>_Ln#Q zr(XUZZy2`^>)3jSy1$9PwIyYbi9e}Kk^rFg!GEnRT0*n^poz!!LNsK6Z;^?s5{FNF zwi%Wn3BSBa6|;plsf-#&)RDSvkhcMExyA3VhI_Vy$F6;~;Z|9&mtEUymIORD7B0?s^K{g(CgR^!fVz?*97tpljCE>-zBY zpLVtt-y3J=9DkVPnp*1ywV%iVPQ(J{AnWEcw7WL_OLEPDGT}fN^7oyrRWlUkAlr^) zc=?#4;~-T;5yih>TA+ohqg9~EcE+>|lU&mm#PSmTbtfa5Gd2~KAv8(Q)GFJKQ)RG( zNv;RAA&HjKXoRVsVRte=ZFPoyb-wJQ{fzT>q*`9^RcHrUZbqpL(K`D_2RZX2Bjjm* zL{=8Io(l{6c~QKN>A7vVzYYr%1Cp84;>(*XiZWf~Neffslgmm9lhfymB%>o1ii?|n zv1pYWK?zuO8oI5Ht7NoX^ntCve^t142$n9_^xKkJ*9|i~X)@+5mz^|ZV`H2)&h_2P zHZ7Tr9oo9vSN!E5bB=A?`j3MQ7^AJqq-w8D>U^@G%ffh3%v96${QLO)I~)qz#b0Zz zi(XVl*cuCy@8seK;Jr0<8{S7uCcT7Dm6wCBU14i1>QJ_;0fSH7~tEt5ZZLOI0emM7Gvu zBfx@oj_H-w2lK?l1rjA2@G=w}&8yK(_co2~%MSt<)z1jhHF5&Pa}$!Dfl!#CVDMFT z(q;}WCE2WubD*2EH+f_0hge5be$}`dmlpA8A#BYV`L}1+k~t`R6k6Mf32pXCD)aY8 zQP3YAs@BoiAC90wF>y!m;f@cIWg51gnjPm=9qNkbFF3Q!vo9Zh4Stz_)=c2}IDalb z;Z3ltD*ZBkVt#AWB?(!&>NM@DScqO|HlZEo+H-Wi*_0iy!TSwujE-Zk>A+rjN^9}$ z6yGjg6>T=>DYWBYlE@f+b(ip_Dn%2l3EdC3f<)wN_BP z_<$aLkc{}2qzr13`7Vwr$ZJ~Y`Ldg21@vC(E4=nb9)dqV5;_G;{{@Y^#-#9(*1rM! zi(dufGNl&cN=DJx?&lKH3m0P9+z*jNNCf#tsYDo@U}J)|L)p*^303JLkb>$5K<$_R z7h`Yv7vA4+~W_G|dT1zB#Z(EIC3S=<_((%Yfpp%zMj zP>o(I15Sh%e~!9Rygn#*i9R^&RX}2m2lOJv4=@pLipx=5z`EiQ0Kd4@T;pGyTIuL% zFTM);L0>(r356f9rhL(SaX~TZ>zdNYqZT8FvRM|`yGMPA%n8BZ0F1e_MZ^mM`KFdW zPrL(DWX-y|ve&LFhb%_!M7R>IVpaNjc33H(@8D_-2Av_@nK&JLUFDKI9%6r|Ku zMwH!14o@VCf+9CJH;5>$WR$BoAO@8cF_M6B8>^a{n_fWO}tRh#=fOkMtd!Fgz#ON3)p^$9v>Mh0_$+mn*$3J^Ar5CH*{_6G%g`U1MVNwFyafIS!B?^+9cva4~q924H#K)D2 zRQ`Uf3?24zX+5iie`4xjI`UEM>;T~AS_}`|HpXT*O^e+;WOdh&is-Y#^v|BGCF28s z@!VbAr2ePN3FB!~uE4u#OT5;cRw0vcOP?7wc2s5eg!laV)v%h0k|;F}LnN6BGE=L3 z)tY{_;g?ISMfd>K;iN=%Y9QO;*fM>V>qdyneFcf?krNn@!nFrgWVLxW+%*Pn`P1Ro?LaDuku} zsOJrs8LvpB%rZ#+YM(i7?zCqVL%pDHW>;frz+c-5ms|&KPV+yhbbb8Sp6p1gvuAbo zm(Pa>sr-;Xts1UwNfbtf;TgU?KJ{lIv7B4acz#)k+@7zjy0M7bq4frh%IH&iAxFwtiD_q);}B0f*nU2qK? z80*jAS`y_5(vDBT-F+Ra^T6uHE2b~H5M!;ceEE=C9!YRkLRkRhh>F$hFSZ_O-RnA4 z8w@ht#sQfGqTS4dKgG$v&%hw3X17dj|cKNaXd)1YX{b?ALQ?)VIl4*^{SSE>69#fMlX~b89HO)PV*#K zMtK0UHg?zYPVn-&;MUMJT9ER!4|oT8Fc#P_?)B|3L{}Fn!_wbD4inZ%fn@9)8%uP3 zNSp)+cPb8-9Sp^9_LHR#BtujRvv)@&BO+ZRcB6}EObw($jSx5p-acey6OH87ixjS6 z5Y35XZHbh0WRSj%q$7xuKcZJOjv{*<1$LxY>x#l#jMAE*(;??ms3TRS4AQ1>5=b8 zR7e&-#us0PK~({!nB7Kw=Nqq-8s9KM*+iDm#h1{=O4;F;(4_0NUzvc$j}EoNYb=%+ z0VlrGO&rbPRWkA(ha?WCQ+a157KJA=dx~$}uVUa`OJdozaYajp7m~+- zlOHaUnwt|956Msck}$54`}~M6tEg_)$S;jk3|Ep-Q&XP(l4a?wuOP{%&6MyHJA-|a zG%&Pg#RkWTfv8nvZr&SjhbRJ_>N_2l(=c)6JT4Ln<@csQ3*B&LM4tL{BbODdbvi6V zuT@1{o8u0j_m~KNj|Y#xcycc&qtcMCGp(;;M)Efez#{XsKC}h=fH}giZ8W zy1M-4^x4kqv{+VIZ|(r&P15*YSy+QvOv72m7t*Xw+5B=@QDVdr%~BTKQV=%4wGQe3 zozKJmLqzT0oUO@NA)#WKL3rthV=zH#1{1uy3JJv2_5~BVAo!Y@-iOn#&UQSONi*5p zUl#<A=l5_@Ae8%gQaPn5H0IrNT&{5Oj8RmF${p(fsq*g|$yiHzZMl$ua6OE`pq zAwY0ZM_$pSIuEHf)8>5*NK@0GqN%ho)T5fe-Jg?tqgvEo%hj>z%sdX~=N4*QQ`1(t z9_W5IGs#9Y{Oi`&LXGbK*`7?u^x1_)cUmogu)ZqU@%yVEHG0ZiFpTIJqs9UW$BI0mG}es#`OSu5ZU@*f3?k4 z`t6zL@%s(ZS0f>rklx=9FbXc%pAVp4saG?@si2&4dUTblj0jzcm(#B&b1fV zNrm74I)Vu^Z4!D)(;ljON8G1>^<^@#F!saqxksH{2qjZre7wZTM~p_I)qYHPK2PSm zdinU;=6qeGA6&0yMZX38 z=wo;z<~WIV7{nv^3DfO*fqdHBu$UF}^ZK)nN>asuOejU$(t&mT+hHI`vb9Et#rDj0 z*d3Q@!M^f|M-Es2WyU0|NK)7?sirSK$>;E8z4n|QtR1)g73pZ(Tux>^oK>c2xGnT6 z9i3E+Gdk(e^qlT9`I_L+Ahwc1I8?W2fJ?LR#gV-K?zl>VTCCii&|GXM*XrHhHFE>? zk)@eM*U#QRzaH%Cd1isfA4~o1FD6`)0_{fh?E)@=)c8-={^+45SB8^X!G=j5XHuW0 z^<#o{=R!T6?~Khn)^8I_;CF1ZEoUa3qiE7;kN878^C$Oz&RCxdieJf}t^yH~6$7^v z@?j*mtjNyFVTNX}?5D;DuuRXD@g6mvd=v&k={)%z!k1B1!1C&E0eU)@OFLgiQqP;3 zqIgGEFqw#B^>hKwSc%1W4|Zi-U!iX&HsJX@7K4I|X#`B2OJ6XwT&D@Rh|?L-MWd`J z`jqJ4pgY45($zxFJvNmvi&RQ7?kMTB&r_j-KBirDe4`xCDy zu5uj2;dg9r_-7vX1j?D~ola)*M1Rl-za5)#>(I#G!l@J;pKLZ)E~74Dto&HE zPNVjEL^@RWu#b^k%HO&!JNQev)be*2dO%5q%=VYcb_#l(veb$k)SK)Wi=6qlLNS6k zZdE-kzyH)($rao8Yz&<0A{wJby~hYjTD-KsnS1c%BpLk}hQ zM8JF+@_83{h1`eaRN`YEtS1Fs(3spI=u9gGe*qM0q4RScfQ4YN%-2_ zYH6iewf(2ayidiq>ub7Q&q`Sfae|l)`EtX!N+p8Jh8Me0q-b$D;H^xP@TT-$5U^3x zRChUiAiEppXT%XjpAb5+%jJ4C$-Zu{_b6QUk>JjTBbr{*D#!QZVw-v>FcEt8JTipj zpUnwi*s-A#W%%~;yS(25;CGtv$7dmou&2$`KP1r~IkO;K$$Z765~t zn-#%NTlthfTpIQcq3ib8!KN89o`zZ)OnM6`!Z9CU2trk$#W8Ig>#0>e zpqh?0MGYwzku?}N-_m=ua<90r&1GMCV#tj5aTq*QwFs#_r4z4C$uaH~JnO>>GC@+dHVcbwRPqr6}VEtBWz6v@{-Ddz*@rPfl`axq^pXuc;cm z; zpmX+lQTceJog(2STyvb-`DIo4J!C|IE7>CSONXqH*qSEyAI-BbtNPTEqm@GSB`l2J zec$`|&~Lqlewfr$jGmFn3%;wjDcIkz`?)1j@0YHQau^vax;L77`%78!m_F1>EDA&+ zu(+obgvYTtHJFoTJ1mauG-DoP3dr49oxp4KQ1tP5Rneu|A9o=nh*D<{h$L_SaMpMx zcQ-zgq40pVGYV^i7t))B_3{zBt0n3N?Is7^R-@eU%Do#TlQ@g5^&!FNx&4f_(;8$t zKJd~N6mpjhAXMh~=n%9zuCebM^qh%11PBA6hY+m>{4TN5ZpM-@O=LS~T37acf-N&^h@q&MdO8^H^fGZ!mt7!u0^s;g&q3Hv8YT z<~-H!lvERK!+=&1ezC%YzYWkX-L&0gjPso?Zl8 zxA;B`*xo7}N0*de!z}VD?a#ufb(*OV?R>xL<3HNO7DrRuoNFr$(hJMOjq4`SU=Xla zvx<+J8dl76vqZz#$%n*8<(~uKPowgSbp7KQ$TCDdNdnw!Heyr)p)2W?iUO0!Ovh8> z6UZpat2}=JH5`z%Ml)0v(;>f$R3`f$!Gdh@9cCrhLSHG z<-Q}}mK34fSNa^>;5l3-BNZd{(*reSebXm^_M#~mlYBgum^@ebnzB01ae0z{u0g5R9rze0?i_1RyHW6RXT_skqR-DfIbsui6+^d zc}tK%y?_!c3Y=mF&`bhBMVV6$K9Dg2^YyGp269bV)czv+UtVz>;VHo4)NCuX>;0^d zTy9BT0vGGlCm?xq4ozroPWvA7_jv>13q17doU~k#Jzcz3k=&ePX~Ue{f=P)&VUIMb;UanAyi*>LNMXAP@mg-7^?H6K8x0Oi-Y(2ZI3d~J7iyh!3)C3 zogHW(2E^1M=Cv$+te{rGA{G`edRi!%CrCB)LKO^P!4(IJVNvL+5mVip6g1O51Inm% zE2zDYLG)@U;UZ*g6^FsZ;w=3&%u)n(A4;-^FQ~b*%c&Odjuv0#uR~$yrJpaU=cYn_o|Et} zs_hQo4ToXY(Ps9j>H%tgdqe1lJTSATNC^Ch+6$9=<$_4@}K-*eMOjA432=f?XU zj_sv5W5KG-)GDM0d}PX+WW6R7buPiX>a6A_1wkYLWix?9bBlEo4mK46c5@}+%ZC%? zx=z{vPY|s{3!_;Jb6^Xtix0Dl8S7?C_CgCsZ8Eh)>$6_HGirk zu^*Ze5BRmR66fS?ab<`KA4Eq2oPM1YXEL-prZ#T-fkZiqmk@DZbW?qw1XAb_zsd(F zn6-ICfPJc|;X9Q8U%d}Zjn3UKk-Mm9<%=UK{ebDXLg#oHvUczTo1p>KqDh-_XNynm zL17C(GzwsVa}bZ6-pxXmLp*bW8M(Rykdc=SUeG-hmYSN!d=Qno?@ay;SY*eBgAkXR zeqIK;$oTRb&*h$*+aJqL90{uoJ#1K|8a4D%wxzDV094D8lafue-+h90@N zNH%F8niaEGQWv>9s+wx(y{4s>b3Q;C0rhMYyBw=A4~CL{u%GrpofvfySW7b)o2Xl<(xYaNZc{!CA#1Qd2W^O10ZS3z&Mp{sW36hv{B|^5#Mm`~HK9b7?;% zFlsw(@JA8oEtU;$w>Nt=l5Pd|6z17^pIcFSVIXR-O?kI%>E$NcqkjJlR{C=S=#UbK zGYNWum8Iy3b@_wGf(}QK4$qVgn8XfnnPHVYYfvEC;1mWXf)HWhmNfS;g_ahnAwU^FDOLJRfA%FJ?+ zy-aLXR5QTF{mzS?(KIyvNA#Gec1CerxVbaQ%N;2k93q<$c8x8Z-j%6~XgLiOm;v=8 zpkWrHy{s)N-)MU^72*G;J$o<(oWRTo=+JvJLCx1Qt)XT0VOm*XW?Fpq_kRCRa_WUs zs><`WLrmY;>e=+&4y8!r@#gqb^Z1{SpMFuzolDMv4f=QoL>^j&-q6%H8vM@ zttjL>l@xu_0vmM}P%e3$9v_DAnIoL~1a?f`fsr(^Lv?;S&vVHjxHx~q_$kGB;iq}L z`y!gbM5pOz(RWqxkSYfL_QFLIwmLSvK@DPm*JAl#(5NTr==riG^@?>8$xAN41RdZ5 z0`X+i%48UcQ<4x*l(I@~j%+Zw&`;^bb9{%w)y4Uh>2v&Pz*_i|l+-qn0bCxr1+bzllHxZ&`8PUG*XrqYPPAmJ?waajMbWskCqcGy%1<2)*ew5S{k@@jvqM>6vLyCvc_e>asUdhwe<+7W?>W^^H^r{JHTai5;3$F$LQ%l&?9kB1MUa7 z<5EoCWg;Om+B;&uApiCq##+t(4j{k{%sG*fIqmVjgc9&=IWnvpUhKI@0WU0(U;tbX zf)6eQuP{CLJQkI0cqeGZ$Q>e5EO>#k5xp<`YiMtFfO0=XCTSG`yS)gg3aZXPVD40W znw@jZJOX340iLEOs@s=gm?u{J_npD#GI3dav^@1U2x=*j!u}`dngHFWee(W|Y|YJe zk)e7oJxru#6owEidab?odxQP^wfFQJ)EDT~&BtMVo0;_R0E4Uaj#?~Wbo3A;9tM_* zU*hCSTsFmPT|z_o*h6sftInm=rG~y3z;_1yVDyAvKy-2819e{nj7%M1ruLnohWo|+ zaD7wJC4KQKH}eUmnU$JnD~yP`%c*9ujV>&Pmh{YfJm2kgNtwQ>d2Mk9gRUa+VF3}b zsEW@HlSoFX&n2u+BqG4r&Nr~4^D1%j-)<69uH^H@m5tKCi~&s2Pi`Rk2Av%-zQNz0 z6>hQzR}AU@`(f_%I|0V6d9lj zY*FhoW!Dn7j@7SC5Z#uE!(b#7k=6(UZJj=b1$Ew|fHM-Q;J}cA5FJ3>)l>_&G#>V-STs=z&ldXTgJ$X*U>IXTTr4+#v$JXs$m3*s$oH^QYMC!F59(uRjIu!}Fm$2Woi+F_i zdw_lK%cl)Qz)zHCkn#MsTofiYmhIX+y+XuyqO4L@-5sSwa#;Jrs^*?jD5Xp?qsijF zY6hEOa!}{ucl8`TyH8~%pATkJrk{_OOqy5*?PR?0m`pRa`?8cXx$W-xob;=d-Yb`z z3OUbbN=BQ0?^!I74W~|Cpzaw=aD4 zQj=xv+-k)B*!nR}$jh>y?5lmj{o3VBQ?`)D0q2|MFQ1g}n5Z;cIH$z;F`J(PprmqU z*=Dg7u$K~E2T|{30$Tf)=42R9B1sF9&U2Mb(gGbaycWiZBW&u_c>HSU+9sykJ`%AkX?eI=my z&ftN@2I;J-b3vk~o^h^5iDp-r{1`QJ>mVN~_*j`4*+Myq9zY@H)IN*j%_e||pW!u@ z@6O6flbE)ktCCS>!e0H2TW^k&*d@S&=?H6M_dSE=>(sHVWR0Wt(5UK^vIobd#kzBp z;foS#e@<0MXwa9msy$u;zET~6-T88%IgQB?8;qLP+{lW6D~14s>2o40>x?(^z5N=K z&9KNB!E~K`No((EQNGu@IuRRC?u<1ota2cOs}u4EW?JHQf%=FN^-3j`%t>v-&cLaW zNy&oNqThJ@$T4EJYYarx8cmbGfUDtwXc?D{rb9Na|mS&tBch#1bQp~y!Gy96}m z1w=Gz&M^5LXd1CEoBp(t0h8^Rp{iQMkf9N;uf(Iui)e%bTY?A#>}5I6|C;~b@!?i?M+7Rp{KwL^K7`Q!&$Hkd$Az2pFc4C8LdF zeLM8FmGV%Am`^8Nm^i^VQSz$YX5ME^3kx4GP6L z*`VC(oK(8ZJ+@CLvY0z#f{__siTs#D;d2yfk_z^s`8bdhhSkV`bus8rZ1tX`yVmSS@ zUWAVMXF7{OS{{taVIaj>TB(6K0mdbo&%6BuQdLIzFKOhu7K$=V3q^_SSGAFEdF`0f zAbS?a)4nqm-qeW>3Y{bE34U5)cuZ;qBYfJTz>yMkFH#y^Lhe za*lRQRTFW-#D0T{5iI@Yu`ccCF7FCq^0fiyRsA9~!zu+PXWaxfK!B`w<)pkapY8a3 zL_r%H>9XUZsSU8&&al?(yR%W>y(FSkfNM(xQ*cY@W|<;vO6?~gxx-l>?+5Im6cPFLC~Q-fuNb66^XC}RoYh+#*}Ah zzje}PE=-eW=9ARYm~&-jV9@oE_##&ETed(bp4X{OZTT_Mv=PUQ&JKZ$;mZp$i>6dO zvdOWx&bE0dPMMC^Oo1#LJ{)(*I*9KPA@8i`KN0C^ z-3Y&7gkZwEdZ@bSlB&{uTLv*%&*clG%+)Dban^xNvk6O%dkQi~ZUXfXhe^V=lmdNCV2tf6Q19J#)uKDhVJ^RO%`8;QiI_1ohiHv&&JN=$=R4T<#lsKdzG{EXJhoUmiB|Ujoo{PHNQ4ihdXfj5`$f> z^O?+(mhJU&rC1$gB-Z)aXWQz7-CSwGZ`TieI`IjQd{j3#_n1Wt7=*G6vdzB!P*(4X zNg$AUa&Pn+x-#P|Obuu?`{p2Cce_}SdXG}Q0K<$+BuL}8>Byr5rJm9?3Gtr?&*6Tt zuU541<~+tRykW?Ul9S8v-HSA*?;*qFk!vZFb@+r5@a?2QSv(~1D|-(ewel4*v0hec zHp}i8xi0YNOQ_qMwqWPS@l@=^c+pTrYsxXO^SL6x!EJC>a0g{#P94xF*GScyGc1(Z zv?=!Z0RjX2*E>nD7l)gd&11-^EirtLbh5>6j7wi1A$9%@zg((5J?s0quNYCMd_cAn zMSJ_0!VAh9oH4^~d$g1cx+~1osq7xZ9f}*4A&K)h%3iSfAX4!$YW>L~j(21M13x&r z?aZrOeIDF>uE_5+B8PE?&`J@6tHXeJ4Qn;+;QdkfhdEG${7s9f?L+QuIf(Dr|9!X5 z*&y1hdw~e&ARMXSQwLh+GjQkcKG;)Y0q}8;B~)272N(i@(Ee};efaw7XF{8z9}FOD z7~-B$o%vDVJQn|m@g%hChYSLhED}nA&xFWRYtsEDTcw&TI#p*3d7L8z&BAN|y>}py z4h>^a7VlIR|54U-IAQjfGu9>UhkjfcLVuN`G=QiSRTZPpKPN*+ZjmiD5koxcNP6Zx z503D*LHoESyGaBgCcGFpx9EOT`FT*uhOP+4JuLft(MYo1jZ#c=B(Z_>h;=`ZU;rq# zHa^5(WW-YbMPMuwxU`)t8pH{KVFzH+w_%0S2@Q9}@+ihJvlc&;g6{Lqu^Z17ctxkO&dXqZ>|yX096JV&x}Ry2#N(2K3Vg z{q!POsMy4)04|)$uO5bcGsfv%WoP5le2$a?Psc}V6hd*pQ3KGfhJEny_HqElaELFviMbs@1~kZv*6Oq|I`{xiM*M~fq<0!FA4=qszn)WYvn^ion1} zQN-+hK({#WO*byx+)cP}rmw`&h!}=Ah{oLdam@{KOI#&m@%6M)VRF1l57qgQ;~3pu zFjL&6R@ys*lEEL9o?LH$`6G{}!iL^5ekPr6EMYsE!(StlEZLA~CK3>h$61ZQs5T41 z`2rv!xEOhxstJqIh|k9<>_XPsbFHeA)S7V~{$%ipBypg;glMH(^^3PwY=l~E*r&o0 zxh@I0bz4<2MD1P%jLhD+7~_H&NA(}(+N;2rVGYQMt@fR5#(shJ14_Ytul5sFwmWzZ zvZ0MYo!x&tSG}JCa#2i zh^zxpH$_wM0{a9pP;0`22pA}JBaTc#_;+fE@{nYGg1TWrDiDO3Hx+Rg->it_)dDx3 zI%H5n5hmu1y_}I@q!&IIiH669SnZlwV~cg>sOA%Zi-?V*cAWN@m`j4CnGP19QGzfx zMJpCaeiPK624NiN(j7HNb2Q;;S7$PP)f0P&mD*8G^qX0#DiSNwiG&ifFX~6o8O#mo z#!g9ASsG?^=~N*Ai-Bkd)r6$%>PFG!>2z=zBh!gvBxX3C%mvZ*IoFH?Az)`01w|<%ezs znVY>`%~>;gU5cU?jQut!j+Zy9r7T|jDK_v(JGmaqgR>#skrP(+QJ4uNc)4M?r_n&R zS+czu85Z#&F~N@uYjz3ZN~ZI!528?qh`}(-1(2|)qIp3)#Boe(0UmYrYi{a;$O}R^ z042ym7!G*=YFVSZclGU1^z8yeDJE$S}riUSwL< zaZ1+l3ss1F%}^*Wl+)^!MVGiT{2z3F&$1tZJh)sHoP^Aja(x-0bK4V@6D3@gesqbr z&s3)&M3VKgx=d8hnK4dQ3DbQUB1V>Po|Zza2~iBl9pZ|!Cu@lmjd>vBmQ)=PCxXr{ z&-JViq_QVe@=}tP5Ct5e&K)xq6SUTb8gUp}35p#??d4kD>h} zkOjpA92h*XZJA7MNAi9fkvHDH?$vzOjwHkWVzA~4=yIsTBkF_vVNc+5ln$7TX-u?p zIu#|fP~WJG4NPv2u5WSj53fW(Oe+j(JU*(R4Nm zTSsX+)HnN%&=^dl@-@>plUIV+>B^H0;Nx)PU7m~$Lp-NkG;z6xLaBF731b!&qfYO} zFbdr#-{GA^4II^unibnyYh54Z8#>nL7?yI!byBaD(g>^hqwyWAU-Q`}IYt>wEhel9 zE-PVB1jLB}hGw21gG@5@xJhbi5Le~uN}8TnVayj7iX0MVk&bxUZjqS65Tm6c#NFsn zwBw9~+2SIC1M*X^>SGoQ7tKiso-l-&feR*Ubk#+B>8BFc)qH@VcN&PUHNVL>RKCn= zza+O;wT-%<4B^c~4x&%_BbUX@M_JsBD1*SdbkfxSyB{V_Lo_NK*9bXPxgeZ=rn=>f z3tveidgtt_;C3K=f?XQxV|j9j=fuV#SWxdyXD>HWCUdgl4(UG$orsj=wL@YM?Njr( zd4X}`e%5P!_B#agkB`T##o2e!+&EV9h5@qQD-h_=Su42eb&*F}&e^T9$76^`2ZCn} zuP1uv83CVXZ7xKPW)gCggWZ{v4#B?^{(g$)AwY75hfn$k#Y;46=M6Ii$bzxJe*vwq zCg$-VeeaBy?G-V9gyi5kd^CZzdj7CN_q63fOG--fevhsbms%!{k!3RJ;us_XVIqa5 zGsPucpF~z&bUmDti&zsnc?FPR3z2!0ZCvKMqr>LIbD?q${P@Sdyd@L5O;904FvZG8TXGO%?L0dT%KyN-8kWhD*p%75uB_8KqnAm+bEk|o3ECAB^|l_ zCS@Xdwd#%FY%>2)_4!1MzGw`|;dKHaSARR<6oRXJga$*PB@l~t-{#ik!Dua>)j2}5 z0M!48qy!F4laP|X0;gwtVLL)@su&UsxF95?sN==6B9lbo&E6YJR}lboU7ZB+ZfTWj z!V~~hM&{dEQ^RMnqWf^~2%W-x1aC(G+Q8bBbJKE z50~heSW1URT9YQ{nCu%lnQz{m(XS@aR9R@>z+xS``dxFp6-sv)D6mbSQptWX=SA1A z#A5dR&>(Y=QreU9M(_N_^m3K^kJFWcV##M-0efM7rRcO(Dv*XV%2ps#X{Uc9OJGZO zKr8J-gzQ6TReHVlz2NcvM`XW_SAmtj58a)Ctxos7tJS3<0om~nkra{zZKqlb)C8wD|DUM1=`SFmiY!aG6Q)oV!wl|Rl z3&NB{YqeL;W8}z^T$`h zHP#E)wP19K+`kTe?a=36qlIQG+Y+6AS0`VmNlT@ooG}-N$iT@{{Sd-8ZiZUTd*e_L z>DxAf%>93NeqE_e(IfiPXa-o;E>`K+#&8DwLv&5Qo7HWz+vtKj^k>a3e{K!H&4*fW zhyLC~I>#%x`S8CS`v2AWRmk4=YkTfT(45MG6lmZ?7smw{nqEdcxu0?PbUSBNy`E!EW#HpakX0Uj@I7ba zP9K_UTd~e$4jUM)P;g{cUU}_N;{+$V4yq5|1^tE-U14Z>g&F~JSNJ@f^z26^&B3dy z!HLTMx)?n!&$0hUOmuQwSro&5QdO4ad{SLiQFBsL*Ku-EYrhNw<<`|$-K3PlzM$3? ziW1vmD_3^=XmIpDif1TwTsyxE{>a|*qa4a@Tjlkc+nZLfV}qzZVpDBJUt8~{%q3=5 z(0)F6+uh-p+Byl!aS#1lY{D1o0}?#`Kb4oYB=%n4&d9->D^FEhhzx$pe#*<>RbQV9 z)N49!xxp#sCDvFTRMt)W(RvxY>Y@2_Ul~7Aadh%xlC|>7$vAuG>E(1-GUC;Y;OgIt z(Zjl{Pm+I5ujXXYxvu9GN#PfxV3zvpMGcXEE=IX-mJE#CZk!MBg4&}@#~oZ&%|wic z!!2WzK+`kFrXA~g`7^&aJ;%BJeDPj&`}5WB@ZaXczhWZp+il%K`P-O3ijq`g7|Vyq z>hqjIUDcI2h|%(z1H1qxRH2KML$us*Kwb>C_uc-J&J1?1 z=s!Z8av=sw=A27QIqaR5rAIW)qiYFk= zq8*8$WPq?VXF3$GRz4gl0P{o_UBuR)+;7eENRH~FFJ*E70#nVX1v&a;4L_kVzVT=Z zhHa&+1$b97AZpIqYFUy@gnYM2PZ9@s1Y1++4Mq7udxK?)8R=g&H0jx*Wscj&ROOSm=1%906Lt0)U3>LxN zj!^hu;^i8LC5AE{5yi)tBpRJtMFuXmwQ(b<$s!TZ14pjOlktWPF+TF5n+;f|CAAT< zJo5G@wDHla^vZDY2dZCJ`huLc z515T)9Q`|_%0%rP{~J?={XpP6z3v|FQ2~%u>9NW+kq#&DOj7exMHVgwPBaa(L7-f7vE$-_ACM{F(mtj8)b9Or0s(Pf2|BQg~nrvEJZaoaG3lll@Kk)EY%Eu{8lo+CVdJ zbV`X;ct$kM*;mg1a~IMRXl8fkH7ln9lZbsNiwBjQL@TyUS{>ywwvsWdPi;5qa ztG@}9@>9SzST>Q+pWGTyFJ1Fum5WJCWr%%^jbg73p_K3KaUP#WLKM&h)luq{RLTgp z!(FkZ9A>DwusY#&S1LYp4%*GX=EEz0_qtv#k1;A3LR(R)fQ=NTxZ>mfVKM3Kk+KAZ z0AV{ODNRxV7&edYQE?qKQ|EM(BS&VeSYI0CxuKOG^{Gv)$(_sXE``P*QfRd-`OAKUY)B=;`~i-K^swZc>aZ&Ch7Qkj!V@P_UnM(O_iEIoy{IL)_&<# zv?fuJzA+QqdKNAoST4#<*Mp_!K=S#-PzFdu=UK$q9`L^ zSvr(mY*24lX&#|4mf?7ooy0;U!RS{0PDs0Jq9FY?S1w~^AL)gmN%s~Ve)oim*5wb# z-ac!-jF^$$yUX|Fz5Bc=-7^jibXm1Q--RpxI`rRAiMhPp6rMbxvlI1;MOlvP#veU! zbB`%N+QYo)808#GLy6yA7n&SfRPu6-Ay=d-xkc~8N4klQl43Rg22mQ5&d~QB{z-Kq z;+(utTTd|h3+6ZW@!XxNk7NIpoHoX{lwaee)4BBE&bV(*X?{t9{dAG5(|hRr{;iS< zF8?>-;*Ui2|F@$Q5Pe7Rdu|n+h7w(jGTBl-oy}_l@BC?H*7QZKU;8rI`rn;DI)%#V z>@TO5kZq=ln~c^Nzvuir|VPJg@x6)GUj} z_Lo3+`j4rZ%~piAKFZAgr5Bh`N^k3}hN2l(7r9T%lAU@Ms3XlNhfMw|CC@7Nh|$75 zATue@tKVd~fFct)OZHD$dpZ|o@Ezql%G@~041kg_sNgO0W^+Ncp;C=DV#vB zJ#Cr!D^i?S=J;t?K;%8uw#Ljj)6Vu3Nl?8mtv({diy^4owN9`QBfD4f!(HwWYiUA; zzL(OipeVxS>@VT+Uj+Ig+0b7C-E;8Y1Ul!%2$7L1Uswjl$n@y2@Zd$`j}T7&^qWN2 zOL$(XyMz-i@VsIj&U7Usu!{4)@=AKH-1UM2SNwG<4Np=T9@5>8cWj9kmuv5`Y5mQL zx$n=LRm)he-}RFKgWqey@3^2Fj(cE@O=&gc|IRC&vIR}B?#_gQsG?y$w>GPzZw#+D zW5`L)7ssd=Uxtf9^zs+tv7)MUBJo5p(r@;sFn)R zA;Dtf?0Vl@E!=0%-AHm9guD;(Au2~7WQGLgqcVpHmvVTBlXa1SOhH?ckPg|>>lGtq{nwrtU14tC-VHg@kNTd@3 zXyWJLfW#sc7VsdPaETzBDMAyO7{m)WkEFvX#!vwd5#*gmv1$}!8BGk4^qfcYCKls3 zfQKnIJf+zIkbZXv8_m6ah%`XcsIWk%Khmc)z6sTUpmtPP1w99C@8#s^cn)n#gA zZ^$!WUS4JoNX}EdTxl@Cz2eist}qzkYb5hh7amftz#Sxjr$x;?fe|LRFO2Q;C@BBu zZ1&$Y-#@ci_z(e>1iasDC>j?;5R{`+q8N|G#Xn-KYcmo{BV&)#?Zv1XNk#weG5dA7 zdN{KgH6h#;JDvYezuD(qJ}Uu2n*6w?%7s$&Sa!qvlp|S-{-QnsW4!9+TH}BE%{Ue% zk&d78#pmOR8y)9Lf>l?nKeT)9btEM$f0Oy((9}g1oCqeK-;k`=ItS zufjOD-9n)xfY`3*?0_IB(Bwy7_1P~WA{U)Eho9lI8QivUGbP$!GyOXt<@$8Df8RQ`0;uv|D}5Dxx6K<3xRu^iOY5&R z_8C?g!+04T2E66Q!ojZ;zQeFGuG@tO8DttDJcXW8?c{6eNe&{Er zqtP6W^O1W54O|+#$24_R3T-e%GYvx^aC%|*vgTMeUGE-0CqKr(rmD={j;*R3{?_T1 zMcJ~+HM+y@CTrT94=q^Q;WVF9viJIU!+`YRq0BHE{H;TmTc4LI;hT2NnyQGQY59ld zTeGj_(yR0%pX%7IvHvWy7vu7)`v^|+HEY%X`1Rp@jN`2Lx38FtN*bk*Xh4) z8+Oq&bxo;1g)`2F0N+GaM~L1ynU0bLVs7!32?d?G_nN=uGor;8Y>|agjL_#*$N5}3 z;o>hfIa-%X=Be=Ed!K!@o{iqBLSEMZ%wJ=qzn(-B0y*pFQ}0iIq=G4!3a_6B(JtrS z^8;dqvyrc5)JV(P0Ed zP%fGaYwR%2Cy=Oi?3wNKwUxUEfgK8@f(2Xxqe3kk^;6j!{v$1wI2W2wF5y$h8A6rwP4rE<3S*Nt_8( zzq>!2N}mom+uv$<*qwMtd%D~sd@rFbAL_QSh5D0{;9;wJtoYt!;p5kSt_bvZPwX%O z8LfE)Q{j=pkHxc%Vb32hkqB=;qGF+hC?ssd$R+^y)J;l+U-Fc>*JNRK^Wm6Z^1f2| z$wqcH(oqvlV6YiOeR?$*N?&hdM*Bbs-DhLKh{cLM7x*;&wy#9JRRJ(5e#LO2=FtC- zy|;{t@=@D(ff>4HXpqjKLmKIBq!C0qrIC{EW+>@KQjl(tl15TWL`52qJJB zI2yrhTE+f!e99%~z(=nNCOgjGI9g26s-0wxucY^lIADP^H8#{F1Z}RFpc$~-BCsFo|~jZD92J9)_!SFU1xH=CW52#%Mld5+BF{-$k2 zD9sj<{V4l$Hv3Vo5m%vIs`S3%(T@uK@e1AMk@wX;KPpYIEANJN-qa|2doSOmhukP{MZ~k522-$6r|qj4rgg9x~Bf{0S0u{AmwA!tSJ1j)T`Oh&Lb_S zJ|*naU{=-jLxJ`^Uw9~oKr49rdm&m70Vl`;lLn-44~T@krL;!c{c?r~TK71Jw-7rS zEeJPq^6~zqj8?Bku;f!uklJ+-7;xAlz99ix>J0>;qlaOkO##o4Vu|f^mbI^^P}CIW zyPI>^9isAq*BdkK?%HWMYKJ(6yohg5UMPe%|A;3uLPX(esqs{{XLrdq%b-ys@9JeW zB%2>$PND9{zLf-mW}19y3ihq3tT=9o=-XK$x0=;>BEZ)neiY6hHA__1N%XYe>b|Rc z(foAU)eBDB;E=cCNmk{^x)`%DW)_`;Q|VtX!g5blj$6y*Hic&l-YvP_&pI4~_nTcz z1mZO0qkgBNU6@z8UgwNK|DMVU3Yy|rgcRp7LnHb3A7W-Gc{7dMhPl+u~Y9D$p)$A8UnE#+)|(q|)EJS{S;c(pOdJ+`n3! zjBjcXwIe1`htFp3nwpx&9Zc9;KYYe%ZW;Vd+t`?S5}WPFS=Ij0)JLGBoqpfjseI*h z0I%!V;iccPq0;TGKr#}CGXuEevz)MCZ&dL?Sj^B8l5I<$D9~l#o98Nk3ayjS=Pv9?^0vOs&tB;RtArG!xsGzlz*Q9{%wV%Ia4AnViGwTz+z! zm*Yn2Z1b@J&%}1hLuDr7?b#mJ3EZ!T<>KW#x^KX<^(*;RZhn%+u(rTn4i6Z#^VH}R{{(_lgtpq%RM*`41yABxduBs}+$;`G^rcAYEZ>nj;^<3b-$l%|V{@Ks zeQ@6Su3p~R1k4{65XgD^1^VXtjga`IXVLAC&61nFH`v!-IkPTisMracVK?nbu!H?4 z!nORM%d>z-;6U(Z01!e6P|)W0)WQ_hj(9=uu65zmLB-=FtGj5$Z<1> zT!ENYFxXgLiId!9UP`9NU5zKR&<7IXCgCL5UM07XG{|QL|@uWKm5=v zd_+6k3{B3CBzz_)TxK@hcqrU8J=9%4!b>nbt{}`PGHjWKOm8b<@rzxseq?Q;?BpbS z9gWy$cn1`5zG$zBceoAcy|hUDJXx44)`Wyb+CMiK{j*ja#H0K#w4$Xb{+9CWZ>?Bg zT9Ydgf=3|N0GSF9N53OBA#l}ZNz0D`#5s#PbM$f6r2W+=5LSD^%vKYl?x@V#M z2bs+Q4BDP4tD4@;{6%Jy_Gi0mF#5U2&!YKPd;I2t@z7s$u}l5CcW^RWR*C%?>`JYx z|~=v(eY@fYB}|Cf(}k*vv=q) zBmMTepXIDnVvq}`nMy1)9@xaLsaIN^gX&Hrh#9@(ZP_cP!ZbRv(R&4v$ zw43}}E6&+-=D%O5+;7zQzROvdd&~L8*3@w>~Jnq9Vb&V@cPucMf(J>RX~g(R`B ztGMqUXo$Y<_mn)g*M9T#MmJ4d=PV>#_stg!;u-zZ1URahZV^JpTj$ap?A{kB`}~6{ znIH&2bP$Y2Z-UG@M1!fM5v;#UjUr$J282UHkWW6NDYrDB!qc0`u_iEMeM!s;C^gsd z&^YZ7^y1Lj2?dNg2@5^yOFb`*B$6BjJ+AA=;wg?oUHo)g$kR8~P!w=ORtT!+reeSW zMgzYT5Mv?@1V#2msMDL1Vr$0p+4YM{;L}QGrgu|cqOxd!QSm}-1{@>fXr4b+pk{ZK zfgADExtWDB*Notio4!Oa_eVwQC_;=!K+pF*@H!to*(3t&zCHGzzQZ1*S*hotr*MzaanQzRCRqy;S=q@%4_#ed6Vh?|p6y6#UQ z6I!ETm`)|%s9~}ljhdFKt4n^0&%@e2$VZwq9*}ZhL~VOR&xH3~z1K@7HQPPUe#l@(wz0Nl~v(6bZj)Q96&n0@h8HKGI=VN)M4J^m$+HF@Ook z=ogpSd0(fCY(r{aVK9G3X8TJkuGj*-#w(4_?Ec*2|ASW4pKYKm0=7z;GyM;($Q!pQ zBCGsp@-MA8*9I3XaaB*Pl|L-q?eQgkgi9I)eptCYZSKadzH2aAB|B>wT2FeEJi5HX z7D7GYuqR){3ffWfEFNxgRC-nkFBlLI7oZ#P9NgusO48%Md__Q@pOiY4b4LGBf3IpTc4>=DbW~|CL`~K2BK-Chv>^ctu>D= z0J1|j)r|3;zBA)UO^vv%jK5#*PB}<=Q!{|j zuq-~CB%RYt9b+Qq2Ka0$!pUsuUFDPla5CF2_fM@@Ww)uBbvf%n`J+Q>Xh*lQ?Qxmf zkIKL8@kNV63s|4D!JH{SJag{XqagJp%uS7j-ovJ z{Gz_OoX^n}y?yyNnQdL6{o`9atD-Lyna}ex{;9#}?K$&7@V)ELXw5r@TNwx8BG+F) z2`&BWeEV_R-m8X>I0ppY9mc~OjHq$FWe$^26JJNcwW1#Wh?ZJOYJGE;ctM2zv{tX|n^hiYX@;_(addgXcwXq~3I)M!ohX|luJXOxho2q@rK35% zyV7ZRdiKDQ03|5x%9F$YtP9e0$c^`44M2Y}yk823bmDH@$ITme%N5OqJ@A2R#bdZu zT!U-H&LW?lYJFN!?phwC6A-ZZK=muqfsuHYRgu=6~++e3lU>y0Nkmos_UKk8wE5aP3| zPhW2@@Jnw`iE(a^ammx}XTv_yc!Y#_G0vl*r_x?AIS-Y3e6j||q6VJL2U;Nc#xnT! zF$IAZyh+l7@|%Om1$`*bgGz{lY14h^(OC4-f|(acSr&qU^F$nF!4Gt7(Dj3JTpamq zLZCq*Ol2VhlIlWRAr6Re2PAY394hBUrm#gOMjfoYK(=0EPI?}ysP81JAGYQhrtjtd z=$zsSzrS`%SPnScY=P*BWVq!J$+phD+*4cO*>LBra8rT^hcZrQh$UPuM)unpN=Nj6 zVa^GU@Ft0TP7>hp8oUkPxQx-{o z7*%*4rOq2&QpQ)9r{j?#vP=WjviE6b%G%B3Twh-Nv9@CtT@6;2Op--U}6!m6{ z++Hwtz~-JnGPW!-*>;HhqB*7-_^-9)-z=J`B87jjXx?wOSNvLA+D|_J!=iyhg8!vOlUDR5VD*-wXui4T zOJ5{DE4)neP`wv6B6MfbtpARb`~eBRe9B?XJMrmH};ka4D+LQ}kpa*ZSi0 z;A{O0^*3;f1};T^c3r`KN>L!uKU*{fzCo%sG=|ki@G?#EKP{SHT~{S#|IVU;5Ljs6 ztS@nc!P{RA>S`=8mE>7cEdnO5@fmap`E4!rb&Q9#`4tw;DAULrkqiaEi5UzoX14&w zhZ33Z8D;e(=?${6r@Rw$GCG;@b2l1`*5Q#77I@bck=@qst}A}H6ovk;krFt`capg* zo&~ECmS(=InGAUijK3|KhM#N8#jt$16!nO? zg9NkgwcK@G{V7HNSX<87?{}VWRKAYX`*D@<24VkCDf%}^@Gpzz@GXh;Uy$HzEgoPZ zTU{t4X3Ehp5nf+i#B>MS??{P4Cq4!|QnHK(=kS;mPXPBWS!w)-B%rl2xMcvW&@GAS z*Q)ql0454v?m==G*W(`nz2^l;G!C(n{b;>h7mWdWu~U)a&dn}X<63wNz)FYZD#mxA z7cf^7?A3+dVM4uEqSU;6H5k$#1;qhGK>;p>p;Qjt4lMx{@S|vg(w6Zb>&U$|Zc4Uk zj+fiEA=Q^VubTHRcWVYYuKw0_bq68)*>!c$|BsQ9NqNqjliA;qlAF_I&;6UT&k>xr z@UAO3gly|~nWmWCcvqeQ{?Y$!(Qs+4N9F_R&hH>(|Aj?!5H2`Yfa5vTM|pV=Apy5& zB>ryEl%;zL!Xad#g=&QgZ<*9;qqW^7m@m#@4IawwVr*nmXfk4wXP{+jQ*bd5s|E7 z+CMb(Ze%`ff|JL8k`3MG{wb&S-@a7-%Bj^1sQl-?@2{82uld$v_m7uKJS$H5X8a?Z z^7X%)ZU608>t9zu|0iFq|NH@SeRcNQX!yC$Uk}*4FOx?0>L0;^zdv9zC>W~n2P{2I z?apjl-I}X0AC*h@fiF->p1>=hKe*j3P~_*>e+MDOmF~9-xtY#mziZ0 z#cj+;%zja&h@ZW=XuJML5c0oxz{tWhp)ZOZeXuH!5<~HF%XMKD{o*`m7ILp%uy996 z)UWQ869ZI_CeXUncIG8&Xbt}sENGY&7U;cOpg1(b8yf$3!2aD=>!zoCU;OGc=8s^( zKcnsc;j4wnG`AV8J5I;dIfa^sWNB`TM^JLQec_ zXoLqLLx~;F|7QiXHq%KaxxI;5PyA$0L)iIQjie-SR9C`LXdWyhR?-4$%x}its2kJlc`Yy|7s=R z@(4=3_Jh)h>*_t5w{$Ovl4^vtthuxw7=yT zW%tD*b&~0Q#ssUk+@pHaaeEt?FI^Vo8b|HBGOiB2b@J^YY&g%v{PBG;@iO-)$4f!kVjJ_hU z5=tKKg&)We#ROlHmXy(2yhA65Brkgf4-dIb{R|J0Xve^Sg}pF!b9dFeZxa^ z)MGiDMG10pr1??{ig$*3QnQ7R#_db>7ld-!40ko}C3?#Iw#I4JLHDs#@j>p}8Ny->qUKr=NW1EOs zk=QT};Oezj*uV)QQ}zBG;WJ*3yNJP1F=d3q3aL;2LS7(*boup397t+uL0?djp$tN{p^ns8s1DwhP) zf?S?1;%QyL3B#3fLi`INvkIm`U(=C5QD%5}DDTWfkzyD5s5EbljW>cL!I~vOT8}>` zN>PA9Ka_!n9X$IccL-y(V}%)l}$U(ux%Kf_~vw*qK;3 zQ~lY*c#TBqGHg~CGL95)UhO>}*K8O(k$EnjO|a)xpd!v8wCu`vJMkfziO_Dt1ruM$ z_^BI5TV7rQT$#cYbcJ^e!ruw!uY+`tc0*oB3w}325)|1p*?ZTXm-KcedjCycxyPaI zNTcwPh1CG&vB3_`P44n{(ayw2*xsV2#Bo+Pr-EvQlZT%_LHsXjim29)cA7u&9t!Z8 z6N}o&mW#@QpW&y^pE&>MNYw?SwL90PCaIPN92iFKcJVNT$6~3SNDqm3FxI_pLA3%i zFCvk;CLoOLQ}xiO@Q?Hmj*K~443;Td)p1L)yo?VUxOgH&_Dl-HAF6~%PNgJ9Lf)f5 z&-9EtejjE+)GsG07smNb8^|Y}5KK-NM6?R8Y<(z>(pVvpWr)5}0ReLytp{w9;%uxW zfw(k_3DKF+IPq5Bgr`3YhIyH*73(LB+pY%~SfEjUQ2-0m_A|kr=d#6flN&Es#3OlA zk|DMZ1|TE_dB+yf-pnh6X}i+IsI0*zZHB|Br;{_6i|H83p?wz*6Rg(m^RDF09 z!wDkQtI-D3YWJx^i%c}@Tts4*_br1i7)*SGz@};%@|QDIyeDV4Ry;t7oatN+Vx)0% zeiof~?xTEB%!&4DZZz}DmWui$YESv=X;#lSxCu4YftmfBNpF`j~$WH323Nb6TXpOevd^0?rdX6tjKT@LYMM{7GKK2-E z$dTa9eD}tNK$IybQaUe6Imk{Wy4%oBQ zS`!sEE971-tBq7*rtyI<1I)@$UV6dlYxmU6uOG4mZ6}s|jo^f|GPO0&dzFeI z+S{J=HFf-{)+MJb+8F4lZNCSh-EoHm>k9^e4PJJpj1M{dIC2|;G0|8PNhq5i5G%<^ zp@9Z|gdCoF{-qKV{FGZ>#heaYf{hduth}=-8xHAtX{XUA{%9Er;_XMp3hEJ8$_J5x z3I;SdG*PNYzvQ!lOA-hpF>VV&?-@zbgo5fM@SdBI2(0;%#@A&A@FJo!t-~mIZU>WL zE+GME-dGL!H3`_dCbc zVvy}=zT5$>o#DOThB~~y;_8>7ezUb1PsTu&PY~uZi`FifwTzMpcp`z&`Qw2$wQcyB ze^>T?H&%Rk==hZ&o=A259sG*ZV(<&;xhjo)x(8rD%w^Q51wXd^6i^)u=osFC! z+*o0VVUIX4`FhP5MuRw_rv^@~zh1u!J9EC&_=dN!A<*0!;F^1!A@BWB;6vDCgqVBY zy_+os^|tA>ckcIGFcRjdU=yDg=wLngfp_qslDD}{{0KgIZQ(1Ov;hrySkqX)<#hF>%7L(l`U2F#rq=UkB9i!9$!^pOl6U z0_vxkHyHy_yaM5_IYvt$) z7@a`j&$!?9@V*Yx^fw2g^!YHJ;xg;wv7^yH>oF0P1AjynohN2LWTHjy2_WJ2!m1T? zM0Ag?^YdT50 zW(r|1ICin82|)_-#&7|!z_CEh;kbVT$th;tV+7o#WwXhA=H$#}Y0?2xz}7{zx$4 zL_gtF!SRd5rE1v1`?Np|)Wd^A>%irpcV$UWyzphp%-sS79M5qLJtFe9h&5pO zfDlh)kuRuiXe4?jF>cdIn}{)~UvLGTDXq4cy3z>lyC<(bjOKU>2V-gKSr&b>BV?qGtXM1105Fe@6V(ISX$hUFFl z!qm1zNn!!Nd~wL*MW;t8=bQk?jALp2(isc<9VnyBT_gl)Sc-Rw6Bc3(x4^D) z29g|w_n?i~>BNQR1q;!Zb8%}X2Vzl^E^#n^u9sx!mw84C0WbFG$9O#y#ub`+(Xv*=OtM?AuIGVRv85%7z?h~l#v^4{XFl+J#Q59b4dIq(bFxb$f+&ic^wurd=l9^(gsR)F) zNsAbviBlr%Wpz-7X6kf;>Wf#4%+*%rMf0kKk+SO%r}#iNNn*yOH}N`G@l`A6p%OW~ z6&(*;0r~QZAkjH1GbcObxnH7Fx*bHdrU2Sj{cWjw@3J}~DgHqCHBUtR5eB2I((8ug z*Ow#0*GsQUk6$B*2$y-k1}F<4J+H|~uEAgxauT3e=c;g<1`g&|W82f&^wbbz3NXE_ zy=N%!GTqNVIG;+Hp3<<+)vXSKDZtWR_hhDyBZg1&0w<2FUJ*8fy^2`RfA9VTR0^x0 zUc{c~Y*Ja`UIPg}i>!SEaWb}0WrJ%ywPK}vwJ@bw6g33~dl!DAqGXk1PZjet%B=>@ zC=1w40=IO*2uz2gGQw7{*%+TBarv^59MO-VwaK|Tk0jd1`~&DI6Udf02@kQwTe676 zR8HqKjNYtSpvR)O_vKbW)#7RuL7}qib9@n(D)T5j+9ePJGwDZb|5wdM9SDB4O5iVw zb;f0&6cdzwYaxT^HVl_)w=)Qy4|Q}FrOpR7qv!akhIkrWK1Pqy3#i+J5?!n_JlqZ} znfU4BM~N*_+VKmj(m#MEW0*}Asgh#onnfsspHmVkgVA9RSvx;SgakcqO_I-EBYZq0 z=FnKqaF}?#$%i?OF;MaBaU$=yJ*9))n-M8o!K->TOo2qcF2o016o%d2(%onsoc$*? zp@`2g*?2V-%fRH^_YLa_+3wpJydhoY!sw_Ew&S8&?z!dZWu>jwX8=#K2=w0*U^gPY z!t5rbB_=S!^MZf+u5jBw$X?jwM>H!D+|0yf&yh+vU$cHl{{0@4lpu}v{wdUaYh zgSgV$S!swdJ^S$pTw+H-uOiG}wu3g#%!Q#PfHTf4Wk`KKh;W`*OBuqQ-C!Hr<2H{L zL7K>-@tg?aOfy`;%8jnp0g5}Yu(W#nz5)&j?uWn%ipw^zS2V>%Rhm3%JqNpoSQBNv z@X13>d^MLr{;%3JCDDf9)xKk<{s-cyXU?H9V7CFx0o2wVvtB_w+!Zr_@>d{?j%Hzf zJSWoOb_gi%8=-rub1YFnwz_?6x|gc{t!=R+03|CFN-9 zoSek2{H=TyCq7%Pawn(Vc9(h%=h=hzUyC!#NUh-8LoBHA9E&kE{0Dp=CU(zwOJ=3+U4mkm8d=_?_7H2 zx5Nsz!)aJzdB0TNDf%jIsp0!luJ=-F6`d5&t|jL~#mA-cq7Qb_YU}CCgj1tgMKFS0ArT+z76Je7QlfvevosHHU5+ zdu8wDAUG;vXiado>;S@(Nu)GMhq^0|ckodh*^a9|IYW9~Dbsd^(s19E>TmgFXs zfWX!VDtZ;}+X$LF-u&FL;nlT)q38m2aU_oLH&QIva&!^r2ZNu=Y!TE7IIe7APH*9Z zndkcCOcFtPxm%xRl(0;9NP>2J=_ReOx_oE#?P`g=stGZ9f(L;2|8CL1ZC`}Hwrl?{ zmcv3c)M1pOJiku!Ffn4tp6!TNYS-I6V{!aPizfG3aZ}ZYX6Mnk&a;GS#dgE()gKiC zPLCs=$DQ&C3fh|n1;tR_W}R=FmHAN-$6n8uiH9_OmQyXdc#{1t61mIX=zwA?phW%8 za@Z_vdh7CE=PEzTVVwXs(#RbUvW4=P%Fb86Py+j6x0wwmy9@R9pQ>MIOG>zOxWTBz zZ(Uof*Wl+Wd4|{G5_jh+cNR_Q9>5Rfrgie>m+z~#E?2nPD zO`}gN_0#tq$_kRU+)9l!=HB{pw_PI=MH+6*@u#V{JI%w{qV?!~tAAHMl}^FC)&n7k z68mYPl0*o`@Upp zm6^J` z5^Jn^Q7rr4<*-BaPUser1%eUA!)(gS7}41ce{Rq>U)8_){_UIFfauw^o8K_@jfsfl zy(-?GkJof3)8C%y@Xnqge~f2S*HT@XO}1r!GG{z*t!HJLFweVSDebAWgd^71OQ10^#plJWj~# zj}r03EXYI?LUe?*;B`K#?wrSrnED-PeVB_~&m3RuVzjagJ<8}2oBb}iXhyid3{KhL zu58x5mS%c_Gru93<4+G|B3>l)nf>6PA)qRvo^twH7IyEx64^Vh>c`!Y1WXs9(r(7~LQG5_z6N?-LeP4X<8_f)4*g3O zJ@{!}+fiyw>`OLl#nDGgM=x5&UUGO2j~ZXXPxG)!xFQtC%y!}&kzI0Q;tMP&YAW1v%Y4MP5ds0jb(D*lT7dk)yO?x zjwU*Wm%}op9_PUzrR>rY@N<=u{Kp+w1Xsh8;ld{cpq~-Mspt(nAkkeptQ{VgO+V=O!U`(j)3hYY62 zV?~!H=?j!U?#!XTo|Cnhfb2FW+Y-_>p}qDRytner!v$~S z`=-;(=*nrEXZ^6>Yu`=fPnUNnfoGdfkn28OU!J`|z~M@(VKo_#)TJ&>op;lDgb|A{ zA&DwCs>8>tSJP3{%fa5mI(4tEo@jwhnNF&mQI-uUd#z!h-(~_ zxPMk6`XV+vK&pe3ZfLb0U~8ai?4j)Ran)>gS|4`b@c`_Qci*foHmHw2%vFDiBjL4tI95^1V9Rv zZ(MgiDrB=zy*6-BcBqd|uzZICYemwRqD)PY*8HLxRjVsFg_073yrE9}JyySqFbf~@ z6=t%htD;7jlVyQvPK5TZpwP80-)LmVpe=cNjI6A_blixxO}DFRqQ2u>y8-x;nabzT z#P;LoDq)c&<(H?8P8HuBC$t+3cpnG8`MT%zMx^U?+hofpyTy~CrcZ9`PnB>f^_|79 z^YLDvi*T<<8x1bdbBK-&##ja+mtQ%x81ZD_&m5t+Bu@2ByVt}@(&VC!Xv-ylYl1&A zi$O#*${e3gTHnG;r4Q{OJw6{h{D-+_y-I`3u9|oY&ln~7<&>OKrvp_MtAiNlh+K@63Js7s!QY=gaFlc8#Ylp2sQtrm)4%P_rk3WKdc!*p7mt+4ij z=MUXOOwZ|4&caX%!p2>!hAc4oTY{gKkvH+Fp(H9=mxSYRN4zyPAMci1pa)H$Y9e_# zn{Clhlt%P>Mn*@5#KIOLWqTu_EtGAi()0pREIg(u3^>^fQQ2OSxeHNf1kuI%(FJJH zxTeuXHqpgi?5C&E@MhRL!I%bpr!BYW#`9v z)=v)#75)tHRs_bnr#VcfnNOkwZ=)(n0L`7#LRynWypdTIfmbaF0owpS1ArfTM#f@V zAbQ4gZ)7p945e;`ta5<4L`G^xq8_}*0-9OPoSx*JKBt$yJe$r&nuWBTDV7hkdIl}O zNbp+(8kD4g7J*i&X<}R`=3JSWLYZUb06i`gzt#-Z$+WPj%pM`A%elFvGr)>E-3>;a zWAzN#DlpqY0?p4B#jqxOMhM+Y2-V*?C+;(<2K<-q$feF%vqC8SiaDO%$o?j|u~F$7 z(43t`l(@j`@I|1T1eyjHN*r|ts-2&CK5&dVKeStwWC<;M5{Mt2@x?n=BOj>a+^dEaE2OAro~Olk1e7JbD18;H73zQ z^8uUN00&TR(S<@>x2kw%t|6%4T`O{EelG74O16pLyE6sA4l3X>4Z$1waoe1!71_`P z<^E;nhN7F_EQ&})p%thY&nL&~Gpbd7{_Aa2;hF-sz+C@Hw4-fbH!hSIm~b(Ma8cZ3 zX*F{ZzK^eo53(DyoMlO#=Q1;!3-w(@UdCksM`r%RwxWEpV*i8kh~csTCAV_YmqO7M z4*40F7!|L}0jI6V<`U@HTt&$yD47Q7384k!25w!pC>>12s?NC%66guMs8%%zfRX1` zlbOff`5ADZJkZ_qQ6ArBrT|waVpM`eQ-aB4l>jtb81zznDNTk8Rm{1tYgm=J94H`> zvzt+5o{#ipF^$QtfJ3o(!64n-8Q`XobKRCb%UpI@0RUG3^$vuI2pgir>Vh5$S5CBzWB@;_MUQD5CP4%svA97o@>gPN?4S=W*KmY+Ci~#60!R&Cx zvi~Y4aU_^_t|()w$xA@Edcf1~Cj5~a<4TXbD=@$eQTj0=widWqg}Yfc5xZv-WPgPV zT6@4mhk<*@ApwXwXDx((ls&w8PY6Z1q-31s*0MFafXPE&y zh5!wO*Idr|F$Nuh!vbeW+YuE|BWGa zy{bm$kKLrwZd*MXEFxd5we(gM8fo%uun8jlq78_Ojev*Vl0k)lx1k3FmPY=pr5 za`kUWofDFud2Palxb5jujXzHZe_|#o_3~FqR?qqG;n|~A7e2Ks1#3j=g^fRyhN3_!0wRI%@zWvG_QYSG|oN1i(ceL`9)TeRM z1CE)vi&i>}n45lD`8l`$Jz5FFw)u&ffOQPFxBi^l-#GZSpY4CPj(}mWh~A}QgmzCK zi*;U|9elld%6XU9-rl}L>b!Bii9=rf6bK}O5C+B*n%yCFTJVEo(6>H^5@@2)m}BU| z=k}Y&>FMxP48+WrlI6vhNJz=nuLH98L6ozFKjoo%bTgph+&>sIM1P;*rjaJ zcyuJg*8KHC+sWi=Rog-PVwFIbAJI*xMpyObJ*UM!)^f5SaHh#w5@wdcWwC9=cc@V3 z!7$qMNN0JbQz12Gky%poE6K3#GxH-U(&Kp-4Ps3Cn4u?AA#7?R)pPZ_HQOvilH&M{ z#%0AWm46@rQTb5R{Xy=sv-%(8WYl%6zyGkiVL>Fof<3+dv6%fa@N}s!s`FUft>)h$ z0RNVJ<0Md$+~w!E&>EBx1GONbi(YJqN3n-USUGdFsVnv0BrFt_ilzKY2v!Wf(|DU{ z&2ja;WwZKfuj4G<<9pYp+Qd|k7Ju&@0?_yHCj#)Vcx4R^+y_A}EM&kOIW}}PcwSotJj4S> z>hMSUQDS|ueE~-RMuYSi2^28Yhbk>`gBLJoQ+Ce_QCpBqS_gb?Ppc1;HI7K=Qz_vQS{ohaqvaklD&Z|v z9JhOPoVhSo!rweR?&x!z^_hGF(x>>&HS;*zsGL@K{`cH|ttqmhIN?2ToO?c2Dt49u zlbEp_PQO0E8M&To41~|^y)@?8`4ZV`;p#bPzvuQxCxs+;bNk3cF6M?JI?2Z-L}=4V zM>2toowI^k732}{gTf_5i1Po$OcZL}lgZRjOWCu|mq30un=~>D<%44;ZXUxi6FP>i z4HcD%%(}8g@2h-Jtc_K%_4{@pkx7l*Vi1K#gwq(98b9owJj;=yB(AK@)w%CVIJ7C_ zGv9C%@+|)fRT@|6!MD&}Or`u?8Tb!|1Wm7@Rg)r*Oy`Gm!zoAFDlEDCDr8c>*5}{6 zx{wipj<5`H^>Tf+(%YpnUFaq9KOmBd{{k|FNl25Jx}!N1NE&h-&CxVhRXI8-8-84E zYI^(D!8Ppp@(Rlt^{6O^Yut0A6^{AVFzskeY@d)Y1-tggodA2!Ki_h+^qi`4 z1>RtOK{wRz0fgIAP`&zuvpbJ~a!?a_jJXO-S?H&iJB$?XSS6@z>7#M1jWi!KBb!<1 zqv1G=avL+J>^mQzia(4u{kBR7xab$$JB;y*wE)W}Qy0Y5rIf0yvlw2C=-*)`#w?j9 zsz*%*j?(&6Hh4n3$E?)qZIA5XP<&F@TZ%0SfUC+XNPGc_1tN*0gb;$F@EHYf!3}8% zYmFf7^Ed-ePc|XD1%Rs!fCqAoc3TbvXX_&c;RN~rc<@y)O=5xq8k8qrV@*n*51$Y2 zWAQ#-)%ei-p5?#|n~nO3YP;SHkx661F)Jcm$Pch+1VvMkKb5cSMoP`C2U24L9-$ic zVmby|eGs%JjHR9pLE)`{`2uM5g%_T41YryWZj%9fkSGFsvDqX-$(HkhZZ_T6!R(Ii zo2`g0T|G_88X=bR5;ICQfmmhKLE6O2NMh7Txdj@*$gvW$WsVZL($E8xbDw1mC<5Uc zc`%+r2Y^VQzr@KoBvAP?#wBd7hj8J02;O-<3O1-2kKXwKIw)ujMZY^&o;rweRsy9b zJQ&fPD+0*Yjlg0f-Bth%G-pCU>4kHJExJ#l<|WW+y6dB`xq?GIyHUGd1d*{+0ZGm! zP{hy>!I6^(z){a7JEIy5i+lj#ayM$ZE+UCtK9c8~<&P{2QrJpd$2jSaQMB`#aj`(5 zz*kqBVh61_DH_3^Zw!&SNC5A@R|5$_G(bKZAp+riAjHBSD1auqbQ6E>qLp)CGv5Oj z3Mfv=%X>U!JtVV!0IsonC>*a5v4F2P?;*e@cv^z6TKvPrLlCzxsijcGM8nx*CD8Q( zgNmF$NEF@IGni0BSn*~jGGx}|z^kbnTf^~8pQ#&_qNSHm^P``8`}37}&x;OJv3UD;C%*&<@@tYJ|mh0dU_&LVY%50*cUA z?=HCDIT+&pbRKax+;KkAmJ5pTK)?%6-mP-Z4YuVSRARk=2310^^_sW8DM7lgXBGi* zVbMntK1g`ZZ%s4c#?9p9QvwjEdG=V(m&-Zuh9Bt$#SGioO@Y`Mfi&*GGq4yXE{{K4 zSdi(7s}9~oAx}>W!2~G9sDK9mA(bsBl@Y=dXC{z4#HvEm5)(>6c1b~UNlDiNDYp`+ z8t?=E&f&mDKteD^V)=QebaQj>Cr=v{8AE1hGQT$*1ZTEE9@4&zf)VM4db#8e#8KWC zCP1$m|0z%V{m(O!-+anAJASjDXC%iSZcBnyhmAg^e8!$5Q#?&lhXZ)5OT&6d#))8#`*#Dmuq?rs1f z>d`4JJZpm~#CgwnA=5=NPYRW~LJjby#Pcw&5aMjMJ{1)uC}k?8H&{>=kz`>k(;t*e zSR(PUoIE=ylnd$gr8!~H-Q|8lM`{;`#&0hfjovC3YM8_^5!dBq8A8JGrM>+hZUE2I zjN3yW(Q>NUA|HvfqrcP^W45Hp49McPTl@wwwdqa}dXW{Ynce&56?#bV8E%u5apmq? zU0+=1{S}O$~wepr-(@;mWk zl0i)R#+u1DJUfI)c#*~hS1~RlCMqEhFJ%`R9NZJ0AuXcdJKWwBJvN84jYxv%bqMmM zPS!j={{G)G6GV~6sUwnSg7tGhp$^Ix_~Z+#Db--2M?z8{KYZB&ia{#3HkS%akBF8L zG`2B`kii?sk*Okp^AJ_|w=HCNL^D89L9LLl;vy_-{|{;R8P$Z=F8UrqOQ=a`p-Doo zihy*bO7FcYy$MQ_Dv(e^C-g2LAkupW6{*sz6j6FnKtM%$PS#p`zxzFV+;jIm<9_8s z#^6iFlR4+}|FH#Q)1o+IWkXyrnWPRem~7G_Xi3_C?EnJwco$;1Fre*+PcpJ~gCRv( zVD@8BpKX#4*T)%5?B9#UJuXggufkrSwd1(IokHYod%M>l5aV9C&|N+~@shvWuPLG~ zar8ylH{kL-^Vv65+-pmGC6h|+f3;sb^96ftv$?D3ilW`>M{hn^{@s4f69}u=SChRh zUESmr*@j!u(pJuUGN=g?Y)Et_(<|kSBCGNE(t+zCh7S|DH-FzoyLbKyVS0w^A$DQj z?5L;JsO?wqANAteuO1a=w|%PB79U*ki_$q&-EG_DtJ3XdiWWE-;&|d*-9z)!Lb#T{ zmHEJY>@?uh3tI0t{3^nod9VSgKcfQjzW}aNr84ub-qzxm%vtT~;`jMf3B8*rN+dr- z*uB{1OwgOt{y}W>$y$8)ms+0OujW?@8cIz?$}gP+%4`M&{e~T=p)P~GHrFk4-hZ$M ze#1^50vbL-s=JfFm_JK9`x-BPcxL7QD&lN3$pp8eB|~xOnZx%wK@y`FayxJs!IEyw{^bv@6UrVaDM=82ehJu16Wtx-MusfS#wl#ogto`LARC3h(chFbZ>n^) zxgaUFO=r6Y>Qg41EyT57<>LHx*?9SifPdzME9#D-)D@Eqf#J8zrg(zmFkf@Azu39g zONepn#o%m#h7WQ39x(unx=Tt*Z=4)PNXy5NE_J9s3bgYC)j9M@V2B!<4AFiZpI9ff z&@ZM2Sb!$yc#}S~C{yUG3FDV;4;jU#64^Y#PeO-zPplmXG z$Ga^bTACOts=(%BS+2yyFcxDzi&^*IdFV&09cSpnE_WHNV9~5OkBoR3ZL=XQs;@t< z^h;`DUsWX%Be!(rAWz22ea9_)I)=uXtw^NM-Jh7rrs-AIpirUEXsJHYO5`oZH3m=P zpA??XB}LjsXnibz$yrXZob;r^*N~So-m{?!Y_oCS+Htax;RInxtEzI>-=J}RyJr22 zSnq%{d9KQ*bY0F!vo?If(D5OxOG4SkgflK>DU2Syf)>~YWQCp>skb=u+H&P4CqH#k zE$COZBU&dja@}men(iwa@`Ei3GaBCfc6qYW3z@;*CVZK<73;!Xsc!2q-&$aG;Knp! zv3wKWO1>AXK=*{qHbD$ARx0RIS_xiHF~0q}9H`+`nLL;B5WeUx__V0g^w_txev0M5 zm5e|B%SVTXJi$9^usOXnxmT~>@x9JHss!IC5Wc-I(hMfp_}cxefoTzsGyE_Ie4R+c zwq)}v6kGHa-)_H$d2h?4nGe#ml*zGzR7O9{0TW>Vyyws!iZtk2M_Wr&0}zknjF|0W zsun6AaUMtBi8rRXLm1B1Q?D9u^_6kPe?XE>I1+z@(UUxj{r8-+vAEh6_hYm)HJ6$) zJ9IU2pVPJM+g1h^HSOgSAhak{m`*#BK=@!Ai)J;N%pSH(yqn3+q?h|MhkEzxT$Uta z&)zWS`<2s;7z4Zic7w#JzV^Xx_9#?xyNICEv0WkO14yP)p?KbaTiR%hUeYIgi*X#! z?tGeA`#F+@Vk#vKmJhwf~w^@ z$Q!Ns`%FF`_lv};fgkA@FM=fBINxi}cXRsCI9UgZOy!6x@U?3owrMhG^rVYK>KC>T z0L=_uJVn``zdya;R*@is9(c4g-;W%4E7{wqnL;-(Hb3;ppXEEsRH_j0hD4h6Db!+~ zJ)YXtKacBBK;bFJctm@&jG%3P8!55a9c;o_?pM0j1={BfX5;J$<7rs=MSNBB?Tp_09w$5hN@F45D~7KT$^c^@B)+-HA`t}FivW!<5i-2I07&-dL7h&?-)F(O< zVZZNvOc3vv)w#6QTWbz)2h2U0xcqW?^XDDa4XHs0Mt}@^Hl)*Yk~wj;Esez-pnHD3 zss(?O#a=8-^qhWpcy$njwdut6V9)Tyj*fHR+R%RU5_=SI6WKkzy7*S%l9h}6%#Wys z`ug|Pd*z5wycC+R7_$d}hO{QuM^i*>wk0x6q`8tg}(Fep8xh0f?O~6P8_E1<6OGYaM zN-N(e{Az)%`Xrg7kUB#l1{ejUfukbs##WLTAB4F=hgfZ6RN z#Ih0G20|$7z`srLG^T;NN2rIkf#LE@ZS+io9J+(^8WBM1`7^2s2`f4j`pA@{!x@_W z4$&fqa@38XazSJ=2>g*dMxQ@BMj- zwD%~caS*}S3i%EUvT8MLY7_K{k?dU{#nQtjClj!fzSuhS$Q53d|y^6u&WtROqLh*lllPq zG*B#dlDG#5@t(}8o+I7Mf+~UiGJ(`RZGnAhU=U1$ULiH938^lWN2-_3w4NJ=wE<`^ z=2B7TaUWwEGQrm>sP8-hbniu)&Ju~`fv*^{aTm|ZW_cP4fuuz-m>39^k=UXfp{8AQ ztmjKkNESXdvVt&QJq4MPmVvD!rwc5Ctv(6F zOdyNw1=Xoa#Y=VklnzAO8CM<*!up#$C$hYyye^Xjf@Op>NYr!a<@TZ>dVz>*K8-Iq z^$!k#+YAhbPMG{EF@VWvlcFTht8pY}Zr(wRmL0gIGf4LDrv$H#P2v zTerEQ-2-!L$)*B`r-+@XNozon5SunufUk^Qg5FZMq$F%^xs|ED1rf<|BeV_J5}81=*)sP?G4BGN?0as0k?2sRBt3+S?7WIud=JM<3+mqZjuK% zFce6W{_rWn9~`>*ejGGIjb3xW8*F?1yFYE7B1TaBhEGATi7d5BzfRcQ9IbcFgQC?% z@VBH84QuAar~C0kFo^dkW86Z(2aqVb3j(ruJGe6x{Ie_K*jkNH;6dxF*@c zBbyU%gsf}cD^uBwz>a&;lt%nqVP%)9v|Cgy_+IPQOug1jpWNOi>`R#Mb+3MITw@mR ztdiGyoj>a{{;g|#|MU3a)%bU}_7fQuPmYODQI(B&*ny^$ ziH%rC#CWggPS6#N3ROq*VeijKO1u`!pOHEUhHb!a3M(FFew0|2C=~!d?}DtfC2xrg zcM5lS+p&x*SKFUb5(_|1I!%f737i-;);&76m_L&0<*xhz%W6WOTMjxg=8)RT75tjB z?E+WsWDgECx6Wt`eiwJ3;59qdlbY1ucVeN6OlT=gAXWm81rT9)-kvxmI8OGF;TPe< zNJ~t8-ILYALH;Gt+Cpm!iy7dPon-tl@ccp^gN6U3HH((eu(k@Jl8~PS5d^&=^iWXn z3Qouj7<%AsxYnAbKI)s_4#t;Q24H&n^b`9QDtl>aq`>fuPo%eaATwuqDSc`)ru_@U zpu9eiT{5yQODzv;O>A{RrIow{y6eku*$S8f5__t}l|$zJ)mUxGJjJr89zMt#1)W_W zjy@5$t=xGV1UnfVsw$@KUAgy1t~2~i%x;=N0RiJTBn9t5V$#UfiF zO!K-&>Iy+>-Af4>B>j6*ljQlIDOd;6=!GN9Z4S$;c&1Ea@>D@l?Udor}ckYY-_SoydfU|n`ct5F3drp&V?iC-Z!h|470-@)Sy^1$%NEmb^4FyS4w)K3EdYLytO+B4`ixUQJcvd5kvE^~ zn1*bKam_&yBfsr8n8GxKDIkSach~%=yp`cLX~^tM+a+OLPjaDz^uk^d?ZzuTkQuBC z4A8nmM+IBBb(`ibEL+s`;0w?Z$po!W^!~Bs_6QZTKsc!U;0c*4>2V?u6+<9($Z%;L zboUos=`75)FUIrFwXH{t;laLWI8`cz{qW{e&qWnhNOtAoi|O~eiLhV$-%iah+n!za z_l|ONcT#SAM@3wc+fnuDT!D$c*WOlbxb>|Yb2)xT)vM#`>H3}`_od^9X{zDNcoFgs z*h2Xw*-NxMWgLV;j~Bf47Ce-E1JEPiPL^*XyU}91VbD+i^|**sk6f!=E{GBvWmA4d z1;!Fma+pr8%13}`Z`&_St|_7+oVbj|)cV7C%1kx>EX`Hnun`$Y4zuY^wKUM)^^>{V zTN+t+X=78(X12BRz%JXPs+!xXC}xsCY6)Qm)wDhT+xO3FR<&cd+%8^4oMZ`=agULc z_p8}bb4s_;xOoZD^fv-W934hdRV~^GP*6*Uqa?YP+@AeLXItc7!}&!%Dx9?xR-?LT z_z;o<*12J(43Bts&sY)Y-(9zUg$pget;hPv-3*$-9nobh>QTFq2+lsBh9)0Y_55pI zgfQL*!B1r(@^3tg$X~Q76()uSJRTSHr#F-@;xzg}XZq~U^LKAO`3Fp&o^3EDsA8pm zpIWh>kUx==zWGt@F7lS-R_;DzJz-)#=verP*4RzI3tEZ?*w2#Ifk$xm+FY4SHQ;On?(@uYoDW6 zkSZQU?LvM=m(8@hIUXP1gxZQ!6*7igdKMZJy4q1r=hV3sw&r+_Q87^Ux;IR4@ef6Z z4=H)UbHtd2nxi&F&@F*Omv^vW+0o@GJ$*kXv27nOqkGUx zyQwm=VsQsA0VEgD3RDNjkX9I7$xqg*X)ouFPaF+D5a+JtP4LiJH`RJ+qV->ej^O^p zdls1|s^vn23Q=%oVC;CYn&s&83H~G_-^Dfw&vY~ASAx6@u5Va?Z=RIS`C2^f{C#TS zQD1qg6B$DB$1=uJ!OzNf`MG$dr(&Srm*~TyKaXDgoTD#xxab!{c>j6$i4{dAcDCw! zeQok3G+91MH=>)CyvU2M<;*r-WZvH{QTp`EE?JQ-U^8hWaK}E)!1!FV#n_j@Au7)` z+96e+YiK)Mo6dOyO(jexfkCh>t`|U-*pu?(j00WDN;zMNP5QxicU1Oo{%s3sal!)lLWS zn*GgwEZ42_DkGv^ihOWr+hN=g6cqbRr7qcRwx?*?J=o6nq*#L(4LqjrWVR zLh$o4*9qC0L-QyQIr`|Lr`F)s=X}Bxy!m#cDiDkKH7`=nc&s4b9Gc<*moMS5d>SD& zDamnfAYoU|g=t%j6P(cZbE+y~Cs9v$-nu_AK8rjImPJpjhh8eS`NNeW9zORBtzp03 zkvs&h;jN1?D6yqoJn4&kHy&%TxvmyF)nB4k@^l5yj-mgw$)uw>H(Zk0&&m z+gWpjOG;oYXoLO|FtER|oN$lZgh64}`b%7@rwgkk-bIR=0!L*WKlPn2Z1Hysx79c# zb(QAN--Vi%QN$C_iW;mNy&8YUhPEoA0x0H?b>rm0FE#EV&- z{bm62T+XiI1rsa*g29r4QcO_JFrjo_`2!mFyS9r>V)ixARCfFyh{TC6ubLl>xLa77 zT5bvxwUU%LdgWh!t~jXAm@Iwzyf#X7&D^AOdCo*J?kp+O)1*s?;kI&t@0U;+3bw31 z`%d8i>eB}&Y@RI7f)B`U6K4GBxfBEmr>s53!yC>MPU|@0u)lVNF^LMS5jzKZAMjzMNhZQOt=AC@iHe|*;5b2{*LRW=Pvd6E% zpTmnD-Bkhzriu#d#b|sJ68ur0Lb;*hl^zyV!BR}XP_2@SEi6kUZz!bbDW$kY14N1` zGW|Nr8pPWlO~D-<9A9mWA7Z9umpX{F!T894s)rvV;sFPI8j9JCJYBTSczK`%s}-g`KI4Sgvp z!3j};jrpJ<(F&WA2rdzJF2kn?IriYC3JG_A>85ge%l@412BJqsj?!H5xpV=j6 z*p(1BexQk;mI04kaf#yDVpClQdM~=d{oApstrLi8pYS{jgj5!R7hI`q4ev8~BuS6l zKo}F>v)o_OW56D4QDDYm*hdSqX@bz9W4EcVTT;*Y!HI;)P05{8knh@#26>cIOY0&(*ECB?NC?fjn=Zhuq=)0MwXuE>?6 zKux14lE)+*ks|V<6blTK1=}&)5oMFXG$KX#<6**4$t2N2(fPTFyfPqh%UFrgQsD@o zg6{pdBEZxq)D{w55l9GWL{vXN8i7D}>H>Qa2r8VyEu#oV_lk8Gm@+|@i6tFKc zD~qf*{<&zrf)Z$93Ghb)xQqn6aSpFoARW6XbG1*A9O71#PvrL`H|`QetrAI*@m{=> zIo7{lp*Mhy=II%kWIP-ijKGtLekY1Tq_|iL0ikF?~yw$gtuj>y=^~E=&Zf_LVGt)`&*Uv_pb51H0}La?foY0!+q@| zpYbDRofAvdH9~d9MTn-8#@?z1D+M=p$J4*#!03@9TRn zfyy}0>uNQRLxMfO%gie;n(4v;r3hU?@Q& z6rn0o_`U%??kRE|9zmPoMU@Un&H((}fKLk#mW=nuZDz~O03%3VY8NYo=i{Cko3 ztaW&J$wndvNN`~oF?f#28IR04Os^XsR*s@{CLqv7L3mJLJY$WAMxZki%X>&La#p*4 z7VeBE#bof9XrA#1b=N&it{G3X`V(Xqj|?eeqJ^jK5=Q6@usXoQsziPwuA3%C;=|wo ze)llOI=q!+Jl07RSm+a>|EJbnq}Xp1qb`bs0!3+x$Ek}?3!dk~Lo(`yLy3@(GZK(4 zfD??gq($ben6c{Oa}Lddg%+MP&jJsSp-1?jNt8`#qa-JQwhdL)jAUxVSIi$@6`dE9 zO3`4CkmQ*PBI02vM?vb4kTw9`)B>X_7{-H-d(28XiSH?h%6Mo_%VUOjginCP4;fp^ zuEu8r;xoYTVXMZp3jkU;peNn3c5G?dbb*Tp#lMTpIIv`pFv$_bA2JG~lvrXc$B!|h zWvRnU*s@3{4g1i&EOPxIryIb)W5D2HLa=L@iTnRKhfIeA@$o0|LAs0l3zn=%K<1bU z1JW>^)BG_Jm?z83*I_n3GK`T2)gP=K*bU%oGfeI_rARG{0;QHIRvst;ZPQQ?`AyV_J!6-bA~Jvr|ak(Bfz!Mc&IZnbZ7-qj$g|Oz-vQ^ zXyHBzS#uAM$QUzi1Yq!oZzdx%DDbVDS3d{Q+B!9_RvA6=sYb0Im`!dx1}%g=rv;`{ z%rezY6AkniILrpnnz6$0A4i5cMSjM%^v^-9P0FuH@Q1#HPCkA~0m!K~i*`p6TaO!{ z6L=tz`Ev2F3Kr)xUNdCWR4%9y&MxW!Gr6i)g6ffkaF>JFlCS}S3?1>b7Y)w@zWPgd=3`HaQ>NZ2+ubkRS z)obiu9&bI=BUf#)@0B1ngF9+IN_(8R9YT$Evz7~`Mmu>(gbfitjv}@=ii8!%$5r={7P_5r$7I2cnbQ4)nDz%9+76AFV}5peDsCJ|(u%<# z@&4}s;=X7)L4CulW46IWO4%?OG!7ufaB)A4$kN~FO(*ypAU66BR4$cs$gbCsOGeDQ zur~BT0H0N0a=F24Y%JyG7TJmADC>`arUUvTs+G(996|-PW}JR-EMF{39$R z=*Ktd59AY!H206J9`(Qado%3RDX4`B@Num3kNIrR-_iXuS(O$)rpM#|6kS3e-u?$$ zfAaM&RPM*>KLD}JPq)d@%E!1SdeDBwS6tEMWp~d7PV(S>^y9Iy&AS8cRV0A(;VNoF zP?SEbab<8d{NJ#3(oO3qX@?L0fvt07n65=}g>Bm4uys=lW-QHmu@nDa0I|<|9`?kN z<6S!|;zYw&AyPNao0wl(wz|ke+8Eqp){NKoY(IESl2d`bbXyq=!n_6Pgf_!lxL$Gq zbrwO43og1}GYph>CMC4X^_d^$!o8+DnaB%TdNUIiLae@)OK?!e{qhAV4j>j;4{*+j zSLWkIN08b(zx2|s*eh#DU(0)y74?x<@lm4dH|+wb$)0Q`TOgm}L>HEizvAUKgKKdk z4j|TgL)q$@)!9PmT-SceM+f)xYPPE}bC?yVZ(t0nG9B5L;%Hj%ZDFdx^^&XIOOQ>~ zFJHcRav0?8dy?NY+3xV!sI-9pnZ~U9mYUn|2cHJJt`Z0ByRJ`s+~0k1Wth4jg@_mO z1Br{no*hH})kKf;Bh4?e-#_*eyQV%Fl1P+#Oi;fdf4r-W~CJ~9L z%F%DG)ip2}pPKOa&5kw-u%w>KjTJ;TP9Gm*M|D5-tXdi(CkDiiWTRz+$UU|!gXUKl z?!B@#Bs{lDUJoQo(-MokYz=7i49fD|AXa;%`QE;+x?_PJxQM( zlEF+cpJYk7%uAF%0oFIsyR_^T?%tX*X!84_N<5TG zG5q?)`!IkKzw2=0Bym6-EshB&nX)Webw6I`iPSQxxos}`nZdH3u$rZYY&w-6?=w>u~asHj`Ar6Amx zK!4g=yYdN#&GK!^o)wnS{+v@yR@_%zN*m0+m~*tg{B9>^&I36>D8csjO67RW#=XJ9Cs~)j`qX-3{1@aGo(FK+l|SqfA>wSU;9sK3|GSLH+TOAh(lEzB~sh zG}gSYSQ@`f?F$!XC4nQ`>X_u6>O-(x!mJG3JweX&XW|-)qm22 zUP20*=^FVOD!G>;44Ac~R4O;usL;>+IJ-~N{6@D~momLIQc&r41*iUd9uixlsz6$K z@iBJA8jr}t__a!B2QUO`20*EbRD0x48f^T31Bh`&mn!>i+VNp?Us0LLeTQ%(0x=ig z#=E)SLmrSVP5+-!xwf(Dr+yX0Ows{j#W&>C+gN<{24Q7t#ai0p~Odh{XD6Z+43CDx|`b=XHrMBW9L9TMwRhe~d%@Rditx z7?LO11Xj7H51z8TW`|h-QIGYQi1wkK;tc^$$lU=j2DWv)fZ_ zat*?qRc5$G+Jzg#1cURPU{d-{?ss3;|8#u7kMQ?DL}xSIO(ssd$ka<@sC*ope}87F zlC1l=m3#H~a>k}lCXu3bQx|*95!MUTugadGk+u*U*rGz?QDf1;oR-1m(ypKw4j{($ zlBFwt09%Xts}G(n8^79qMA<$wcIexAxpI`)+Vx#zQ;f*t%X`Q@gyrJha|mM6viFer zw0lwQ({P7f{~wgTJ0>XAUsPSV=E-{v`PdjKPD5%mE1!Fc3w87csW@Y;Nzjkv+^bC< ztWNt!lkpSbgwNuekNylkx-rRV{cOM6(?0Gu{)#)wN2ZbJojrbA&dzb9Vr9c8K?&B6jNOMm_EMuv6tp zMl{{F2y4}t_al=6Y*#ioF?BNT#;8p8e!ka(bHyO!$%hSJLw z{)#_6R5V9Ax1F+#dPINl1Z>H*e_X{T{-!{AMMnL2A*J{B!mZ=M=~zU-2XOGE!!!<+ z8{`NHu`%D-63?6_cmih=@>4FDxc3QO4pS>|QT~&w>aL0rz-bh&wY#I&)K-`feXl$xB240KwhI;rGwNq_ZMI z6v8!~gEb@!blSL7B_faLBZ)FR;S#Kt@3^%5z(zw>!~G}}ZIrk^&8Z*XhdF0eg+Kw@ zsC)ilFhI1PjRyw+a^?iS#mytJ%MNv7^H~V@l0e|ja5(hQQ9NwuEHu0U9giJCB%YzY z(UB=_oEX!X8I_o?JXSpk#y<|O?YSd8tFK%M#ZvC?i#>Jym8gRWh5} z8;s$~W?iI7Q#?l~Mx>~?AWUDSX`Cap8AKkuNo^8M7muNp&er?u!QF7G(PFywV*2Cr z)F=2E=4$DdkPO%M3|CN^&N)I8nto9PkUz?JV}oFagWVl6eK<)^Ub7Ypu};Ftwh0+0 z%6(eu*eK6&F!$Z>uPx+``NFfH7#C=2y8>O2nMi&1J$pqkN_+C%z2$#jLHpl2j3DN} zR?txYKPYJLzbR@Cwjd7%Nti)d{XySWkYd&lE zE}NJxP&ONGO$Jnw!audUnPw=qi+;##j9WpIBZiXjV)2A^Geq>wI5M5L{kG&PP`qVw z_J>*9c|HR>rMY(BI2`g{oVu*!0Gb&b3#5;CcZ$##r`u|Nl%%f<3s&?k0m%j%Sp8cWJ)lza*mrxF{? zRYFf=Qr%3fqa#EVzrwK(lcmVV?zhNI%Kbc*^<}!PYZt+OtEKBiD%e!@$3-rU8|n7S znVjqL!P)Bi3vZjDx?uOo#aOjpsiV$hvma&SI}b5JU3Fic?@KrLUf=}j+2^00y#F)t zoe`w?LZ@n@CiR41xZ%i}1+)#Ib5lk`B(fze1?sL6P z82MFtUyY0=WM7tdC3dVu^z=sVd@!^J`(^p1;0r{T!4-S3+8fr(uGifF+dIBL!>w@7 z=}N)>S#XDeq{16}t~c7%az*l|Wfg#p zz=f*V);gS%eeK8CtvA;8kfjjXSOQmfW*{?D@j&X;>qMyD2(wj#O42)Bc(4o_z8*x&9mopCBjg{zhLnx<*-^~sDP7aVF0*NPcAAa2l%$#z<7Q&whYfkR zwxK$rL(YmOARmj13JTl+|Is#j|BM#0di^02GW+N_t#KyGs0;E(3N;|x#7eW#-OxZa+8U{;+ z2Z?OThZJK+%^vnScKuQ{8TTJ3=;G%#VF%5rrc6%mHWZ%5@&weJrqfNa7b1pB5bN4OznsSzYl}S(}DtmvN!B04PZr7%u z6HSVM_36Rw;1&8C-bo@1(7#>j4E4FQvsL&a3?)}%Hdpg4y6h1}rRgBv)s<-NsSEELFDE#Sx)Ha&QByDtq=<5t6`?`qVK2 zmoA}XwJXKS9Et;@RbW$J?CIYfMw5}He<*183T3%}DCma2r}lrRprLxUmHk9dsZ)aH zjg`{j;xG-SEL?}t{7=WiSdDM%2#$jO)4BTFStZ|gsXp1SYn^dI*f~U3F37qieXS zUF85+k5;@|gXW&~eYGN%H;lJ!Y%qo2d3x786=ByZ+%_OFemCZwGC9kogfsA_-oucT zk3jYr_ZIDmRtLu3zxjQyy4VOt#Ic8m?BUDGlW@a<)g*(_wR+=3Qqi1I?jrSmDwAEL zQ#<2!p1lgzY|`{lBe9bfrJDthNS0?(sEbqs7gH3_o`mA(iP%^cLD+H6{ssyQd0X3s zSbh?am&LVlC7(~#{K}&2;Ud?*+9}9t0b&roq-QC}58LjWtMM9T6BE_5+!@7Mz*4iyiueA(DDV*Cyg=3jTyu&X8-i_xIBr=nW}{;HCWgeaETwxP)I|!@<|5 zt-ay{ep9&DSR^?c`Refw$BS>Ke^2et z(d-)oR+$tr8x@%{5!bp7vYjudYkVKncOUo!N`Ic=_|u-GI&vAJwsKHY+WoUz?eX#D zR}3N3d#WBKX-@PSl`LCAnBy@7UvguEJzz-ZmSQ?9dhrgnc$CckXWnDX4%Wsu^hMK4 zl5_j@$0Zk`O$8j)p~2dd3YVdEhPLdt>K&dwW*dqAqTGYMA0Kw-1%3Sr@0`GcqkFYi z?2xzT?148w5aev_c8dad(ffu4x$Z_!cn)5DIm9+B^IdN*Gs}}yPJP5wC@KZ>H!jRzu(+En12-Trm>TMC3jN*03ge0J ziVidf!fjya`Mc-{RhB4!^fU(jD?KO?n-z5D13LDM8Am~n;V9@f=B%uk;d)$$k-1=( zS+nu3QKm`J0u$jWRbD@se<#|tjZwFSZVT*8U=!W78bbE!F|`C6OJ-Ey5L|eYocSkZ z9ypGpfyuAT!DBZLU<$81qcV8@oL0m`7Ao*VIs7dUo<~a>JQV)=Eav@j!s;2*xg1{p32@!MsG_^u%-cQjFWR=={<53z^5LBlaryM zy8iq0Yyx2UpP*S0*Ux`Lv*7>Ks|oaq3IA`QS);t0n*TWSHhmwd_-c@w--oLo=&@Hd2AyX=SBHNXCiPtVoQjWi zzGP*2@c*V)pH1DTROb0FXx2u##%=dsXWsuaG#mD3!N`nA?UlgO#fB7&9wO$JC|0hW z)_TFAF*zOU^I`Le;W~F>Mum+_s^CG)8$JHdF1(c49YyC!*}@bt8F@6_)Oz;5Qfb`E zLBb2;vcdYlc4WazlDqcNPv7ho$N$fI^}j>2SVlf>qI|Z>irxivuo@3h;P=-`R|Mg5 zc2`n-5O*L=RedELzb-pA;+;Ub6~HyQcE+*tFTMI72lS~sBJD4|Ix+uuv(|2aLI;Ece3*Q@_pGXE>!FzlX6`4PKhwi!AMrfDoYn03P$fjd<{ zaSrJI&j~q_ZtrHH5jU6nC*)}f5?c`)zh-n*1b^ckQ1{<|1ss}Zx4%UkalF3i=OB*nHr z@<8H+`|KL~Ik0WvV;tFW!fHazc2C8=Vk2I~Z)Z0qUY~rlroKK{-RbGvwa@JCr%>N7 zBD`3Ne${*b<7Xj|*uv;kqVRk)HMy9BPD3OVo2A768S>6!6aibyih!ma$KQ9RdeK7t z^=xTcx*l_I>-~a)&}m(yB+m!%q~f4#%h7w|Q5&fE*-J$7>vz_9PlNfdqOS~vVs!Ir zX`^&Ma2Q$x9Y!g`@?I?yVi#@YM;V?$y-lt0vR}8aLO$Ylkc*({g+!cPhs1~eQ3!qi zF2T@h$?bg{_*dwp&}EEIwc!?L(G2GGk@xr4SUG_M z6u7TDSw0)eBB4I!kC;AG))8y9ZXqJXe_*1%UQljuiHviq%yT$(c*z5_`?7#RGpv$i4u$7vtA$B~`j^Ry%N1o~WrrMKTSX7_2{?hmxL^S#-&`lV1C5m&ZbhbvF^Mo#Z1f zp)8(=i1pn>(F1>5X4dsj*0vdV)>~MpV+X{)@p?p92ocCDF10ISno1rqEK{wWixrH! zKXbe!p&j+0(!;%i7$$Jta$XX*UN;n285+2oGoM&y!_I8ixcJ@FL^{az(Cu57io{aU z{hsuVTjFQYq=rH*W$o->3{hX z!x}L2Zs;&lf&gXfLik81k36U+c~92qa*w~jsM#7Z& z&?B}a$Fpb`4LKrCH+)j;kRsmCWD>n0IbwD~jtu)rQa9#5tinhA9Pcj6P?~@SV)-v} z+mjT|G8?#xIqu9`W;MKOpS9bd#wg>VCTemT4xYZF*no%!PnvKq8VT9NK939s7kAL% z7s@H!&B%3y@m+bufZNw+slS)@-%hNLchaIdoUF;l16;%A0}zRx!^U-Q z&V#ojeIY%X)PR4hn2+r$OJ7VSCpMLE|6>H|K4LEuAKTLo%K3<-XfBie#|SLfZvK}M z_+J(Cw(;f~zp?Ls8G(&^LUqwv`?mjK1ZIxyJ4#P-JT{cg;W*pL6YDeJV@c5BDf@hAi>=sxVyW1VZlPs;7$k-2u^U9 z0)i8&EARh3eR{fQb)T6vH*;IpzxA!X_h;|t8DWgzv>!jsn2}N@_!9Xgy7V|=s6;PE zZ@L&A?LTAhauf*^Zq$Ah6dVK!;-3LpFb*-B(QsX1UpR)#~+(lw8v zqxt`5*L?0>wEDkdZ@FK=!rblG6Q}fHh{eZ`>}{bdWB2$^rdAf5`&O#rMc)(` zh9>VEzEk~b*lQc|lw?$@hvf%A7ry`Vm*g>x>#L7gYS`v< z&14LZTvZdX%`wdN)No#)#cN8Cn*M*waEhYg-LyQ|FE0pVJE$m0vp#_Rk0k)x|Isxc zIlXz*II%$q`p?hj@BH=uNd@`;+9ZE)K|5Qe_b;CAPG_xg-~XN3A&Ac5(BtsqSap8lP`vf&};uWg@YrvLJE|GW}7UTP8VL(X4?ES8X46OtW1 zE&t44?Hh$Jb|=Ts;?+Cvw0D0t+IWcm<>_Lgo+0`Pzjk<>iMMCJdq>-;etxtm>G3a~ zE^=$)FHaZoj|T^X?5}0|dBs`~=WXBrWoyD>Mmdbe{l8p67JI~Mkj}^RF82O4$={|V z?wDW1C+k7I<^`|Be9Tv}bbtTS3~hpR{cK9}r;K z+1jTlN2lEw{}lvS#|a-sA_rf{bG(%E5u)dPd||5{NDt0sn~Y1$pXH<6Z>*pBN+!n7 z_=&}zq0rKPmuHXotz7*aX_6zxGmpWidOz=j1g!%zRo(|x?zO8?8#E&ud*ck~5`Df-7G&)g~Z=VljaH+{H1 zMSg+!1t{2x-AMXEz)pLwB#AIc83pd%b5HrU#3H46B+B89^qTr)Ne`hnJeYnQ_ewsa z6O;uHVNopvFie+`I`?Cvvyw@3-E{HJl+X+@DlTF5;#su9pYd4^0>Orieg3}zK{CG; z>!lN)uKdq1v;VYZY3>~6*ZB`&Apc~L`0a3PYUP|g5aU2JK7&EOr$+H$=o4OVWW&ic zl0+<1r0V5tK9~q*m)OGLFB=QPwOTZysGc276LPr1rE>i-sQ>_j-x$E({Rr!g+s+Z5 zU3(q+T7!;VkEe15CRXp~cKi8YHoC(X(#{gMy70wub2L}wOYL75J)i5nx&xHm^|KKM z$7JHK)Q>97V!n;by#q1Z@<)ePXOf0Hk7vn;r|)(n^Ech;{-ibSPv>bS6MDA^Xv~%C zSLJoymD#j>dA7r)?@-7QnoNUG=^%05s>IM;Px@FFGqVIAVRw=A& zJM#98WBi+=$jcE&x{9BuPoj<*j2447^M{-O5%uHmao&BNzpE&Y>5-S`_`ERaY1gvF zCCv2&D!(+@grG6}+h^jLeu>|itL^v;3Jjj~Zs%&b$Krr@$4o_6cAgMbBl}FIbo;k4 z0hSJZfal6*1NKx$ zw}QLA+M^QK-P5$)So)7FymMzpf812BO7n-2uSBfHlb^gfPPq5iazE-lZ#K4Z zy}|1g45apvF}iQ}KT8?bk}qa?sLzT22qe5y&g`NV4j{w(t)HCt<>c!_MVsI!hpPRv1j^A~b%jpGjl{+e)r(=^~BrxErbIZo}+SrJwIV(4<2`zzT+ zHTGWke3$#X4xWXf)VACIcqQiU&gUE?<+g2o5RVPP-w=ogFPyh}GoriOJ zH`ZN^ZzVAfI;|q4O06g;6^#tWa*E2{c@c1DNFXWS`sNTT>qS~p8C^S$dJ8P*T z=97)b6u|-`x5eJhqlE&Ub%N+4lHd$PY>9~sA&Z4QAvBZB6GnAsO1qoF zN|BBxNPF9qdsbbpVp&N?dUnBfgg+W^0P7;#i4VmGW6MT5Yhk7a3mZ7cKuH^BoGXXR z8B!xCi$xQ?-DQNe<&<={&$V5fp%t%bVZxTfuZHG7M_9#HJf2j7*o!n7k6*GAb*9b5 zG&jXrZ5tUf84UUdsR=JB#}HB$4UZ+bJ&U3#;Ve^@Z!Jht z|0wL&@g@ZtBZ=N2w9F05F9-NnMaCjS+!<0sOBn~Io|;H)e$l~=;xw?tvwWGvQor(4 zD^glHRF<6Svka9>Waj*;x)yyMz6$IoOTxiVd#Tf9Yof!5nZxcxhErN~8Rx9LQ@wIm z@<3H;%47=voH5(wsWn4-(|0JPF?2WPitl2QDb6~I`F#^lVNI2nz>TsMHot`CKCBP?_r3kAKfsNB_F#Pgy6{$Z%kt-8}|!i76y4c zscz}g?maQhP{AgV#`q9u@@#XnLR!n_JELKy%15hUse(14FE2e9ltB@~GX-J(FIyQH zEF*vvXuBVU#0b?>S{YaqF6-yXvky zyA|4t=c8iCV|Ee5CKiI_f}%|WO`4qQGuS91%UVQHA$w6yH{;l-#rGcM4yY%b3dyDewJ~>WCIMhColR%(RX~_ zK5dfY^WQU4bS|&}Su{tnEfb@08rZ77^;aV8-&#_~C`|_^(bsPVEoBMZAsYeNRD(eH+Le&i+H{(qs zMq9OOV(Txx)x$pQVKQOz<0R>I5Aw-Qg?)Piu1r-D1aqfagftzS#aOD5{5 zK3uEZK89NCyM}=Z`Ht%Sw2RS)2VKg{$%j)tW&{lY6nrCfJhZ<(2q^473kH&T1_}rH zvIOFrXi}~|vu|e%q!12zsu%R!Gl(T4h;80sEP?ww)RR5K2JHsOK^DBM<10uZNYU+^ z&xb~=5v<=sf$K^9yW5i@@PoW3IPn^|TTVBV9t`bs;@t6vo`n!V{3&`|i4sG$*U8X+ zn-iPh5TN>>nuskj^T^CI;A#Xu3-rfZ_hY*V#Fz`(P9or$mrxP5M;h#1BRHqY#ez^n zkHf40frLazka~vg$`EKhAp(w&v2_j9aI25N=k-D)gvZS@m}R_}ufw*k!^SVf_dXAI z_!9Oh_U2qSmK7~byI^0 z1egJc?l?3JP^mN~;4Fp!5{U*jH^O0(@`zI=#vpPsAYlkq5W;SE`H1(L%sepyWkGae z2wXZ8|Me%ORRw7K8ff52QEnWHR9<^jyr7Mwd(xU%b3u4_#V9P`&PeH4ou1U%oMa*t z>$C~v+fSn6OMap6F^Z@Ve3qKbv5+j?7l?+Mf&^^KW=06;r6`I70a-vFZ(fuJMSN=X zAxMm$-S94MNFiuU;O)hY*b6(X2l3njW#m(FH#l@|fsXU~R;?sCnqqt(;%9<`z27^K zy^qA(Ohs`{V+W_XLLwXsKmOh$DzC$IU%(<40W<8A2f{#s76~4OiUj*?lh?rL*5{7_ z=zCKkF+`cMCgBwCL*11~oW00zgtAasL4K_u2}mk2bEvNuopTEdF)p_~10f%eC%`Eq z&D5)qlEkkd(aFhk9yOgD{L;l3uPqYX56h$oO0WB=&V!w!OdN~P5JVFg>IU&of%}9^ z`ZEoH=10IYh)g=jQ^L*#3HgMSgVwyGg}nWGd^lyk+J4?|{e0A5{F}^tzvPT7D+Zy3 zd=x5@pOghHX~G!Z1vqWOtC8eCaKf5o-6r-EDWuKEJ;9$?!Nx5TP2{ofmb3g8)%Rf z^hKYXi3A{Yz&}av^0tzBml7$oFHU4g#gz^?;7u%K%mq&SqocWWmU8e5gO_eyKh*2( z?2z>#n2H<%{bd%P&tCX^ztYZbNf5$*AaUq$Wv8iAo7_f{HYp@|UyWNl|#jaN0<4P&eN5H@-mF zNDBHio+meo;z_<_XDf#{inBABFf_^dh*_C8DU69zD11^`5>>u$8YKSw+DA;w@NPV^J4#oqAOk1?dW)iM|0BrYystyq_~HPz$e^Mm^k#s(XklSU zRdak=Fa~O7FMhV39>?q5I^>j2BES2gDy$9E(?&w0fNLT3aa^-vmYV!s6>}=WkhLkB zdu#Md9waFooKZgpvT+AYQ&To-C58)O2a>f$cvFP`?4)q&7|3>kzb^@Az&`;nO(taR zC${Z6)srNG=H5q|E0d%aJ|CTCrqhG1tP}m#)(0+!5d=o$Y|_{8bdyZA*D~sZ8VYvn z+bK|6(xrj#vzv8wzFy%bbVq;DNp2E6k`T!0gKEAK8}Bo@=##P)kbc>(rP(i!FOWRc zt7IggfZeE;BdC}IBTlSukg3-lr(XiOI21OuP?OuBb_<<#l7PSR#T2sO3uVE&wx=;5 z-V7gd$ccA7=e$Wp3|+i%+8mZa&5o{E9H1HI&`m=k8!St5NTi#s%1gwx1woIK!PQr^ zL?4qfbZzigyt5%bnbI^qJV1TC+u6Xvd1DQzI!kp>A~DCV5-l0-#4qfGQ=LT+ID+88 z_2D3wnCwKlb3Li-R;75K8W9Ei;J0@W8DK%`WO1Td#xA}PB^bpEL2&$!Oy^-PKuU0* zDtKiGcc_X_bDZf+iZ{)dSnOq+PvFbnMU;AKxEy_)%ylh4?2iX!$d;jj%fdl`h)xXvMJpOyX-2UjJ_R@oXxFc#7hf zm#lLtt$2z~jW^jN1tAl=I`$DmL+#NhYq0zw+OaHtEbcp=^Rc*&SdT^go@krA6 zB)az+kI)0g!RH(eN$g3Ki3<}wN%!XSd`5hl}D^>D9 z!Mqx%v|0;vuG)Bi{SDSUU>jwW#N}sH(zNXQPrHpKw5g`gnd}O*(}}3lzMVYDU%vYv z^ZSXg}vtVr+>8Y^r%Ek4Rem>*dH+=9=?wd)I0ggPH z#a+||TB3G=xuOEQMfbo(8b(5S3h&zO#XZ!em#@)%?3OmhIdZFfq6e3@1DCjx%yJ4Q zdf$-u=Pq|NERS=tPyAV~BU+gjXEV2m%vllb!-~DvNn%1&V0rOiFEP%}#&T@pt|E=} z^1-V#?}=MvS>M%whL0=JM^_J4crIyIY2PD#IKV&Oex)*^pz+YT%h_W2ttGJN;Cx-f zk6YuKT3K0HBa&Dr@mm|zS*OTb$MRdJT3x4|Sf`s<=YQO$bdxPbz?W0TB9jy?X zRC@5r29d^)-A+6tFcLClfd=(;{RSpLA%_%cFutppaM#~Q# z9<&h89nYRYJO*@~IIw3N*h-yT83je9CvL(SuyTSDt}sio)u!FPiHH3ZAX=1~FK!m$ zy7z{Zv@bOMWDkV@6fo8JMx|b>>$=KePoN`#pn5ax$Z~)nG3_gHVcnKkZXS`4iD3;r z;Rn_IAJ5d=CfWcRhZ7rdD{!B}($-TWy}L#u5+}e0JwSmpwiHd;%avHx7*&T0l@`9a z=k(G1ExAhAHn|Ck@C4`?e8-)4%|?FjQE`uWJ^f=XDCP@sj20V;2r01^>6KqV$5&9f zTQdR&vN(6zfv(1NhL7{gaC=t8xkoX-=@bHiv!I^ge*&efo{CH{<9_jDCn>)^;!0i_=*UgE`{`U&as=qe zhYSi_4*!bxv|fA-HvP=e@vor3AL}W0%lYnP@!v&laPVj6Z%}YOv3XfP_gB1UN$-og;qiA-dze%lZGbd4fbj1K@IOpkNXrLmNu}FINcFz~A%AJ;pH9<`2jt#RwroU7@cP$Pu7lD!oDDLd$A`Zq58A zas)`J6(jZY=2e`mC}wGrmQLhW{0Ge2r-|~Sv!$uVVP1^M`l2G+=?ZGB$Pr+#9w_U* zl^0XEBc1k#Y|ow6CzS2PUhqc3khe!68;(vpJD?x+L^M6-Os@!{#K|z)qas>EKP~b!Bn^HCbM>qWhQ6 zK(m!}_*wY_`)CsEsNs{F$<_I|cb@dcw;F@ci-}Od-iz|`uFwVJ zl0qnkz(vy}n%l*x6c&RW(Qv7g0#KWS{I{!yF5d6B38h=U8Gp>eKkJNr-s2Hjk{ra4<~d1E48x)V)&8Mb+x9RQxKYk_z@f8 zhTs>0x`>g?iNyg^?<6ylpYdz(v2VFAfksqk)jx@)+(R2rA72gR=$a>KXDkrS9;rN$ z(>^opjBDQMHr*0amH(sAA=N1KO!YUK+N%`lHOZ&#oYoi9UXbPx?gwbYOA@F1w#M8} zrPWWT2~$Je4wLuja-ovP(o^pqFmO`#af?5WQ!5|ESV#mv<+j%l$yf4Cl*qV=3&5UQ z)qZpnhBc|P)C3!8O5n6KMu3>q#0oVOZ&Lj~LS@;;mGKjMrIW`U!=zZ%#IDHF?ahkA zEPB?p5doHDjC7dJD+Pr3PZ(tj9kE%JI8=T#)Tc7nLg_VQpg*b=MSkFhL}S)7?)0M$ zmc8VR)Hq^11n|jmJ?C{$yU$Tl{?h87lE|XJTm-4GR1g$3XV>aCqG@+h2&Vu?+q^8H z%AF>}y{w_BNiNoy9#;4cZiwHoqwMermjr5lsX7EaMv@qM%w;+m|975K75s`DCVSg!&yx|*Yo<@RAS_A1o^#_t? zIEa+0sd^f)<`TadSndRQl(y0T_Bv#mzy}M{erOMi8wKzxkb8i@&+-n^a0)&>Kq0))t8Ki_s^pklp88Z~3k$6o5 z%PSwSU-Q3zA(h2XT|;pIJuo4v%sPGoa!!X-M}cwN;0#6|NB8K?XOBEftCP_w-#0`h zdgGco#5yU?KgXU6pP5BUv4sempYbh{VOCEL{#E(5(R}#;qF`G>NZ2{vZc6Kx8#iy-(NRW7o3 zeFrxAEHP*a1OHhyQJrule4zo-d=H`ao>UiWD#|@K7vsL03RQYh!kn8Co`O}D(oBjI zH)GL0D)=J->qP}~X`tG5#Sc%~&y}}q)=TtWvs^X;b|hGbiEij)akZC~R%|v$cQU$YQimu$K5F z0v?83)W%I0gm#Okuw0408lGqw6q-1T^Lf~$M=ok7-rGigiZvWToV*%MN0oha= zi1?e;+NLMhYEQX?zL~6?+igEI%2*W<)I>B-2`>2+CEMuv`4w~=(})&yL%(;)d^_#v zd(sTgyr2h_6fULvUpX zvP^hGuM28}X4Fzi8*jBWmEO}V?9){a3mOygbvWetMDeDqJ#nd%Bi=eem+UCUg$`rk z*LFuzIc|_lP6iSc6rwTWc;GAJ$O%TEU|PC%1D%jA$0xdkPf~Vh0g#Tp0x1m3CJ46k zFK)0aGND2k`^@((?zW{gfh&B!03;#c(n5gvMQw3W6>%-lyjKJ9o%|S{ z^Gi^y71igJ6DA`Z?fTQRUNLKUTnBq0E>aA>u!dbuPv}WbKFRaOv<_1MskP<_U^B); zHnT`ObkLfos*7nQc8jED#?70yZ(A*BAPMdp#9QjHG(h>@?gI zQTbBfKtmjob#ih>H!=|lzj8-(zcut`6wE)@K-o2*ov;UV4SR?OyId-~#|_W{`gmG^ z5#orR!xKzB4^X4Wf21e0&mb_J#My=ue&0r~K_n17I%2B9Z47&GMIA9sd9W6)2~DMf zCQ;CFZ-AncfH88kb3tr7c+gWtoZdC`@-^(JaFS=`RBtLUNQwQboJ<9p$rLM|gkAg9 zoV~dlAjKFAwP+0WazRHFFd$H4upl;O&qyX)V)VeIN6)kicR`LrWZ+_qM`I5QDWD$; zri3Y$X*W;o8gM@&&U6yv)HtBxnlJ}WD9eL&YK-Mu5hrVmH;IA?r6(-s2~4R#n&Sh{ zE6~H{uzp8GPF)ciqF~k-2VV^1K2Bn(?EsUZ=;a_gl1P8$?l?6lA%$>cBTFj z=As@z!9cL3;b+U>j%E^~rxD}I|AYr&MK+a2PztvDe&s?t^p5I-&hYb;M&T5ZbSHVr z6qS7^DbJ*;B>d;sDJMxOlR6*<<`lh!6lGjHIm#6J-Be}$6s>*s5y!MwQ_*emX?j+a z_9I+Mx5*N)RN0Xf1Kbn|)^sDU6t&irR~kvQjHzn%_#v<~S&fW{$dDirl8Aj0WfovK zR>nsqXN%diL$p)^X?#mBGR2IHFkF&YR+2&`E15{}t8~hT05B{w3(*a%!X=~8Wq9Br zM1$ZXjI&$3vfGsKJCyK;;o04|If#OgepXOFWzIlmP9G~M{}zW&%|}trzr-!Lh7sN>6`)xc+`|fX_HzlT3W-E>uUJ8=j(>dyRBeSci-mNH zh115_&%rsbc?sb>g)Ef?%vnVoi+Kn~fyYqG2`$iVH&DR4STL(t_#o@$VzI+D5R-&|6A~#yBc#x%fSE6H3s^?v5kX35bR{D0a)cCISJyn?* zTd9RXnWbo%w0FtvWSRY4nIoXw+MrC!x>!{>18XV=4P11_Q|{MRESpspbXTr)ko79W zT`BRUQ(Hw0VzDCbt|Ea7mLv*GF@U9c!!oj9S#7ZY90A@{tiplWk>$^O%8T17tEphM zO4(?E6>?6(H3n79-c>DGRc&om9g9_8+bT=jGUS{p%c8&|1(jV{)v0%tm<&}4XHNtx ztEWY4W(;b6de_Wn)!c%r73wp_=&LCp_-6$*^P<_`7X2_2MeV6-#11OXcxn$PD{gpT zf>fXEML#)3eR44PbjJq!I0`&f{&dJwYc~q~lLb6;th?o@v-7UI0>E%pYKg?^4-M*2 ze2Q-i>e?5}Nyn;=4C*NE>q|w+h7GD}Za>kmm*U(5y8v~YS;d>9^#a}%#~vb>h@M*e z1R#eY;GqC8MGu19VNOADQzx?o?|^-9Ecy0Y*gjUDannmGU}*wSq^d#f4p>=-qcT>k z*^VQrQc89YoPuK-W@kxM0V?a7pp}g;7qf2HFsfS#U-~qqCN#SpWKFGMK&wg+aIAOK zH8RTeLD@AAQUvNe7*kRNVrv*vlXX-!RVarTVg-N)$Cgxh{g*qS`WhC8VR14wPz;LO zw}v$(+F%O7Uv;c{SBK7Vh#|m(UkL@AtzmGqwq`_Er5<9u9cxwR!B=0ycnAMf=k0zx zM1k3kF0+O;0|%x;(e&y7Nn(Uw+j06FTfGl4Hles;^zG_vX!cNC8N?cf+8tKRJ!T~w znV{iq*0rW4pj1I|8>3q=QNLC~aeWH_GEm%GIOaPk0t7l7XO4VUiX*} z$lOhefNKq-Qi`Cm4!vXyI91p3(B0Kn*HQ%{&`bE@4+W4xaShsWcJMki?=d&30KQP% zZku*C8iG=k&gASY>Icljg5JZm-jpiX4ZKf^reFGHjkHleM73Yuwm+`2)gOv`2=Dam z#umKmqq_(083JYxG2DFGt3+!Rmr!%YLgWq`xe9tIY}!mT8mij}{kz-z*RUE5aoIR} z03GNURaGd4Xz4aB@9J<0?twCJyc(rOU8fGODuClsmpuZG`L(^Rl80~xjt5X}R|f&R zq}o&0u=WozO5wm#=pf0%*Dga`uC+!-ypB{5L7#DN)f$@b8d`K6PSqOL(jgk$aOB}0 zbF&T*F`i_8a#}C zQXNen8xD+VlHnn=d%(0W7$INInts6RH^PNO2WPrrN=E%NqTgj=`ma<6Vn>0%oUcI- zz^?9r*2-2fIA$q)>>d3;8=x(d1LURBq@7<(1+{j1rx#GLIH*ysK`Qq8gj(~m0xxcKAjUCIB@!JUE?A41%P6_P6Q9(bk4Yz zVbf~Ph;KrNdj}2|N@wd>W90)Lhd!=<9ZuE*HWyD*Y0TKeJ#dD;Pts<#Gyroa=5tp< zhby#;?P&He;oHMnuO1vI#zSatJUd0-4gS`_AVuJ8J7&+*R2Yq!YS;>&98#D1xue?V zPV?=ShcJM%t!t?@SZraM4Rn?;PE`Hnx~&QZ8-TB2_`+ z(Dd%x-EE64X~;IbtEQH}yn`<|KVZ65eG!A>(X|tD+%9rG4B?6ozXjI-95wta;HBOw7JslTZfa>4p<{tNUZ}H*nEvHXxUV4PVboVKJ4ANZ$$&IJ$%CsJH+Ve zmU}>QnK?U29rD!Q1B#vvdnzU}@Cz zEH$MsWo=58rc-ybpXVKa(r_Q*ys6aMYv__QwNS%pc3{VupOx zcb|T(G`6YtI4P5UB$dspuc<5%ZEyCXJ1BbmWTCth@<>7BL>?!a?a}dxA{y2%QQ1`s zJ6ropthG zm~Fpx@n|8gYLD*Z=n-}%RqbVvai*RjQ#g1WH?_h=a{cu*S?%QE@e~CJTV^AxI6Ost z1zWa11opsmqu^$v6)u1?RRh?}BMghXl1B{RZMBRyx{mJq32E1H!029(&l$xrLB4*D zUOoN>RSg680dam60Rnh->qkM+Qy`pwA=-8E^4En#*To_HLR#{-tbhKFasEOz+9L{3 z?$>Yi_zP9U@7I!-THo`h9540qFAcgbjecFeMO;c6lFdOc&E8$fAxO0JSQx)t*&=Mz zP*4OWubd^XU4e{@Q3suw*Uhky=O)?S2c#Yji~&wg3L7bJThm<}QXGINJPGNph?|68 zshT1r%a9u_qT7tqFf4l1iuBtzuiYSFvu!S}c6h+7wg1_4ie#jiUX$y)_pD%?TV z+9zpUS6;gCw9j4lNnI?~k>}lL7N1{JVcy!57od~e+Qdp>gk(64{BoLvKTxL!_(3C_ zJ>0$kF$bPR4k0We+MZ;0Jjwoq+ytyELPYJrp5*~CTOz8=o z{B2_$F(uZ3E+`FCbSydCP6n}_peFh?KI}dX|c3%}hLJ6N4G%+(5E2VOoFV5`$$Qvt> zE;X1v(5{v;H2HXS@=LsMyCLqG;m>M)^;7E?42-p#WE6rTZ_b94=3&osTsv%BWE|Kf zQ;a8{ZVf50&j@-?T$Q6r1CC=A~_al$A)*PKJCA1S^LcI*Ep)g0O2a z#&YY;PhTPom#&T*$AY|7*xcCc*Lp(v#dk=L9JfYN$+gd4QA`RV9wMLi;ynlZ|HfJ1 z>ubREV0_V7#Z%ljzQ_AG-jwzGbvVAiz+R2-xK*^Pztf*_hUt=!zUL2Crg2nMO5dNn zt-aahmB#6D5XAXlXfF+5Z-PtXkBD-~5Q?de#`vG$Rf1{lK_3X6vgV~DZ5Ip5(Vt-) zDA7=G;K||AK2QYb`D=l8cuZV>e~2;lw%(3nx3$^?(DsXzhEaK1#nKVk4DZldN?*u4 zldh$Z!BQW*DJO`j4S-}2)&_7&3woWy)r2=wT-3`1@s(*rFJvd46m>X{Ju#$n#$!kn zwLWG*SU$$U8VOPJXWd(N$2KF7E(RldLLGMtT>;~di?Tby1f47 zzXbL)4nq12i~~`1^wvNAVpX8=V@mUUAH|+`lka;v>$xc$yXk4_Aw$;sP2c=ai~dTH zsF!(~q5G|QhH09YMV3wTtwoN@Pp=PoK3BIN3S6EKGFt@+-dR@W-NV2I4^q~wFMZy7 z&mr;)P)Dsxm}#$_lU2f2I2$5cPy4gCFHS|0Jg{JfQRPqfv*`@Hj|?i@A3v$}6XfXAbF{0A* z2LyzaMKC=z!Bz8=CMko4vYVOUy}6O5_*q5E>#Hels|T!37-PF$D{Qm9;3hfWd?H<9 z0*>{ReJVZRq-6G<_|+aMj;KbI=5m2vg{K^c#gvxH%zN@sX>smHvoJnQV@D9V{EHx- zV43wi=YIFvZ>ij|8&xYbbHXVTmJ-Xsp z&O;`_&JjK?>uRi&2L(nZg>DC|P&_u3U2Q5?$+DLXhW$(*#4bZneZIothVD!yG)b|x zXr}Yg1x!YvA}T@8Q&MNNEM-t}<-+Aj64p~HWFmRvqAawEd8kcc=XKv>!+wW;zfpo+ zp}bBkO9^%4-r6xB&osTn9CYDRD&O4}C5aw9+7GepFz3a++d|_Gj z(pob(Nvm95z}fWzrd31LTKHDGO0mjXv${pQuA#ch+!qwf*{Ai>_cNS43sMGNK{hk4{ z&w>S|4oljA?T4uW{qJGThQhNj%fPG9h@hWM11Zed$#>do0gBdn#DpxDGmBMgf?0#b zmJ-@NX`J1S%=?Y8_BBOIdk@9QYD)I{!c$lqRP~B=7nx4&9_UPOLQBOps_9eF#SR|( zJqq=>w8!<+ey2KpM!&?|pl7F{in z`WKyEk4xL@5u)g6OasR|` z6G0iwqQVj+6KE%7N@E#u)NNnv?f zsFq zkX(N%aK=H~%|JCRu?Y1e*d-Y}TRol)I2QR<;DB}KczKh}WadB+cTE)?I zuZk~F=X8F3!2YJ6m&VD{aQP?yc4C`=Utwsd(el2p&=*NU)BKaWEs5Hj(Pzuf>D&}M zyh5CVYU&q28PZ+n6E^=}{X4lrt~(I&nu*A`b0hZ4y(d2%lY7Wu{uRFahvF?id>Aib zpVF6^JBNlFxeRFie;=|*Oni%GjjJepqYakH8eVyHZy9=1;2bWhx##EciF@F^&#sus zvA}cX_%}W8#nk075GK{667X=zx}irWp+U(GW*5hVaeT+dG4#^m;d7s`tL?(?L#)43 z@#|m7pL%_SS<9sQ>+dlA8lEM_#By1D6J{1b!|9>8{)v14GZe#-?dW_pd*=}sd}7CN z{7pgz;+Pq2(?}Z6FGuq9By6?93m?HJZ|@Pe_}g6LDewt5%P+}64!JX6s~RCy&2Uwr zgJxTW_=i6dh3=XYpHlqM<;cAL;I8DH3Y&Oh>3e<#wDK2Z&~!T0UsQGFgF^iqF)3ZX z`e%HFCUoc1cNfxs^~XWO#X%Lul_0e)UTFtV5(7*qdNA(7SEvP&q+EeLaeCQ#6*~9V> z3HB9;xQGn+-@t{DcQ3)c05+ovkco5{IxSHOPW^^#2sx0i#1dpG8&4}>Fn+^hHsVi% zS7wAuWImS2A(yp0&$ly@_`-Z+d8D!Yd;Y)D@81;2^gEfYW?s$sM=7*eIam2}<$s*X zA>qPG1H2vODI5z07O*n$Hh1HtLI*_dC8ZFTK`Z9&RduvS<(s+ybeBu!$tNZe;h5}i z$6M+*hmdD-tD}|;+hf{eCadGENVsr;OuR2MRn_YBKk2u?n>nqe9wcbtZ~85hoSKWo zoc-$l7hL$?XLA3B3#+{Hc0s1!^Ns(83u_Dn{VVC500RCdilqhljf)*l(gUKu^7($5b|Km(<%S~}3lBFU1 zZ~8r)8_6}uvg!ISxbR!lX^I#mrp#1ZR8(g(UY5*DDLR7b3Ks`kx2sPQ&j-rXZ~U0+2A~E6P4a3p*=%D1cS$OGY(4tE&7@=|;KC+%_K|6cwdZ^c z^i`~Om)9kEx~a6SHkS zJ2B%{XGX_ASKM&rND$^=4>_CI7?J<3H0XXG|D6Rg8>PW~yr`_yto7n@1_c;$DXFc( zsmh-5cn_Q>2z=uPF+=YVSbP_+Ho1VtDtxe~TIq_~9VGT;9B%-!s|8pUnp5$iS+5l`o_ zX4Q3~vexk85x;Ib<%hb+#>Ejr_DdHa{t^*ZFfZzuXg*a z{vkt?GU?}L)NQ0bSS}|DG_vRZ!=_mI+_T1C6-gBCU&DxX>-lJI`i_iNmeVm!6=f)q5uel9zrET27CpIka@{SC|S`@ zM5Pe{=_tUF%pmyic{8g0enFCrWgyVkF`SZ#k)T*lhA6H+Qd+i{YHnCwAn7bZb$p#5 zH??1Iu|CG_sVU8OPX$Wp&1j+JB4M+}M*qoRy3!5_BnwhPyZD-09($k5s5G>B?J!QRV zo;aVF5*A2{ijH4hhCoOuyEx031>cYKLbGlDQvDG#oksnRr4=zV%{W`*^F+f31|jvlrl z@vM`<1_=en9A#|TavBA(Td#k!46Sp_N7?2uQolMh;upP}(s@zrGD**>7#}#z8TP)E z<&ULOd?Lt_-nMLlI$J^aphN3e%O8Z#b_-Qyvh;88fYsdRJ2+cvkVRT!|1pbaEo%mr$WY;M$L6)mTYq6XfyJ;fzGee5A`%GK021TA_cU#R?X0owwMs;(Y8F;p%5UTb}) z*>#BL)G{(%l8l4?5(_etN1rg-&irD&1dB8%9jIkj6U<9i%8pTF1hsWL=Er4f_nDU z4!!p8S8)}zN!r9CG<-i0iTLvD#c5x%TO_N1@nmOq^2kYbFvKSjb3D(rFeZd zw>`cY#Ja#u(toy1_k(>@tWe>7)UtU5^1=FszmOKU&6mzHm%%J1b3P&U+>HAg(%a zp<%)bl%;ACd^$F1|6C|ZXVoPaWZwPM*$TvB{cd|Bt6FWU>u>W^7Npo5USu5#x?fmJQyyxVA|%GM%f`RhkWMK`5G0Ys!dKEp z$6yR}BgVj5pSXTKPy0!?SZ`izKR{}HjrjFglxKf)##eF)A{Lyj7f;bC8OOllVJzza zifnWZoC$bbdF%F=*wBP5l{q`KBzm&L6Myv>o zguN|tr@J`*1yQ8erMvv@30(bnH|7|-w9g*zO{WutH_Vu?{ zkjGY4lt*O#*DFft`0*jSge9OP;_95sqa+IP5b7l_RNeK>-j(i8GG*Yy?kmI{dgbr! z(-#k!2*RGmcUSk!ew_-Q3vfTwJ+EFK&uwfk>=xf+xNjV`AHlG1M?rw~2S4Ir-<1!6 z9j^&p(*v2L(Jll1$!}cfZ#-m%0_XWWusnn86@qAoeYjYBAIW`Q3k5d`1xzvr3g38$ zX0V?I1d4llf?B*@3WvDqeiY33sA%aSfb;Q*CtU%S?bBY1bdyl6*JgUd6j-u;~>hcLhQtUE5wBOF#6c2`U_28;7f&3;Zb9e30>+KLy zHs#I{LP=fZq5O@4QZ)pfm zOSn%S*c;s`8e`oNogqq#H`=p>a`j7?XK~DSL5$WJVfmzOiK4k|A}dXLblN(wS{Jlj z5i@D&gH{+RJB2fwL6wdf!!KxkCloJr9X8?-d}rylkq}UYXHYtbvST}2O}0W8?7EayC+klF!LuQ7U;zr zA5P2##{_8L3X+k0a?HZe08~w7Rnli$5T(R185|fL0-leUn-k}k z$GegTua^pam9LR<6n9$5mFT}} zFma)$9Om{C*yRe~NWZp96^4A#XUh~xB310l+i)>U z%-vNC$zwi+4!Pr)rk3r1MYHZyOg-ZOpFJvFD~m|;IB0=u=H~2a5+>MHh3sXEs#W{$ zX7%tXTPuP2!EtKJPBcRvSu5TyEmgUSUery_3uV<&5H9@teo^o>O}Qm_iY5FXFNj%9 zpI;4LoZDMlC2~29N+Az*Q5j}AA*hVteX$z+h$MdBY|Rz(x&@=?kr>T_aRePMBA>On8Avw+(PDmuJL({`_}Q!f8s$;7Xo3XuD zavkbo#_j@nP?~;X@epr?22$3z7$3HG+vEki*SbU?^q9rDaVJS^SoG-lA=2@XfLnIK zkN4=$dYvqO_K5jpF4;}~N^whv=aAbgAKvu^k&+0nuZ+bUpwwrg-{y6N!UAmL1ya^U z^wF^QimXw5;|0)WDBxAJW{pwu1N$)Wv8mGgaqauQd&bInVz!14prAD=uchnqQljw; zP78J_3-uZC66<#iWJ>>%7mBpPC)S_`$auQ*3Jp2&lD$d|tQQP=S&~Zwhc?6e1Mn&K zK=Q+ao?hA+!(!J%wiPX8xe{5X=9M7ASAHt6_IMMIr`+ z5JtXT_X^PW8J>=+>-RDt4oOfAHvq|OEQd4O$29z%noq~v5yyWhHu`G$TJ;Xi)5X+Q z&Bm}mra9_{UrxtRfYSnbHTPOQ$l75G zmcxH|XG9^!?&&A6Gf7Q=W2vh%ta+0#>r&6yKmEZ^G{0^i&^?{7bnsf}FeKK$QHz~4A%m9$>d@_eMni@)pe zXI1z}aU;hb=!QPJ4`sl4bF*1JE0Sg3@wJNICRQX|6O&evq^9BvxLT8TZ^SGF{o-DW zq;az&mW!U1#N?TM$^=Uo`eU?}^TAdmZdOc$oNbr64H4QHJHFjuoXbQI&PkQytKgBM zSK%pE@tCMFcXTd$-7~pXMElf$QUC6sgk5Q0D5|7oyei z={ejDxs4EtaWw!T);#k&LyJRTXmKpaY;^SxHI7_#H zc005iaagg8SxG!hgu5*KyI*y7*$H=ji}#4aaF{%>BP9H&mbmjDjw>E;f)tP^a(IlZ_8w8` z=?4y>?Dj$3Icp@1y}5tJBYKRk2aHZpG6WsI9Z=>HBMd@1#7|?C_Nq%_9*-C!n8YLH z5^AfU!>?Z|`q*<$Un**w z`@|aktSUfbUt#=+1q_~D0_A7eXdP`V8SZf>U}ZruC4;<&?Ku3^Z4`nR#v+Sz`4GmQm=H~ zqNCkDc{z!$mP>f-49zYgphg0^VRYgy5xLCBIqN$=*1J)-Jr}%+(|BQVb)W>h8^kA( zN2LWo-2`J|f#C$|?ot2b&aA)BRN^*A;j)>!&)h|D^!Z`w^TYM$Lqg+&Mf5|$w+EN5 z2WOjysDTH2qDPmDhtP|M@J%iUipLm%hq$T7c*aL(qNkATr_}5RC%LC&l&9#A)5N={ zM7d`ln`isY$25T_JCw&Tl*ba3ry8GUuc=3OxhE?WE?1P3j_j9?i~EAPhuG?SYsRO9 zJ+*F|*I>rS;i>xp&@+VC!+{e(9c00c^*@+l5MVwKwEw2g+U9ime<0^xT`sqJLlDV? zGg@j$2Ewr5j62j6@`R#r`QX=J(MTj?@#V7U;p`~Jl9>!fGbHPaCek?_j{jpA`gav5 zo>qIbp>(eJpJ6Di)W4Wvf0@=Wxe@>0sI$%0n_a$;2>)h={d*Xi^}Y3D7@ERr@n6Hx ze>ofey9)HTv*Ew1K>wFv=s#7Ue-A_dWm@Zay7|Z1@J|)!pJC|#jT!bYXTyI`XSe?+ zGfY3|cG^Mz$BtqBjv}or`J})!hU0f3W)_O^Z){i%2Eqc!x5$hjSTfmYh$lrup$n~B zpr8!=pFAc79Z`xHxQUd#L2wh9O;jA4kW@?|@%-?iK#KiWN+Ay8 zo9{eUXty-N97$izG7+xArgKbWK^O*QL)hkI#SgG;(@`BQtua~aq3C}E`RZs*gwoFw z$VC0Jmf?je5yxmmOEokqh0Qcpjv62cZcc?O1=GxhHsSjtzDy+D=F=x2E1wG%6W>+| zPv!9_bljyqF%+JqNl!=LA(K}MPBraB(1Vun=Aw>-|3vgc3w@92yvcjH6h^wB{@!wk z)_Ntd{T^`H{MMGvBnqqao4MhZfBanVQ!;+-5ELCbLTu9`T4fIhS;3$5J$Bxh)Q;h6 z=3>!gO@;!J`d5^~j`5dj;n|{B=H9OXo^`{h4(5&(Y>R7lJ<)Ll*At3k?O$@Bk6KS9 zY{=Ai*QS5V?5;bam%Fe+6M#G{g$*Vvo3}#Wy_y9*Kl49|%JDnW<^lMYT{owuty%=* z=@Pia)5#K^_Oirj-Gwp*pk(&rx)NHBAj6aIC+l~)g|Z@QyIqc-Y`u;@h@?-2-Q$+$ z`huJ=anqU&|GfFzLat(~oJdpPyED4-?k+=K)+NLePxl+7>v=xvc9tIRDf6W-tlJtS zDs?xMaE*6j0P%i8am<^Ztn#KNEI3h0j5Tb3V3olp&@_Ytup=V{zqStgy2Obhb{U*S zrYi(t$_vLJXOEOITneHz>HGCX&Q-L57}3R4aOkWi1k#dptB$z{4tYkI`@6)hyCe5! zEC#%3uw6mKyC$C!Mg>19EozLqK_4KU4xC^9XwsnoSK9ZenU$1`>&FUtLxV`S0)-A? z@JO3NBvNqR0p@W>M6S_VJBtP~Aq=-Vp}Zqo=kK5IVgi|@X$!=J(1Kv0uUY&;6%z_y zL#WYb2ThhBl&Z)j@S4T)RcJ+Hg$)Y7TY@7gWI-fAqK7g8n#7bB#*^03LW#)k>P$#( zQlQL|sXtz#uXoI;bsZQ4(LE6yGB=uL@Vay@G;Nli@nISs@m%%H)k=+H85(oTXkCdc z@n%TT1}6o`RY*Kv{Pd+k3)CW~p5viIEM z;983s!{7|^LDU8k`Cs$heGTa$QIEutRpKe<^QC0;6JwOW#nP5GSV6U#37_ZA1^$tc zV`;>c)yyMJM-wgLu~L>zP--t}tx81}Cd4Ah`PzT4{J6rzLw|57_pjFwY~k)0HC@1;Anxl1i}x`ak7F zp2_Nb6n#L{qD8b)NgEh>f#_vINFcRJewtZuzu_F>p~OmisycrL5^@x%87m<`ddUv5 zC^ST?kdW`{>bQR(+8EM>OyKr>nPPJws0Pdy1U~C$=xmkTQ0{s_7vuPv4+qZ`?3i0X zB?&*!bcbBG@O`*uO72tG5*@7Vq;T}q**UgD@x zX28OBKFeqqiR_g^ma;xcA|!5)axE}OKVos_sE<0cHpS=`SsYF-@agTPfKk-|ZH3y~T9z*gU>~&q1#Ln;gal@oz2J|8EW8=mX zMk1hbLF@YDsf-wxhT(eq$s2)`HPVY?t|`%XakpINDuI*KVNad<+-3SbA;y*Ikafly z&MQ+sqTLB~2<^hkHTbX9ax>{w*L)0LjAcTeM@)iQJ>?<|nWWpMDi~Pv&{_7?Jk%v^ zy^AWdUuP6AR>q9=>jbIaPG|+l#?9w-YjZP>4P77y#TaOq+vvPgGIe*Z$n!=52+Y6Fju7oFUs6%+vDd4`~i=iG?;^$o#Y^Z72A`P2Po? zadCL=v9)96ES%GW&_T-EP220(Qhj|1mW-!L>-DAlr>L=z892!U+(ps&N?3S=%aSXfxbI;uN6c zYicP%kJNv?9kIukI-Pf#H)!9a1ot|jeCF_IMRXo?h2&%onT?gzbnf|+Pds)h(^Q{; zWZKNfJQn(5Em66EvPr<=zA01VGk(_fnewu2Sz!?+)M2foll!U$amPWVK-FXBG9s1N zx~ht@%OHz6t!pB(4SBiR#REG9&dVyx?)Fad@y1hK+{&2=9mc$Ux`tzB4YgNogO|Vm z>9JEd5R~pO0#_$Fa4;rWDOwR#O#X}uA)g`5>yyFW^oV6xxavS(QPAmMaLFL$fI6_Xq%QG;{(67@O` zlUl>Jkn91RI+E>>N=TOF-EJ3`78c_*}f7o&9lz z{RI|W>6eH>CcY5Z0RTncFNy)|!^9svH-X+ARdX zUio@71=|l3hb9GmOmAIGiDi~NEtf*>V$FZ51^K%Y%PAro9eRZ<5iNr#m1-73p;_E5 zQas~AiIhzB{anK?w*yYlLo%p|(uLhwKZk>{P-?5%6j2jrwNR(GgdgcSGz9zAJQ8_+ z_G^43YUj|-Nr^bMix77b3_6IoiVb7E3-6a8?EDexoD96m^$HJF8a@PW$A*OTTK`rf z+FS_NNsfFJGWlE*xUocdV`3=E8FevZ1_y5285*?%4m3+b>N|`&objHMh+gT5JP3+D z%Z+{*j-Drp22t`Deu}9bj%+lJIbrrcJFtUqC8RNR13t!VUxivhs^3V&Ze01C`Nraw z5{`=lPB~+VmIHwN$t=nizF%0 z-%|WaLw}6$gh~?lFB?KHr;O*4%BUsBNfNk*(dRg)j*$46hS_D%5WwcAkS_D*!V&O^ zrST-h7UST%Q72d|r`7sd$f>KG)uh&O;dkeysSKpFmg4)nCB{Cb_st}eeNOM^Lgik> z*|<*POvo4(N+#uUnhwJcY)Noe&#aA2Yb+IAF~jemG5rmC${aw==oQQAQb^4S%j&JQ z>fs{m8_8;6HqWLZC#TBpxe65y%kCw~gb~kjFLrN@O}(Pdp8JG9$R$QIlHIMBH9V4& zi<$){9sy{>bEM9FP|x*0$S~WF!A-+UFipgH&TU1_7!}KFVz#<#u&ebR3t zPGoq-Jr0v))4)qy%yhRmPSr|F zwv#l&J=4r_H;oJZVbotg>QJ@$q{sP1w7B`h`R0^S+(rWZ8&f% z+>LGJ9zr?Y8o0Mx*(!S_eQ7umWWoy7qFvS`*d??uLv(@~F%J$SBi!-EXwVUe!9cp&ajA4{iaIwv zaFv$~28v~|Xz;`XGH=R)TX~!U*NAiEOfh7Dt83YQXT(`WGARfv+drfd`r=B$;_ncs z88r>Y{@<$%5pdbyE&~}l8$v(;_y|LU(z@^VXzC%q8#5EFf6urZhJ7~^K{OXcMNNGu8nn80)FM6bpB57 z7{_B9Ywx_W=seN<`rCuG`c~?+z2jRvlQCN7_RFvHmtXJ|tqK91k37Fdcsf_;x*zGf z7w9^VPCBPoJD1D5w#RZTAcv@UJ?WW&66KdH+{v_r`Vm`+_Ng5b0w%I#=)yzr**alu5S!uOXdCOWYC1N8lR|MsCrKe_t*g6RYFjksg1 z`ypC1)$&FAVX9|?qEoURT(2S9wO1oqIPwtKxNHoh|#tSsv3a z`He2B9LukLTBZ}efZ^BiyOOmiCzr*AM1IqAd6yWM#aMU863d}rWd(Oh5%iaN+W`oq z6)B+r*^F92JQT+(flB&s%%bJyxM$r9S(*Swl6YRG;quYzDH;gLiW5Nwk@2}cUPcU- zY0hsIF<93H=yFJ(LT!%#_{L_1p?K*&Ccr%7) zi4JKap7Ww)oo9g_%|C~Kn$Qbg4%0P7+pc-HdHAm3wU4c;;NR!~U!%pn=PwjuyAq!e zbLCnEJBUyc9#y_o{dxxUY`#c*?5p^8c`$uc*#E?@gQksISFifLBu0p24~M#RW25|{ z&_mzqh7yWoC@>IvbmfG>g(4hfuny1$l<(OAs2a9ZRBK^Op5Poo1((#gui^+@pZP+! zB8WR&Lt)|k+t7ajsF;BZ2p}uUUIMHt%y5ImZ~86q1cZCR4D=EQ8HX%L;pO@>Xy0n! z4;q5T0knzwc^K)Os6Q(vG-NSw4*eg$aTX4Vat(%Wl1gpwEGF2_r37{oc)g%ghr@F_AB z#KkFx3drLyO;4OC)Z8L{Hjo^f7ZlXsG3(dZQ5)0I_ygU!6h=%k>*x2VORVXeCpahw zAW#bgK+fz58y}6CV+DS~Oof!%Dwg!`79_s(ALWp~L@|T!M}$)FXIorOXv0?|-auOu zC`nDgg*8OO^aE#I9s$V}Y>jb^uo|mNEKT{pL&7WP91wMQ+*CnrKz|_;Z$5wp)a46=!e6RZX}$r z`fjWQepMqBRM*smNxk)y*@h!Gfn4l zgsbTmOsEKpoybi!A(hIq=s4 zCfp!QbX)`aIhg}1zBsZEXGB(Qt%~&P&UM!BVCKmyy`K!51Vc0P^n}-OA9{2oP&ntP zYL@AhRmL8rJJ&edpX=05lKboj(>#XeXBiHm`lNSma)R`?c?W6OyO(ll9@dUymfR zUAtb^KJ@6n4B!sD|I(u~Vm6_B^ZR}nIb6L~0`YJ1X;nL1vPclD?liC8{8;zl9G@n3 z#al8Tc)fOD?Pv0bey!`a9WA0i&mR=y0bM#zO>C4t&%NK*e{NY~1?IRU5I#UFm^gX% zNJ~-?K8}O)T(`3>Y%+G8w}-u6m+!tFX>JzGcJbSnRlgm5B~o5LhypQgWxQQ-d{$cH z067Q~c-*yv-Y%nkemXONPGAlE?W=t3XRCeo4qHLLb3MVZ3HCUA_l-D1kf#hwL+foGk%1exF8PyAw7fv6aQfne_Cw3M@nBq zaIY^Z7}@Lq2pH_cuK^~^3KBsx zCHdOdr$^eghV&S!<&LiIKH1aZ&wVx|qWDKmgEp%izTomXrGzL2?VJkGA6E4;@ zEJF}3fe9{y6D~0{ECKdIw-^?$7M`&cmX;D8of2M@5*F_omINDK#~IO}7SZGy(PA2r z+YMJ-qlHKX){PD9L@wIzfv zu;&oC`G^8j16Zd9z}QCZxJDgPgYAY!0hpt9S^$?zQR_=l_nd&C5&(>R)NxAGJ9YFi zcFZAX33ZXRm+%*OaE*5Gz8buQD^6|BuLRR8j+=c-7VJ_e|v4&T% z?w>w;q!5vt1$){7VWz?0F5@8dz>zLd;E2J&z@orDsKFpzaCVv~uF@!o5B&{sJQo)b z<}!Zc5cvKW{{jnk;2KX51Gc{udAgKxdEv##E>9ja1z}Z5@IkiU2u>sG?F|7$z>cn99ZZwn9MXd8dxe? z4g^|v8mK0fBnJYiCVGGzoW(bV4K7`E8e9Pm5)BN91qKPD3r;(oWZarDE}1-jlr$xo zJn5EXyPN?{0w(b7^Rw|!Bmfjh9+GVuTn3Z_Nt*+~KMl?z2t^?e$pL^+)dfQkgrX&e z+>?YxA_k+ChhPDN7Lw1BVbWe3$YPp?lBvm}5QG|rgX~@gW3h!s6NIX4g{GBE^V%5lJchBd< z&0HLTd#H)bV;8q;h_(ViaN9zDtVD&tAWxRTIfxh?6L~wQtlR zuaA<+04btdAD@I^V}byIf$5op8JmM&(?DY7K*|$CvTUjB9i@mpqp;|LQ7~ygKcO5O zg3B;La1euYY(b(CgTsA1%NQ_qkW@*?G8kG+ewxvoeHK+>B2A>iXT<tH9=OOk@5&gYD=`uHTz3LC0J9?^GdcVam}yR*tD+LkF(kusw*}-4XHyMxqXq!0 zhz2`Q$id(n;tZRuDBu(pjG_iCJpQ4^XAPaJ5x`nyAHt_TXr95#l8wSswHv;#zxq`%e%u3`DmTg(8-3HT`{pRkJ$9I!l5A%bg)mC3p~z7Y5u>L z&@v$DiL|TZ!Q1zl^tULTv*myBDF0WU{jWw&HiOo^<4J9)0m`pTZpY;C0LFd1g z&_93i{Hu|Z-RyL|`+pHv{k?=ne2>o&{0}9~@xfHcyD#}pDEZ$!%A%5;zj%~?DQT#8 zfjEAT+d%exHT}PpG|__p^DG=iG|PKSe(XPuoMY3y6hl&V!&KA1 z^K2fCF;K%AXFtPn;mPQONBI;T@BVk5ZF|~}u!}N1_z+jQ8|DDT+>G;M#6EbG!7CE^ z(Ui0wjT{HXW18G(@4vifabXl0DRIL`Wfj31$K}MWAo!DthK019(vlqwv+|C6_`J%7 zQTWrE{snI8l8E!;le!8lP1@{9F}lj)Hc}7EigDxiqlRqwu@4^Qj+<3P5PRuaYgjNH zO~Y~1Nmb%}TS{5k;ezx*I}oPzAoB74c9-Kl^y0KsJwORC2C-t~2%9q<&<-G5A^ZnUfy?71C_IaIljRUqQ7#AS=stRFe&KEAkc3Z0juN zV5mG18#-?<4Uw+m5p5QcwHa|*lzqLNyxw@Zn3gtsKI$pf=51?0IC?x;P!+J6oe9b2 zcvwjD@;Vr@u;F=Htryt8Q3*Nke7rT`;<-C#^zrUIvMC4M_6J~tAr$|5#)AxqPGmPC*{Yh~;0O@xAdHQpYhzyet{@iC6Rq7fPN=8ve z&8>Z52@!Pv8eOvAy3j_$y@c+z;vVq&mmvD3U%0r;-?gz^ESDWLw~G8gqlfnQl(i|FC!x^~Gdpm=5( z>QRZ%@E^q5$3uQihDcr#k~R)cbX~(G=1FP&fjk>o(_wT!?kcUy9v0A4K+$R1I?M&b znxrSPL6gln+K?&lhG)2g(0Vvlr4S#E(y`AFrbeSFtQ5CWpu?H{r^$$rDbX+f^XJtR zzL^=jD1QtB-k?V=K4eAf;Bhi`6LrwI*Y#ZbyCaog{F9hN_-s%LqA4osv#|C3RM?`S zsVGGmN0_8TUYcczNaBYwceXk;7)>WqLybe1yCTX;nflYf@FY)>W8##O*|pTltZLnF zpoz%Q3+?fYgMUMD;t92U?!#OzWmSgQ8v%E`6lX3=qT@F&+Km|6`I#?`Wi}49KOTaI zf!2vO+A9010i)7kQHfT1D%3B!Y(`elyPC^VT+NeC29Z$t-!H-&%das_l;7x< zUuo4^2(M~L`b~=gV`{@}_q8#R6^2yO%cC0icHx~B#vEhIlkWHbd#SaPU&nnK(28sWsp*( zX6ncCE~y7bPbN!UTr%PoCgX?t)R`rr`1>BEcm1eZRPB%YaUFm(&RA+%WX4f?1GsbKUx2B^CUb3jgLSl(n>!o9zVmHQ|l$50e zyh^q9-}?d)4H?2DO{L|~Qz?*%Loc2bbxAd*PazvszpWpBOMX@eYWit>H*!>&8Czs` zmtX%geO4c4F5GkBDmzbU46rwoqf*ReMw?CVddGL9nFg`2}O^ypv;pZ93d7Sq0J2kei z+gplrrT(R)S?yFY4teZ2|H!j1Zx^(lT;rQr2RdKAoTE{BZo4@>c0_1j<*|3n0)EO5 zGZJ3JyYP_;7+b19tFs8KbIIF=v&M`%R*C_tsL`d*Ex93gj!jux?61bVpxy6 ze6h8ExPF*Fp~`gtdH5Q)?TT@@PX~B91hD^{@jv#`Vg5|IgTtbP|EKs{3ZbHCo@Y@zSWMr#Z`j-BJZhvuk0pz>?>y11=mvfj-Q z-_e1mnhV9nXX&AR?`|@ms|TCqA*HntzMW)?hdkTv&%U^>c5o^BzSn+V3iO=@TxS+d zddd70i@k=}ETvWLJNnF+O?~^4f6y0yW23h2hYrA#uvT;O{p9RlDdze6!CRh+r-8#~ z*x7+xRcS_8NYK?R=`%I58f${8o6@1NN(qaqtFd~hu_ml4dW!4MB_lmk7Hu_#GB&et zdq3}kVBcgvAeFI!nxLI)$O=S=YfDIFqrahAaPA-V$b%3c*ihC5^#E#DHPcYP(9l$n zcqr3gXfb(cbV+DLsHE(pk7S;cNHPbisCy};d$p)xDWy{8uoGkx4}lAFy;xY}y|hA0 zSmS3UCsX~lB8xBIeCdBET^L%PDhG5G*yOl`bIb>}97;zd$rTKGceI4FsCfwQ+h$03 zykRMkrZ{0PQBpj($6*SXe2#!6_c0r`CNBzEhOsItqTzhhw+|H!B8^0Rj66~H*P*7} zdhq-}3RGdUw_}@6u}hX1hc&4=TCw>)eX_kB_Q4;Luw3%%bGDA3^WnJHM{Sff=I}-~ z3!qlx4l8gt`7Dxw8ORkJ_*fLU3H!C*+5Skv*ji1~nZ-B8F(QFnw~57jr6f8Eq-KW+ z7sV-VMd=oIqvVHB><0xG%NiD7U>H>a6T9LV&5RSzpw4^|`Y|iEq;QRKcH;W&8rf`X?Hs=1?!;Q)U8GKBR_lpwJ34dNB=ZREv%qmLyRRYvOQqfD^YF39@rja62;i z36~s0oqSOwG>{TTcdH)enruH567`f4)2i-uBoV8gn&g%${xy{|EHz^}HS35iZP`1U zE3H61&5Jrl$t`)mbiC9QCEtFXBTfHh-efLF&e@2AOH| znN?3QA#C!jO5Op>;&PJy$IIzf5_;Doe#>TAKLfKJLV0LQqu$+Y#(LAgnueKz%69i&1R&VCH|Jo)eMZqrpzUj5<#UEIyT5v!7(Oz&ZXu~Z-$Ge zS;=F7ccmN6W8}{N%5BW-p2Idu_h5_o5R=b8%EcjNBQQ!Ql#?UkUVtT$_raec{E^JX z8nrNFz%s4pK@)s|Q^=Qu^Z?LP2@e)ZGmZx%)WJ&ebSqR{Ft{Z~-n&GR5iB$`FO<^o zSu3J{-ix)sq9ZgDmwIsfMC-BeC;F08rbyMD869u>5?NTvrhYI;8#EA3cu?@#62qHH zC!v}oonk5D5{+_I0H!PpXm>x4Or^qW)7{+_EKIb3t-%g20n&o~mj`Nce?&L|Ti* z5qn@uXgPywW$Uo%7FQimtfFy0;%iEs!(1(YnAPcMg#Z=}Exy3`-1n6JFy$6b+*d66VSW2iv`PCx@ic!AbxW4u%Tk97Sr zIMWYLjUJDRl1P*6YLW@U53}@?pDRs{t?cFzz#!^o-G?UZg2qf2@x;LDJX3L`rs6D< zNZn;iVR!FzF^LA4mJs7Q%XWuosb+@6S`_NiSPLtd*6LgHl+Q_~Tq%;g#lVr|mP2zn z>DKU4?yBH)&&==&5B91UydU)#?Q0sQ48hR|=>ea2Ysz+;3)adw?*(C7Ij{hMqMbjbz1bG$9En*`npKVVvIG9EclN$RY6F2FIuz@x^@4iaO5_% z=PvB-P3a0daZfaF{neg+ikDq`3cH$NN%ud*C&@ zwl}+<7}SL%t7J4AAT%3kc4}s*sCvpOpEeqM4u%f&Yg8o7H)%?z*H~EQ+_#5{+!{U2 zIghrxP+KarerI05rk4JoomHueqjN61i%Puwz z4IEl^tXb8(jVe1OI27t@jL;FHCA~}D>djRyoE|MBKH$Hm4PhSg z^(kW(Zc>ITOBa#ntF-)U#034T-`CLYGORw~l*&YU%R-N~)AWphARmt9FcPH1*=HMpVsEbR zV}>*{eXA|KFbwjp#mVD_E3dy5--d5^=YJs4qd7n# zST3nqDtusSLpTOupiD>*m%S*Kvki^sJ!@;0k}`&q$`KtM_)0pkN1N+L!zvj#=oxsv z4#yhTF0#h}DhZ*@K4Ti%_2_g}<%{l+KX) z{gAd&T?DK}boinj!?rjp{ovL8J&_%Mx`=Yi0T@s6$>UtTbOx#VU3wF_Xe>D`q$Ig5 zL2C;6UF4y7IWm58hhPIeH~~VsYI1Hp?Ky!D*g>OJf$LU{m|s>AGL5G_ldd(_dyxg<5?>ao8VVNSyyR9?3butwTnKe=b2#io(WoiggK`x`S?t6 z{6Xz@p9vSQ_9q=)+I2klrYa0=-Xv4r6pY2DlO|Nmbfma+_N}sdY>=JbSSK8iIWA-d z(UfAD3732c57DgoT(b^LRSsrABFj?Nho)mop0bDO6NkZjhw)wqu?$D9L5HG7N6Aq~ zSoH^q8wag#V~+5nMO8|f0DFLGN?oNHZ+Ohs{#MFs*%` zk}GPKw=Xp_sDVD2vL?oSvp&}T>G+$(ma{E{7AtR4G|K77@I90gJG&Fv{%m8lA?f-I z{V+%~TgWyPBPZUnQ@M0rV*Ha89tO6Dnyhc@tvF@&-ty4+=T(TuBQo1p9b41I)$`U> z9bO6RRd$=F-IU(tlI*IeGK)xO7k0?|$w}!HR(p#&(SqNP`Ol6i3rmPW5fM@mzlJ@R z6Cx-D0;jQKYAcPy*G|8I9#fq?S`$1&Yq`} z(pv;l)l`#IWLUPcpk!cc#iq|D1B8#iNW^2&%i6}~G^D_$Hh&LMwoLxynWU>Lm~=Pf zo8ezBkSVp6F7^6##3_x}maYtjV=3f{)=+JQ<9!%a_t%zhOr~?cMN?|8H0(~e-v#ro zuiRNI)f!C|fwa?YkH@L3F80?~A8bB&l+|n}4~)hWBZ-VA8*5Jvhckt8#X9THPN&O_ zHU}H)FD{qc0|JaA3OBa5NAuM-yjk2HTP+jWAwM_Yy0B`;)!L^r3BDMlJ zOWRVTA1+PPUO_XQnt?wihTsHgC5h%{h(4II5eV!-q|-!}47M*v=K@soT5~t$AS86K zC(<>@g9IDX6lK0jLo$73U$%naWk z%2>-6$Yx54OXFe2&XDf@QJPil!DW$#Yww6-CFN3?nbYtQzHHa_5KZ9aOZ8+KZI>Yumh0{Y;5^ZQgy);f2kL{p)gXG0 z7pE4dP{#FxM_Kj7DA9<}Qa{}4gGV`QN|=05XIr&kk{9v8qb!L3;ciwGiKVW^lAh#l z4k{~edN!|E_efeSMumR1sOf{zJd_(?f3a+sA#XozSap7}0=7@$Sht-tX|^=}bcUOB zRCSD1T+?|CH3ZJK@u)@$nPOR9qrztCMkk zI5;{V_%ka9Rg$ID-yVc1m*bJrwe%eqIq#>omODTKtcyjsmPR0$RD-U4=VJXtsCJ2)DAQ1yIj( zNGDj?h0B1ZZVjiJ;PBpsT}bIBJQAb;FEd;~T|8mY=mUd`y1Zn5+4ik&BV%=~x%Sm) zWY<2H@EwJ!?;{>BN_x8NsM6T;NW}=I=w%1O7L}pzE^*= zpN)seucDL6HDc7DhPZ}hE+epR$RuKvczzDf`kHlMthyKXY3PTgZm=q2mV#3Fadw#P zKSSW zS=o5KXm0(=C+MTFwu|)8+JRAR9W%0a$b8W{6mw~fODs38q*JPO4z61^IMu3tSx@eb zMc>`)C&$&>kW6VtJ>j!)Uq9Ipd)@84$+Yq0BKbeOy=PF9f4jCD(rKY1odD8%?+}VK zDNzs*1VfQtLPvTDy#-K2MY@2ECelHAFG1-dQdFvR0Ts#4|5?x4YpuQCclPYrGkfy& z{*bvd$$jN_o#%0UFI8YHj?@r2B7}{ zpd4!+B_|Ki$)Sp&4qq6RVIF!iTJNHmrp&`>4F@c>JKLJ94WsuCv;G#eE&782BIhus z%Mu_{ddw)XIWCC-kEgpR1Ct-dqUh0}Si)^&c3uPcvM#}x=rl#14Pewpf9DV_2Ya3d zCXK4O8%pXz0|Xi>O%%w(9;|mqUIx^x8eRn%biowQVRdPop0Pq&kb%Uwl!tf^Jy{$a z=pL+{{01l_^l6@gH5Qz1=dR8DX;CJo`*lV~f=3dPXHp;zoR_hSyomqEvCL8(#Ch-T z##6mQn;6u0DImAS?}hm9%G?|&G#NIXrgvVY4)j#C#e7gH zJlBo@cslF1f_MmZD6bzUbek*OfqRNWY$Zo_*IB>YZiLOz3DDbv!2q6LU~|ZW#iw|CimMmc2U~NZv^a|F66H&n1w5U-I`ayV6!sb1V_eOZ7i4 z$pj!sF96&M@R$5TzqVK_4n!luxLJc#Pav`=T%2VRv{R`0aZ1T`4lsZSg`?OxT^Cb4 zJvluqnGQ!oIImzM!)~h~!{+-^ywkO4q|^-Hzn1T+ zdI$NnPTlk(RHweA4;ewp#;8|UDjCZnZMmd`E*;Eb)k)nwulrh;EoAuQB;Wt*NRIe5 z?E+Tw?_){wI?H{J8P-jc)FUq~SS(i1rKA~8Y!NMN{+udTxiI@EONAAxC3U#-B&- zu$~!xNq%CgaP1!)<~0`v#1pT)$0j}}R4$)M%lCibFb!|3YJAXfc^dO%%k z6IWkWm0GLBXN0i~UlDrZVH)P5fbUo@EBrSObA(kL|I6LIINnmgG;CgMd;67jE3xcZ ze&v(f!cR7fdtH>kFz{h_Omy!@+v2z?xpe!x zK9O$syXf-3ku+}H@aXhCO zxHgI`DA}E(XC6szh|#9^lG5!NS$#g}&};mmtms_ZFW>1wHMEj;h?%IQh4Vr?AQV^Z z|C-X_Lg4F>w_fJZ$o8~asmC&PVS1UEZnfdP5FQgY`)G^+@nU00EvB*9D@JIboKG=M+_@Jv&j*%^D2{i{ z=YcC)rwLsYL+t@KsaZ)6{JHJ+LYt4*yTL?$_gXSs`tjp(WEr}n@n zTb`pJ1o*X;ODzcJ*eWYOZNFx#bjqFO7&rml!&K}5<;ShD6krxKi?Q)~1=^4+!+HvW zhok00Sr7TqK&GBks=Ieq;}6m+D>HetB~7%+Q!q>I92-Q0AppeE=G4zM0Z}$ya-w-8 z`msV_bue0PjlyIFLY28?l-{5Xow|VWT%g~x=W9XM0P!?zQ@H4rx6lB1(Yf_IA)l@Z zP6y{}gv7k;;OS9LqaA(YKYjyp+a4LKZe=ihFGC)#!N9s#rLY1;jF7 z86WKx8xK@Y06_fXqZ_nitN^c3Ua@lm=_MsBEn1EvS~!LFUMj&cxZuD64euQXKb9>| zK6pu-Zu`$XEu~@2!W%d5x1PQWpwLsNp-9*#cE2&ZI1yx(?xrv-jB<2iNayP=$0=+cYxRb@&fb z7q*shdv)o}UQK9=tc~|DFj%I^d1+C7?<=Dd1Dwu3IE&4gmu9Uwmg3ZKIGd zU8o;L))NN=Jx4rbrYpsN$c()8Yaf>{dS3Yfl9Ap`pZ+N-Ib;^VCZ&|1z?YsqY0pFB zjThtgB~bIOC|xyL!I8G|6ufe)EFLjhdbk_9y!m7exStTZ3lz?fR+|O+CiaV$7Gyr` z*Jy#?AoKSwLU`wX;~%hUkw(sn*T9o4jQF@ej?@HAIC0yKm2Qv%SwQh(#Pl zMiJGODd(|s-_*P3nrZg}9#uv@{4^ko0&+r`=b-3}$!7ZND3N&X}3AoW?Cb)7?~ zZQ(if8MEPe=;_OaaYTpxZekY?i-&L2SZX5RjtkSgM6e_XJKZcxh-QB9s+Y3 zL-O18wk|*3#4|5>zO0kKU1-uoZ`CO0a`pX{%j062zkvv%;1cVWd!``cI6sYO+>FIu z9EHVq-(da8w9C`x$-njnMPdr#X?I__c1!}lhov{f8{egxJ`9&ET3XUMXwB+8sVvG3 zQ7SS%e)p&RT=&Vd1fBD=?VH5SuMGUckBJvIDF!1788h=LqmBNg=GJ{D;V?gHDxFTg zzdV~HUj88x0W2{4~#4>EgFg3?qnde}2<6u8$ z|1B6h&=V6Nd-bXTKLW^cg`TJC1|lk#%c`DViY5Nz3V*RV3uH6;3@?k#jaQtH*Eo+y zvEa0oaK}wtC$6|_&0I#!IAAl*w2I5*9B0asaI*?$VV!_xiLrJ|uxU=X4Ue%uParlW zm?+U}ZYm%RaDNo(l{XWL&84QVB>5{P1+p;4xUz;=Cxta9MKnvSp}04%B>#iM6yje% zB3cfU_?43R=ac^(CeKkyNpp*O5Xx=)G3iNjiVzQiw4U_IjVm4EygXJeWDzVoN505T zeLbIAeV$qlPh-BBT0jbupVKT9$46;twT7nUmFRY|qz5Gn=W1yY1k+<0qTLd&KcZ{I z1P@{q*J8BgXM%WEeWbN$`LZ*3v}j}m+1wv7R7z!Rn`gjT!{+AU1!x5doDtrSqLhHh z08pFFAYyyT_shZfJXl&THSb5bNPikoI?GGP6F3bWKS2}#s0UXBOHedD2Z)_b{Ye1? zj)(*ecBy}>@FY1sMNrNhGt^>Nl#I{_3jlQi34=pYZ5~kJRumZp5Jm?G96>CDKuuD7 z7NBTK0XCL~#`Q=_EoaI~EX92R%Kc)fcqm2t3Z)SNk#fM2fu~Ml&XKV~xZ{N+!oyob~&!c@6!4*#}@1_1IVqD@p*C@WD9&kk;* zyU0Ryd+0_Ni3Gv8shQZ5=RH;k~Lhr{HG zT_!3R%JX4EjarE01}F;cps_+JLI6kgqFLw)dhb6m@CcfKLmKp~0?;Ppr-(JYlNBlD zjKAr7L~5acAOe(~Qc#r`x~I>LDIcT(rwXaVatA`0%TM{}49!=NBPRzP3*KmoNSlfs~6 zFw}!U;RJxB5D=4qV)+AWTUsj_0^ER+BKo0$+ycd$6_}z_;l~$X4J4(86wG$TRD(cq zoQ=7^4f=5)KRXTmfrShzE5Jv{P0%3RgDNu$YBYwDs|8|3i^34Vx1ML-8F_4~Ouiya zn}PQH>I8Kbp?&_id{@M5!r%=*h7wm>xi<2+r`D>3R@Vfp-T2VijuosTWlTV;)T5p> z!&y6}ib_@}k;>%bxZvQQG})}7zf9$X&%@`UtG7ARVUspi1Y9s)F=7^r*T6&qaH zF`!j=%kq;zP6qnXo&LvHAHseUhsirJ(4YmdE`YU>7Hr8zVTFP;A}zlGpc$w<8Dzlw z*;fTCuy;%pTBtmpTxu;TXuSyKiZc0+7y~I3r1Aif`4ch4dD9qximt%-C${fT!{48? z^X<01FA;3H`12mX(FIiN0*`TI9d`awMS^b%3_t2ZTy)WLbYFhtq|1*(2&G=}>ZVNY zW`Es1-rdc;+dV+m!zb3$tJNdu)zcH(Q+$r(hI4QxM@x(KdRX@=MD!}M#6F4ZRa@%S zxcCnlWS=e-4ieF4P|#=8-e(ad%ulWe~7fGz1NdP zt$y*?eu&e68^?f0`+%2&kj+&nmSfOgZ7}f8U~t4>Xu)7m0p#I26*ig0O{Q~AN;tk< z__8-5Ieo~2_+Th~X~_Ggc_zoO((#~IdioiG<_}&?EC%>=X}I8GxR7I{SZ$>A&PaL0 zNJYU&Q3OzYWsu5(;r%1}aiGR59Wr+|E%YW$l&nTxZ1O{njAk+_!7iYj6lfq~Y^Y#t zq8(RY`lHg3@s(X#84+TDk?9i8j&7S-#c@Mb@zBQFJia}3mi2D^;3;+w@>U| zjP;9+r_3|VrPF&(#m&@>zvqozy0~&GHqn&K{uezlkv_3yOn^ob`qK%rF$D5)0#yeA z@rE#v4m2y~{8B)F+^(|V#d$6!!ugl=@9tz{D9s-%rC7|E9QMPnTLj8CW6;Pk`oABf zGA3w=KR!@Xe^jEL+ESZh`mA`tpyc|Crm@!7zbw$hN;B|isD2$e?Im4P1UOKx~x_kQC2y@h%DbpWmSG_+7y@3nHfJ0Fh zgAqVyEMf!m!G?3OuK-lwy-@P`!&5a#UIy4z9n_Z&R0e!%ih(&7&$xQe3Ko-_qoB@M zpeyyPb;cMY=OioLTWNOsQ?+^%?A+juNgf9yl^83QI-d-OIhiIcqV*g$faCA$X)WSs zxC+V&+G5G#HwTo4a{QzzzWrHP8cOvGtuHQ6Oc%$SP0deg_tdhc@KC+WW2KzUVx{{K z&bd$kpBWmPY0rQucYVTS05_x{f~Zd$#pIz_$|gLh2|&dZg)qRZ=4Gr3Nqq`MuU@-0 z(j+U z1%Y}dy+4Aec=DGCwV z3iBBW}(ij)k*wt*u5Oy469w;$MJT^9$}Qwmy?f&Hfou_z6z>0{oT}0F)vN z^_Bv9BS8=OHP8TSG`7(M<7+g#30DDjxuFhiUOl7R(vG~vTB3t{4z{aycERpjKU|Is zx~0-Znf@F^02oU)9*QMe$;Z4wJO`Uznhr2lJRv&-63IZDvPVSPgEAOxPNN*12M-RUVRsGHH^d7EAuhTqtZXA*@{rPblS( zl`9SP-~XcN$4$KV=M2Ht5Q4mxcmekwd#K=zNxiT#0SjG|2Jf_Pe}teaYtrwkk^U9=cl;lG*L>$P>^Hy`J1 z(ywA0FAadk}*zQ9YKezrVO+@Uf|!9CFEP?g-~OVHmZLFuWbl^C%2_Qu^@^J^u; z&7bn%({EmAE?WGz<@={o@1>R?((+yPtRt$))NMN1FO@e{%#GI7ujl?T$Anoi-t<{( zK*sn}Tm320MSBw+X2d8vRmwG4v~$Zw_D@Zr$I5>_b${}WX6KMkUN zjpb3UAC%d_EBjieTC1=oUc0BJVm^W@yD=p7wU@z{RAbuVX({I;L!q(<{zf7pAc^Kx zxAYs=+1pNzMkU>?CG^i61L}u4UzNXj#Xs{pW1R1~+D8+WorYsmHCIrz?phyXt{$^1 zSk_pRl5={L$gwXgYk=Ix$(qe`y*bi15Pf%Y(>TeCCZEALux>y{hiPW?`~3MJpV6%} zS@|$8qg&(tn})LH*^b`tMnb-qli-ixKjlSNPP=tf97!@rYv(Z&>F>pv*pwB)VXDmXW@sC;G@xcX3W*?-hw+&*k$MsYdB z{_oGbF`&-39dxlgn;0B}WvD|Ud+_;cQtU#d`jf@FGspDNx=^Py*-oX2Om*h_&NFy{s&{|DYSH8BRtvZwIKH;YInaMp}Bk5E%C)>&^_*wDv%Y*>$##2po%>@KPNqBr1r|WZ(!N}H;Srn_X`oH@x_Efk%^}IAoR`!mzz|`| z=UOyjwN!(zpkni6T9#ftoRt5PLH790=-53npVL72!Gnk1aPM|u#3S;%ExGKtR7;ns&2=+7nenOuLfODT zk3J_$?kn>1w~}FtR|fu|M3$@4^6=`_qeVpIY3}5)@pn%pHZHF~CHq)4JIQnz5 z-VoVE4+!4L1?0~s(VrgBAUQ~l?AjQxSQh}Q8w27#M?r^1Za_l2Kv&MS41(yyF||PU zcT>HTp=ey&5$d1iyZwCv=zj87&K}h8OShw9+MlnCuHG=QQ^U;@Kci+Vn#P_>KI_gH zJ!N?NI4Ds<_SM4oSj&bdKVC~ds?-R<_VTR~n4Io@lo@=tUG=tLUaeSTg7u;b}JK(7&_=_nIucnf|rjb$>XMGRryOv(cR5b1iRWY1l zz6&5C6-$1A0jO1V*=HepvzAsUqG}Vw2ar^g51jcuyA3_4t~2<}Cy58WphDN@(3=YB z$prrzVG_xucMGkc7QTOA$wo%4-42rf^*9Zoebd2#@!ES@uJ|Z--j!&$9!Dfy9p>+= zCv{_$@7H2RqD7bBtZ6ugp4w|s=IfZhg}j5bY`s~FAkywZJQk&Ey4Uh z1li|nX?$wQ7|MTC$||KTh~LS3yBFG%7rE6K?&d&=%1@M~g1;a9yUwuXA?TGRlDQzl z#2!!;FF(Jk^O+t)*@Z??O0Xg5I9ABA^ZT!WYk}=iXKl9#@o*ay^y)krdFTb0*LsR3 zhYhdrxqk-=#slHT0H7p%9}L6;54V4I@E#s$;<{7v1B*GLkU;)SviJcxZJ0`EQmw-Q z(iFSK>8+H27(ixzARY2w4yPbI4l)I3$=IZt5D@v=uY|Lq+b8cuAT0ZmfsA9 z>AnVX9wfk>$z!EduoSkm4pg5`siM67AZ`sjjKrwTE;rNTY*EI3W`dh8^&&Epjh1Xq zWd78egX_SYwtFyas2KmraJEMy%7bllNlg(3mK-AsH ztbQRczjIX&B=emw{Tg&l2^7g#3SY%o{sqf!)d3VPg6|uJNhtn$x}y(oa# z2d&1t)SW19>?j(X=S{u7NaMPMf(Y~xi+z{?xJZ^K0C70X8nObsrPc)yt%@rbd;=rR za^#O2dzH2C#+enoEnj-)Nq4h&o6Hz_p&x@f@6EE};vnPTO$m*2a!gZx-~{Fq1Y1^1 zC0bsD3m20aGF%W6pSyuBH&YabBsCAHcn{Lp4&o_orJ3?+Y-ziq4?w1bCP#BAPJ=p8 z>r`ns+@n89R0Z*(&27E3tH2V)oD@}?^A?ZK0TJ@XBCIG%>6$SnUIPm??84nG;8(z^y$k~?(7tGlngQheAY-pp^kh30K>MD2lk8A64$v&x{^Xtca2F#3$`-A{LMvk=lqxC( z;$jEA{7A;r4kR)Gy2A~W_-Ucs2cU&A8j0yx-TYSK+ZqJ|S;F_V$t(!w5DsHEyP(*v~1s%RXlVzUlny;wk+QXu=<1a>5tyDCXE zAEX%r)Q*YuI*5NOmO^#%zAeATvR1LL6lH6jrY;w6s06hQNTqm?LU6;0#>BO+;1FF3 ziN~Oqxny}tsw|kskD=u4ZV-NJmFF>y?`k1I>o|WQGFi7os;j_`uZGQHb!^z-@}a)z zO&GE8LuFKH)y)RALD7DzbmUMj7>Nff)V33P+lM~#nT5sKe0~0LTMdbUZGiPKN;vcM zSBriVDITWkz_;~thG!?Y6&>NC(54x##+th_n&l0aq@n)FMELedS=Ukl+zD-Z{jRQ~)< zE~V9VE3PZVrkk_8mQ%Z-XqQ@xm&))Y=Z%STQA%(M9V$A}41+`L=X)iYQp^p^rA_J* z!eMVXQvOifCGNeopa6uR$?ON&9LYg2|$14iFzq(lopJnIBXE zo2Y{nR&Z-4*qXXgSM6F{nRfy$rM+?hLnV*vJundWj8ePT`q}7#GG1Zu8>n3sUnK>v z6D`PZvBHa<3`r15-=2gZt+Bk7-1#u~mZbdx(Zx-mWjMO+NR-%-V{N$;OW8rKnXi%+ znq;$+feWDi+uLW?t++TpuSKO3?Uz9_mRb~=A;40iZAbE%9LRwMrFwKGY|xiKQE%?x|_7MR1)bIknnoriWmI4iK9X+K>nk*qIsUxHQr<>98_p{3xZ zmH9&D50=`t$;kn4J-homBPX1;+@IxYARHFBdG|6X>F?*eh7_1fag3qLidO08#aoln zRq8=4Fd@ez{vJLq$GeoB7%GLks#4INSR{E|#cyf{xGfI=pN*pcGq0+(J^DzM zcF#eidaX+srUqK$9fnFwK=u9KV!9Gt(a^i-M0X(`;)-;l2ii%&-bvBNX{`==8v}C- zg-TpHTA~Yc=bbe6oHQ?;PzYx&E@y2CXB`b^T~p_4_Re}f&iYZ#2AR%=h0aFR&euDg zjVGLS_8fmcco-&>!@xD=ioJT1>zk|6Jv&F(E&F?xKKHDAzPZz`yDFua2VeEU-!qxG zXSaOMe(&Dh%X=7vivyR7qlAm*1oXjH>I>nVw5>!eEo?UIyAN%Wd$o(l#FvZbF5ZnU zKFcn?dr)k!i`(pX1_{>y4c9U?10zDA&+T*ZYO8Vb!kTovslRu93^GQG2e@ zm##4gw^**tkXaV+RCbtB)t$$zi9T-O$_`1HZp4&Ax72F4v`)A53Ac=8x6D1atV=gM z!abYIJ#Dr$o;d|qk_@RP3-+lM|O!vo$?llh{r7wU6OU8`_N@78pSg;uuau*Br#loVo@GLBO z5tgC`OZgs4HHoGEf<^3OX^2=_8b3O2KYB?&22DRkGe4%ge$2jpSEBt`viw+!{Mc&z z*x&ncO!{$t@#ESjoizC&Y5aM({dpz*`855n>ib3;_zP%qL|Y#TWck0p?=M{A-+td; zsL5a4j9qN7yz2C1?orVu#=L6wcYwPCxT@0?3)0;A*fnY zpxGqtBVib2{*0Mq5Mt|5Fp|>zZqWA%7ai9i>$zO(q9B`^AlvsrcP4`x?g!cJ2i+wG zVQ7LKxPu)fgPk;koy~&p-3@l}4R(zVcFPKOFADak3HE#+>@^we{Uz9EKiHQTjHLvd>Bj-%PyT8Wge*4Oze3P46`2(3b|5_COo{I zMHyZ6>g2`G7@8zYp`_BaAfnkuNc3bPw)vLr-E&JU%$^pK+!UDNo1jx4ny>-U8VR+B zCuG(HdToY$dvWd`nrLZoUwtq%IDUJ=e84b|Q}F{}KAX}+&bn_%mj zh{3|}A@}bYfJ@E-pKK&NEdm$T{(R;eRhOJBqV(JytFdO5D&Sd|7frJXP|IM zqi=Xqba-=CcuP@uYfX6D`|$S3@QyE}yh=F9zt%+)(ajyvBN@@F8PR7J(SJ8$z&Bzr zI$|g*Vz?+`q$XnYeZ<&g#Q2wpiT#L4Vg!LEa*8|hgJk4K&B$r9$eFv5v%ZmY(UJ36 zkqbqUi#3s--bXG?MiM`NiCo@~{6dUep@~}Mj#`t9TGx#FY8LhFZq#?*sEz2T&8(=c zqNwefsGavwyOU8rzC`WqN9_}%4rrnexucIHqmP@YImzN5KKto~24R}6aBo8G?p{#@ zpBkcpLI+`%l}Y00xC~HoG!RBF=5~PW!BJe1@!CA#A;~KRZ@zXr2l}(fXkL`Cngj&bJ9C6Q6vBd_Dxq9!NQ}H_u#EZx`o@WyF87G@9 z5gTWcD_wC!$0bkVxzt);DxJ=qc9MC$kA|AP{OOs@_pv9omOs4izcr~S*3Xp~|Csm2 z@}*Ug$7h>&JM;Cfqdq|*4}|7QOutq9_@nrbG>Jjd=R(PUwUJa#8l00m+5BJ|T;V)-B=6opE( zgB81qwHf%&rQ#^Gs#XT6%{%YgQJdfwb(4@e%3^g6g-4UBC-7#0x8qMNpHX1E{Q8*` z$LbR3HPZb+j2=RM5T;peHz=KnTuC2?ngSh|F(94Cl|4X+N4)e$qgEfYV!od%L$1tr z5`|M23de2YRq}@Zi*_BB!NLF?&+YB(`G($hw@s4Kim<@P66>*q3+1-478~aO65^#g zGO_ecY*hTN3#XuBx^yDFOFmfw!fF}?VdRe?OL#};NP60!?`(kRrs?Zyn>4^$f#dVb zSSdRCDhEBdVihu;)dS!xm@*P)yhjB z@s=_p+LEeSACc@bh~gaw;i(E!lcq9}E~%ypzM&TRCYPs14PP-!wd>P&;-s~U6*nR z-QVT?{ovbD$CpVGJ$&o%ZxSK$W(wa*EL@-psa-F|SR8j&@^%HsXz8|^Ago+T8%yQB z@qvkjm(l1S+8S@r8;)sez2CnCK|Gb4gzQ+N-1(#|a5Z!-Q_YAeo&Jit0TZ2p18;#l z`CmLT*`mB$Pt{2b?3`s`+42C-pWyU?=}b%)t{q_fEi;d0Y6y=bCfvU%)RTNP`GBI^ z{aZm`BaYvI%Tdlz+crP;tELRq*Io-Zk%q<8Ac<*ymbKl-n`QXmtAg4grc88NK$9Fn z16$qgt;*uyYd5RP^E|d+R8_p(e)+nQ6!@+kAd37$TeErgIG)F2r@FoL_eA{DQ<2@; zhNEk{bwdKLcI(F!c3$f*=!$wbym5)gS5LaU`tgz@*kY@3B~f&*`D>o%Udv|1tG(7; z?cd@SN$*7W!#yr@OO2ZAzmB53FJ!k-ohWm9!PCp!LCvTt16@^eO6NDIeWg}>266s_ zQPaD~6hG|@F$*2*SNyza-os0s1I@~@S4ZIw58ma~{n`uqjNRAt2G<=; ze)+{Zr{8Yz6Z7EWS30_~0Qp8wD3?nOosR^1|HQ@n2f17DKLtaLwYmGqv#lO^D|pI8 zPybx-YWi{d2|Fl$wiGz$eP%v?$!FRL*&~iC+C&jMX0Ty@>>qdMW|b zh?PSND6zwTnfg~6&QOW~oQFWvZt_dQOHx4O!Ri4qU$Bq2zA~|Py^zlEUHiAcy(#+crHm<6^j9Sg zQ>`P&Dc=tDS9-lp!xUV>4jAak@LsiccyLSe!_a_2>tO~qy^LeSU{Gc8Ff(+ljO%P@ zP~-QMUkkh(31c17WIMtq_YG(_$I^QV(P!f=QWH(rI5xbbbMhlbuF4J%=Xm+^f6Rv} zvZUZ8l+7^D3PuHCYX!fBb|68(RYQr#Mzd;1NKHn#_zv+f7TH+;@%c-B1{^s#Pa~JJ(eo$35?xVe@?2`R z0K0P?Lv^sDDH)TA(SR)dk`JD!SYaG+YpQ@t_=_Roo=HhD++>rfq>Pa0c$I_pFHCpX znbTb5q*P?<=7H46)Yfi&8HpaHdCxID`awfEREytW!)@fFE&=)Zj<7a}ku^4AiqEE0 z$lz4KT=Bzn>7y2Ews4h>h@Yl1Qd`EZOWmC9N}E>bjF%Ph^OoIPwm8>^2X+Iai6TxPs^uyO`X&d-m#)fYm2A+1M(7nxjUb} z$yhZ_L`qyYR$U|%p0>`9R|hwZe%=c^Yg?hN2_3w?eDvh3ebb~SY;JVqv-or9c zo2WRpiU>dNMI!2w^^Mo)pPu)@M#NHWA1yMypJ){c_S>owb()=O9(d^~o_V8bk#pmG zKtqEQAFt-b%l>OI115F4Er}d+_a(e%J`<9 z>hCFhW<$B4$rh+7^!cMa_YDPG1S-H{Qa955xjr?!i_|*z@-Hv5=Sx%Bj)8aQW`tiv z2XEuby=RYJ{?yd%xM{uqdoIOLzBb8Z*OC3t{E#V$9zMS7qWWinkl9G882<3E{j)ef z(b(8D{=+By&!-hcQ}dw7p8wN7OPi)mt#jjh!EJv&A7nPQZ9HohPA z=g$`aO>@^j^l{e{YEM9Y|~>2W4i%lDy0@hs~O---Kd8+EI%w0T8um&W&Pa%GDV z9!W5eXj@w;Td0Sxs6>?3RilV-vY8k5{I$+DUo7VQOQk4-cC9;h)0I^h>B>&uz2%(z z-(p_L8HN6H@c6GfVVz?i=ASwt%UJ0kjzh=g!oa`SAe;YsA=TrYuSS{T|2x-ccZlBq zW$>8!FW0Eb=wF8G!LJwU^+sQ+dn$;3dgqqb6Zy$f;&Y47Mm6ML+LHh0I-%>xs>XkF zjdtX+@66Tyr?y0^x21Qyt!aO{B$|@@KL(Fn(Yyb~y!u|VLfENp{in8M%28B?c>MTB z+plA$Y$$V5=YMyNO1Ew8D?BB3ADu(y?Nq_`gHL0D0{>`B6gF2#+7kGJI!Rl?<63{G zYSq#k56&=wkjo8f4h}JnXtMr3q~U?3l=Z2KQGETPc|wZzi-Qh%)56H#%JtG5bkhUgM=t1{9M7K#qO*C3xc|Yz(GYD=9&em6E$nV?>GCT} zDO;o*_fP~OXJ`_j5jcXv#JN8Z(?AC%po&aSzUnKO5=A_3npmjpylMXak~DanZi_lw zUy=q7+J{v|D8OFp-N$_jJG*ZQdZIrXrY$|ab)h2n9h8?k7k}g~DxCai{@N*G(X#o3 z-J9gn}CkOEDp zeXMw^tx3t)prv}HLsnb=?6sViq2!N~k46djoKZ9^G!wNeRz9R@tEnhrCIh$@G*ea5 z1=PJwRZgz$E^7(Y&QOpCF3jevqCdgjc;lCiW{ADH6sVwsEQDXBF4*Gn2k*rN`jQp= z=VX3~Ta~HN5kPdKhV!;rlGWb*TTamuznx98{&Vp7lrZ{xCo>^Qa#vK*@XwFtjp{#p z?Pq&`_Pbz`7YBV;d@l}%1Zysi#uSNc3PhA-$MLl5z3`v&=6NF)L(cmxV{|k19cK?! z%kaPMWZbn~6{P@c{Hm{$#>;M6eG~AJ;r^9H4?X1mZIQJ`{q54P(oLO*N3+U29ZFwD z^d5|r6~??pOuaI@M~aQJX0wLLlg>_7qq^S?_$vtE>6yp{A0$sQ7ZXw$y7v>L(o3j9 zc%jL!yLlB0N)WJ|G|t}#NhsZ+A!3|CUqX7iI_;JNU9?gku2v`VI_`@q{ygi*cpW(+ zl`MT(*Dqu_=}SE1rTr`2caXepShF^n-Zw?9aH*5ws8*=i1-}X(s0(v0Uq>yMaA{EB zP(&d-5^{fVyFX?WZx?D**lRi)CP;e`K_NmqcCr;s*77&=a-!3rF-spH2q z^}r<1lBr{}n)l@mJMo4xB=w7bX-l4*lnecrwnQr9g|X}6<8Y4n+ZtjpNyL_p%!e|j zv~6M5w^J0VVZJ#;v>rNSlP2suzDjT0KIQaX9|JvI7_nAleA%I@x*3sd{fsq1tn0m} z1k-J~9ROhd#N^FO<2Rl^Q}c6d`f5K=L8)V6CHwq_UyVJiC~$|#d1c2qMaVxHesWv2 zekzl_nILKb5pxlmM)*0G)#P;0n92UHF|VVGv!te3ZN?if(%`X3Ts$QW9&da?Mn5f+ zv?X2C)!3x#OKWUr%|j;D{*OkNzN?(I5HhL*E3bdvwmJL%IC!vHp8T%{56uT<(yQhF z8azVI<@3L}>Z%(%8fjnat*ook-0EIqZaeRn%B)LwHC|`?bUq+&3C|1}Tj%y(JR18dAh~d5F!?AaclWD^?XQu}gM^%S1>ZzThyojCz5Msa-({Zu z8Y5*39%V^iEoW{Z78)Ip(IwO3kYo2JjA~`+0*i4Pe-EK_Hk%>0?)5*pb0GAP?1!DJ0%~N$FF#ETDOurVH;Yw z#kXAkHFzk!O+nM%ETSs9FVM%Loek4GFQK-Qisv?UfJ)`Z(wfBd^tX*u%2qibjEFK$z&Wd_hC)Gls7rfQV0$XF~z3A&f*I|?UyzDi-_ z8_yO;NUWT^P5srU@54hZB)!Oy%4w6HW#9)aW}}334A-_eHxV2sYQr+8`m;e(DaBAO zj@BFAfAxa&6^@9Y4{&Q?)1CtJW8-L3kbNAwhu+#>OXy1Tb-BLNQkbfB(xn(g2$|A_ z%AbFxk+BNn)%Amz#yG4;x#_ZBEeg|)S^lXg)hlf3;3rS$q$_CdxoTPyR$=ZyFJ~3W z3$=4gU?-jrSt<1Hck{LMeuSanabnXk_ce{<7*gQvtTHqSZSk=OMsDEGUtXBOvFq)0 zIcBKHA6t00dJD!JyzC7^npv z26ls@rJ&qbC?c5yt6>oNO0Wg$|6uGa+uBgKb&b1(7I!J`?k>TdqQ%{cySo?n0>Rzg z-HW%yi#x@wP;$~a=h}O1Ip;b*A<2ilV~ppyZzRn*q&)=pFei9@r!dQUH^nj+sYuWJ zQUqyh1P4`j)$cBQJZ}1zL9U4(`8?r`3lO5WoTH)K<-FkI*<4itK}zI-Hgw^(iGEJ_ zkx+*t#Y8%6Fd27g+zB*Y3bD(_)7_OX{pXACe*z?ofBa5S@T}eF zR6j;uLj5DE`{%`HQtgFz^5NxE!|rGz0p5YH*S2sV@^Mc}PI}(qY=I<1RF_R*vsk1S z`(8=FZU3(q-*1nbgWy-8A4I3MZGwFdAr}b@ethS<<3p|be_nhZ-~xqD%Kn{qC(Ctq zv#;HPH)mUIv0zM<&90~Gqp_+($5-!P52s(-Jjuv<{ZDUhx*o=U*tZ9QsUe~|I9%&L ztER{If}`PgIVRBeIG~WfR!#Vp%UYqv?nNMpqp+wMiMJ@&JCSsMf&F2|@GO`|5zOMa zzFF_a^RW!;CYXE~-~9vjH+K=ls7U)H^S7uD89!P1Z&6*=ijKD*PK;PDIU>4Vt`7Y{ zX7f3IX{PG^NNkWpw;4i~(`dA5lG#jqxUrqjR}}rSm&GtW?@9Wj0=sC9J#_1YucO*y zNbh2_9o!_5B9XCRzTxi+$sd*GzR{U^7vQG1ovj)LSvC1{qohTa|Fvr301w+jR!z25 z1=R^&e_njqd)1Py8VPm7xOQg}Ljjpz8m4*H%(Ee2|MO<<1zn1gCCe&@xMjyv2-yF> zt(yL@1ujP!FS>8P*sWeUlH%9V$C>V-ps7c=!nf;+b5#)x(H z#pMgvY`49pC@=MmsAO07^&+GQ!5y5b=r!rtdvAd*K)T7h3rpccPHl1ST`ET52Jfu_ z5^!uQL5{ziJwUx9utJ7CX6rokVC`~}`0P5#hXy;q79rN$WcV=pp`!NBi!acuZ4j^T z7;ThRg&LiU?&9TU4mfK*x}XiFvRcxw`+dLec_AD-j2E%;2*!T>{iF^b`TC128*+2V z%`08D@}3t3+dfFr_enhSrt7_yOc?zZ8p?*co((`8HiEf(5PkGN65rO3eI}L_k5Ig1 zZp4q`WEda7@Bv5;br@^7hz}ZsS&)$_f>5-_2XQ+u|GfBm)~yiR3sjj|6G4YkvLNK6 zOK*E?6gn`RDb$MCR%E}zi2i*&E~&YlTAdC4o9#i#3Z{NBdL19`=B1h{n{}3zVSM( z)*Oim;krcmjkRteHWG_j)6|Dv6v8HfVrt!R^sqAp=Ce#0c6jwEHIBvfNPR`8$Hv@1 zG)5wj;&}ZeRzjRR74Zs^DsMgejEnJ5E-bPt-w-mVb7~RMh30rhLMs!dcX{6ZlJ4{? zJ9swJ;%z>-pL!ahQQ`gmV#Xa>xdd{hs_*K}XONJ!&|UPGFoxy=n2tkfI|Mba#>zs_ zv?Z`-ZIybyyRqa7Ablu$sH{Zr_XF6VRI=4$&s8~_PqU! zZSgHyxeDSNmDqc(j3>xjvm|D!ghQ!^LZOPB7BK|^?Q zsVTjsnrlQ?8H-~fCHZSDOHU;*`ef0e&O#{;P6Z`!^*=D+R{5 zrDUG2Y=>HRqbby*fP4Je<#UfIBE37GZ+NvhHBMu8Yj+{7z29nTY{BA2U*ETNu0S!{ z>!PAhV?4Ic_Bhxztmz(dw0BR`uz0=|+Wu1ey(N2}$qO{Ee_yISRPN^B(LlRG;|0Ye)*9I?Z;0E$@W$#HXjqkA4IHp1A~cmVJpu&Yu7uyuz8N0m#6x_ z@6+2AXU;=)&wgCXcZ_^da!hU!GDMm3YLhIzjyTlUyEfz-C+@wpn^4??CF_8&1-{f| z<>aibUhA|Je5v+w);AW;Xr0l)(HFpUt9ufcKqAEa? zd=KO~qQH=p7FbyE0+#)_vI)eOC&{}9^8TDh?}^$a%^Yn8N!1+d#Y&QA%-q(1DH0T? zd^md$S}OJzPIWMI7H`?^t7B`9Ap|Ru+}gWRbQ}k>49WR{bT{GQqy+2GPSWEek5&+c zt)zwEQhLHY&r3tRXK@knoz6oscgm@^Q5WgxW`yBZ{ITpu*zZ@Z-1Wz5Cl=p}w)$td zxLQ9uSLu8q3aeD}9=x65A4VfWz4MR%}dMeWJ)k7S#KHqtG4CfNtiosXiEo<`k3 z-e-=Ab>D^0tseBZHox5pm;2wumlf@H);1S%*Jh308XQgBbJwPb9DkwHTb{bVtGDsL zv3P6n9kZ=v7{uZnxk$Kegy*%~)Nm80u<_aK2Y;(S^KHiL+Gn{8?gih3Ymgbqz9QLu z%T4d8w(CarWAAfSn$kxlJi^`$YZ)7FP)=}jx@h93?mb$Sr%C&)5i1K!!E8Q(u_ zfu19v%C7~ewC3JmHwq$CgTvN?p8fxwG7l-x^< z7ijbs+F-uSP=WT)(6 zMtFsS7{Op1B#=rE5H-h9UjZm6UMTU#bYTD+oAxjPHkjP~kP9|sk^;S#F;v4NOr-)C z1_&L=7&SlHKb|}yj2v2o4cQV3J*6Mg`^9(_Ly7}Gh9~kOKslkk_9Lf?Vb;tcWgZ|B zTSBimp@1$iNam2twlGtmd@VEW1A=UXmSeULLtab*^$UW}3*g4cF|@Z3Ukebl9?>ea zF;d6LTA^TTRAF8y(41tE%ET~polpkJp?i2DEuCPi@KI`wQ6V*FGe}3jAHpbz-@;F5 zpmmYo!YrJFTf>8cAP;g{@!)6yFCdtm0+=`*SYB0FODI@h9hloAzt?(ri2uy80EPq# zo)_{t3t$8aU|gYKA$75ra#(p|=y)f15(ukp8G1|yhU5qqGMfdk!BEU0KzwdVrAe;^ zFucYH+)(fkFPuI(^xPpP+m_x#ISduJ0OrUu>D4$K-3fwWfCtS%YwN(UIl<~X!LrRE zkj$Y;LCkS0NF-jcn7YZ3{#p@Tf?kEM1B`cBVzBTNMm!s$KQ31nU01J7Y)uO%o*aBj#@$_M#Lk5kZclvYV3t-p)C=6`K z0>;q$swv%;P$ZX_3}Q&Usxb0%Z~|gT0je1jR4yeFNUEyg@=z)f>X_;KKAYa~`UNoH zjF25CSQ0h_2_$sPC(JN%G>{n5pMv@v60Z{qn^QP=3s!&}BhngSry}H$4gg|<30y#+ z2IzAXz_pjdL0Y>4m()9e#5NDufkRl!xe(X}2nq<@;WE(G7&U+#jT<2NxuO`vfnex_ zQnrQY0HHsC%j3b9xk_8G5N)PmeL3?Anu8OX>l_ld6aTIYd~3ZvdSYZ$BY}5N)=oi% z{FZOorG4t27w#5_jjh5WI}g_hMF|Rij2s%s83r~+fD~C%SCDe&;Bq^qN8ie879iMp z{{a--lB30a&w>~@KQ!rH7sGPb+g)tIB0}Rx^%o^jp}`@cD*<4T=cxBRa>K;n1GZ52 zM}2*FyjE^7bM@H3K~<-_%42NE^8LtQ6!bv}he&f97B`gjRrCl-`YCIh4RVxZy1BdsGT5!Mq_3ssfJYCx-&0_okVdCsfK=<#tkTk$R&)9W?;8*PMjfVQbnl0rwjIG2uP5#!cqD$$z&p=Rm z)7b;C7)LFjxIvK-E$mjJ&D!S2Bv6*GJ)f+$NyexM3_{JJnVsDE*O0K7UEZET`$BzQa^sEpH0AQr{Z2 zr06%Sdx700THF9vOmI2bB#YYNj@=xp-_EkvUb_!e5bPN20yg5vs|iYHDYSKhyMQ{3 zpn&GK_<4-cXUQg_wjIH?NX^y&a~n`l!e&t6!Q(a;b_zp0R^9r^mgy2Pv*Y1GN_{*sv_sTld^}TqRke z-=*Q!6^R{6fhNhg-)V~4Ej0qHfzqHAYWP`2(0w_`x`d8X(&863Fz^fZC_-mZ^uU50qQ#|pL1&8{U=a8RNf*w=-Ra0+Z9vejlpHD5!y zJLzGQ?%Pr5H;9wsC2rlB@*+P2GMm|$8319X+H{4a1ARMUs`{A~+o!?L7?{=V5{v_y z#QigCG7n7N2cNEC=`-Lk>aeO%d&jy&q@A^DZZ{?G09$jy1=oawd2f{FnCS38 z0fK^M{A=*mz+AARR$Bw<8}jKBNgWan1M}5}&18)^eE>d0D&|FVnN%9M03N6b%VD_e(*~lL_vop=uLuuha?!57RwXqFe zaC}DHd&{Li%%8$Mo;>}5nV;EZGep<UU$+24lPnrmqC1aNNqG%Otbu+PMGfs!P}JwfTJT=dhX}rRX{T&Bm!Z`}KXv z4MYi%eWjr1RVpG^cif17fVO}s8T4h{1 zF-3&}2!1JCGg|*j);x7D#4-p;sfrbRpw|KS z3!v0xj<9a^mjmMB@4~{v_frRCsr%YQvx~?5M2%l;_mEk0AumzA*h8 z*chY{T08yw0}zEs-pmk)!aTmPCIPfRWM7*7?Yro!Ii4QB7*)OKKYXZ7ybzc=@f_Qk zq%3~DhCcH7NXyXXdz_Rps>+q`)ZsL+i{%@m;#kYioy@6;oQC81xaNH238}LMgt+EX zmPIwDLtDc`xwxj^jOQ9*N^EO~<}Zg|NagkNB)C}SYtWh|^Ct1)`$Y5?=G$STiozusTx&$*ya7p{Gg$F>%l>#K;p|FiLvmnjrS*>+joZa@;yeAR(RTeKp0y6H zz9WCG8N0YslKdI%sWUYH8>P*mmyNrN-S#nyo@C!%&pHV#@OH(|X6W@NvarL8s#{Og zNx#0^6O6ml_PYy($4%79_xY3eQ`e+!Kd5IP^#yPI(4PFwPiK`|rcM`0KlXfDADmU4 zW4V0-5RbUB{@TJA@c#5mVE9(#d^7N4=Q)_@rU$It0+wVf%}3>l4WYwZPOKPh$eWa2W4&=C;Jc{($|L=e8xIu&9+GVE>(w zC?yEKJtxy|`5VBH31I=}nRy_Lm7mB=v>%TR=+ zBei0=G@6nJd&@7Lq#4R3dS6ep!fPfSggr1JV1JX5N~XhD(w;!8rj=h0wdeZHA2()j zWWS$_b%B3+fAQsIHSF*?MW`is{At`7bo`S$j<0^F%?7rJ`K7IHci8%Pv}e8j%An4A zO?p(3jdgd?k1XT0TKmR!wpxq!C-`Nx#?nN8s%00Rx%T^f+ucln{!@d)L^87q3ke?o zN#MZZn?5CfAG4XTnnimw{|5K{Pg)9?`S?OEZKIr=W1H)p-|shmOr;x%x*J>1tqKc2 z*AmygPe6tzR1V`G!8KC$j(7`$-W;Bx5oS`~59^O*F<>QuRf+>A&2K4z7)}6?(zj=K z61V2Em&V0H_LIRjF*jky#^z?47lYBj9!*CA`px6%>)9lwSSeq@4^n{m!|_N(r{`r! zso!1V)2TSC55XqEUG>w^7QY!l>Zw*8U{-2woQA7gpOeCj9$uIxM(s{gv^Gv1ks>5m zQXPFq)$Kft5K7!QPGaRYFAIi3yt|o}{DiHpNDiA@KTbu!tU7Mx!WfyiF?^*lF7yeD zTAiLBlso|>QgU0M?ozzcMEcC-KA|(R2R{M*quN~@kvY}<3)dZ7>lXz6=K4|mtKqpB zf}{^>QfLqM?{&oeiNE6FM!ThG%7&)ijgSoGzM1D_H{cLQ<_v3D*ZtUXJ7pZpt)XN# zvDYGD%4+deSA-S2^@p`t?t7qpI2JWf-+bp2DR}sprq8Uvo2KuDCLwbthW#5v6U!|^ zlVe4LOOPD}q#@W#)HvX?NN1Muwn#Qfc-o1x*?hFjVt@5AjbR>rvPyABATY}h?B%zP z@ucyw{uI5Cd7KmN(rE=QuQ=$~sceXlv5n84(A%l(>CHZ=xtTgB`n_pWMv|B-L%0J< zy3ewxAH&r*O-sY|-s`x*5VY)6*!0><{@qG+*)3SBYdKhz(0-X{MMHQsPByE1-4AXh zaO{05UEd#~$oF+hkQU{4>t<9Dc1}Uo&fRUA^0uvO`o;nzjwJbM`QX@i{MmEU|AFLj zE0EUk(LPx_!22NQqQ`qb(3A9OKmPCo@kvpn;q!S{{-*Ec5MJQ(VHFwaV^j16&BNVy zt9<{vSyn^;)5A!zfTudvAD$cYV3LPVX9pylYD8;pydrQRnEuG-o3F`-Vi)3NC{rU}kH%10xxT0?NTllK4P1 zQgCk@{bSqE+HZiT_%I0IuQN=#pvo&{u!9!5JWNPAA0-(_300;eO=5@@1#Mu8lch7n z%5xQMdP|818XsnhQRC&&+$GG&Y|Xm03bMB=BKqtl!<~JV;J#-@_WN;6pb;z4m#gT_ z)bgn0345Hq<{s%e-(PHj5aM@us97=_)#u@t716|B-}kqKtEYl)XX$|Sf)EtDXw^Gv zM(JpItx@%~E_P}<=_fg@oyPR8y?rSEpYk2FVhFi+g`X%K5sHch%LFlWGQ^4xyc=0DrNuPF=NrFo-vra%X%s| zYy8ULFxg$g5^tkooV@t?C-#wG?9+5euWQELOPT04U%&DzY|!)C>QbppLo6Y>+0^2Z zjB~nB6aB}cxhiXEag>FGQq2-Z3mb(Gznbl#G)p;4Y?K^)G;$BH%eL1QXoo5^AnSy3 zNorfQcpuGT8m$Tii%MbdU!PQ+OyA@doV=^{(W1GC?hi(D-+-zkB>HP0zw&4+QKVN^Ng~?yECQ^S&Y0!rqKvDif?4X8J}g ztx}88SF6&}qcZI)lciwJ-(dfqGfiPZy{U-%=3)y6yARKQf&H7PYqUn3KlKW{Z|iEY zQ!(Kq?!SKD{twuHPXM?6GWvv`^4XxOm9i4V7p|?Mwz2g7u5t#a%A-L~udX%Zt>xEB zIw{cCgI2AcQ;UzjvwC0c!w_w}g zRZFDw-IOCf!k#-~W92h>_lB$-C*_jOQ(xTFFbX_~o2%LwB0!9SB>ga?up?z|<7>fW zr8`xB9$`**W6Tzr)r*GZn)SuclB-Pji=A?l@lSCr#wUpx9Nf_wp1oMJOUe=C*faLM z=~(pqLa|=JC}+YIxnvIA$YB2sr{cR$Lek~yP^pYb-RCoVmu1AsdC=O6>9<8&ZgtCx3 zfLd^>NXnMoE`NdiM}_2?O27Oa`EM$Nz|cccgdySm`68Gk z2JXq`qq#E39rm+)OXb((+gFPo!lcdjwf}L4rQWFcF!dMXeFO9l$p1JUf_BfFaQf#C zyX6Q59DbOF6mP~71=F7ib*VZ7GdPK+-*+_qxx*3_+p9KNM(#*q?itjt8-D$hy!)M+ zrxAJNvbgytdG|xp)d=D5n9{J5d@>k~`6mJFKbsM)Q$rEaM-+`rmihgYw;f1nVwtiiuLV5Q7mI zZDmw+kgHe*K;V3>!U*2G`a}lrE-59bgEE}029kX@CDz)!FeAASxSq|DX_ec-SK%&< z5DP$iip%jbrL#~H*gLk0SH(8Zb92JD{gEF6dZwEyMBB_VOI5H{bzR6N$!b-_%^09d;`W&+&0P3h3jx6Zco-|B&DFpUD6BjLCys&rR=x0?~JJqM*Mc{}>xPW;jK^ zR+Gnn|2iXAVljFP=k85+&gYnsufdHZ1t&h#H}-smfaPBzHcEBzB1R^e(kiAPAJ2LU zNO9bnP|6Fb!_*XIeSO?}IPa2D%$Q~85$6w0Vn6YW^MAR0XqNl^cvuI1ZT?}CQYNy4 z1{E7d_M%x5l;#@&gE!uf@ay6o<_jV$H^)FQpK35oMS&RCcwaYKJ^7CHrUBd|sbW?! z5rw9r)G!DiTE19%=dnPVoC^!9caA0snjD2feK0sIG2$(B0V>$yi29&`CK4fd-qv(n zBIeA3m4Rs-u}N)^<~1}%lXx7%%u9OL=7f7+R>_tRmWs*n9nrq334i?~DYapex4{b{ zfPP_=^cNeuoZl`+&pR1Pfh2l!h=U7G7a)F383TQSknFgFDvDw*i$5_+$xN9bnJ0yx z%WlYtq%IfZHxU&2j*0>djc%COK+&2ABB#j8)U0*kZhb^#d7Y1=u}Mm-em71N%O{Jh zd>tcuZNvn>6D#;TS+2`(oQKdw5m~}K-OC`J6j^-|(_;uX>fJaUeDaXiYH|*O_bgA* zlf2VCN64^SsVy-wZXZ+VpKPN1-Ko>XW)K2?x0U31`^jw`~*vRRWX95l-TD zT~X>pEx{A}HXbIcNX8O=(o14E?{y1}j@MKr*{zxU?hz<}(l{UKM^Dryrz8iS7fN>+ z@o2>wTSQ=Z$3g$+?#=J%fr8txO72v~tLhitJZy z44Y^;gmA%1GdSed#M~OCTpJ*d90$yx%~y8Aw-cACTVNW zq3=DG&CPP>E*E}u(`fRwFWu2|M}y(qMYp$s6!Y`RGu_eZ0BQjtu6x**d{Yft)M1g2 zO-*Z6H*<8oGd{T9$=siuzpYlW^;K_ zwZ#*_}(mj5>l-^*(3Blha zbVCJf1dV*xuk?xT9q;<+uVQ8JBU!!fR+802*nayLR;J4rY%)dyg|2EgFAqwY58k_x z5<89Gw6?$0J#wL`?tKp7W@Y)n_>Hmmtv<_Orp4yXqzUTb%uLuyKif5-yxDcj5MBqf zQOf;}@g@n?xC(B5bbq(W=x?hwh1RQ-Bm>JK^c8TMOs~NwHD75SquPn9slCUaS4J-u zl3yxMT|6bNruYO|7{PMR0qEy^*10yuLEqS~m+Urqj9A*SNb(=xBo3z0SLl_MIi9%e zckn|KCP3-UH^d};GL@`TSFvsYN;zLViRooh)ircz9uwTYvi&B%aZNF{{xRGpL z+yJOfm&A`c>q2?XW0+5_)jIrQ&6{`2YdS6S6TSuf$iR1V1~gmB{lT zG}Jmihtxq*=@!F=45{%oeKtoFTLe|9+qoD#3K*BfAQQ5R@+TMI-ysx9^r5oekM0L> zAz^f`?dgjS0FbyklU&o=#s*>x=L)D(-O!$>#-2g^9n3&#=gV$!mB`Kj21E1UYJExF z?>_!0Tz8WWdIwL)UCY}y2Q5S-Lbjg1K3?`S7AbURs1n@2v0?2oDn5%ZXpuG5CES&1 z%l^!`@j6MoZg!qbPfa-7XqjDW^n6E5cSv(J!{h{CnfTtH;A0j%R6#fB-Shb!p)gb) zN?K~lMHK~OFtqX3HOO3~(GM|epFau8`epr{#q7Gh;C%vMko;B!xz~T_z29JwVL@HO zkLg^ajwQf~w}I62_NqhYv}xd85>7Sv#(>Od<5k3MY=&6a^5tdp!>jk4&ePdUKEJcm zkG_$jJiLMksp$T^f~Saf zyPxHulb$x@GJzRpz#Z2>(A$tu*nl%?01BNqnXL1RmdF`UWU#=ieAl$* zfcm=4%dXM$j5~yLnWNk?B)urKTrxmr;XxZn^WqO73$kq~>75d34vUZ~BjYXqpttz;-9BqiMXk=F~~ayAru zyA985*+FVKlK3VpO;XS9(cA+3C`8~H756sM2r;U^BxFikB>gTj%i03W748ugMO+kC zh{PMC7FBWMJ=S85gB##O$CoV2kA4&sqvH=+*4X6~HflGY92In0s^iVdcsK z^wJU@HQye3slr@wb(xBRpq%06!vPf97|ub3QfC&2OhD6Yg`)>y6eHlBl~v;D|#o&ZWNXugA{a|NFU#gZ_R zoJ}}rn02vmZLsi5Eq{aQ-o*0(=E$iF*%Tii0h=jqg>3H_`Kc8Pl}Y5@P#vQ-icu>} z(9Dj@X>%D9aT}AE`}$|%{{sP6#f z^(O2j@G|hE)!n_*yyO6m9R#MxnI8O^0V{w5>_op9f4ik963ED zD_xM*4Z%drl3qMFE8QVlJRq732Tu2OQ7nKy8&@hDwOKr41yDvW?&*?E&7G4emwlp{ z`8isw{#fzz6ChD53w}7Kqa(YKKD)F-oOmg_Xe9@}!KEQu{3uMhU{6&=16yTST~1T8 z&qB(J>pjygr6BlSUKCay>!8Fzw8Tkt-rkDTd6v@26D3ni-gy@O4uKL}F#gU&-hQ+M z#c?~ow>&?f)onDVA0-w9g+a~>TSR`AQ_!{=*i@UisgM#8K&N)Q}74ID_s z4J2farF=ywFP%r1O{i9!@4W}g94y2LE@Vs2V>8dcmMel|D7x_moqB`Lvht6Pi@*~? zcXD~CJ_S5J`M?uOhDmz1?EFW1rEWJV2A_OBy%Ju%Vvf~(v6Flu!eV;3Qi&4@ZSxP) z8d}O%aSuV(Ry*%qni*8!%BrqQo#Y|m)iPIxGUv)NFIzSD?9Z@jWmwc@p$z5z**3lc zWuB`5N^lHKRz#Vne0gwXdH5s)E>3wYO2x$;>3v37rfo%%E#OUBd6p0GlRUsTjnF;D zPOODdaP|dxKP7W#2&0lX<61U$V`&vy$9hc4^QG_&jK6$nehAcexndvN(!FHYPtrs+EX2Zz z*NYzkU<5UBVzHz_by{B=QYURD^eWN0t1h4@s8Ad6a~c{XBms7Gci9&Ezv`i^v7fXX zJHajuF#3(KYpU>T7%G}fqWblAJ55r84MCGOT3?$)s+w>G8?e&qnHU>TPaC06YdBC_ zz$Q(5dJRt}4ZaO6FjqLbZKZ}LMB^^4);X=VU9I+Ot&Y#FPDE`kf=m-?tr0H%WxK3q z3au7vZ2`}1K}78#g6(1Y?Ge81Q911~UF~se?f$1k8z(po9Brxk9qGOunK>QVT^+e= z9UT$?*QPdq_ReDc&Qjmb@|@1fuFmSU&f4eBdZMmI!LH^hyk_67_M9&NV61?v_KL-t zD}2vR!R}%G?or?FamKDz!Or1%yoBfOIij8g!JZ}koIR5SAT{!_6xBb!QxmGz-_MU`p)-Ff_F%}oy%lt7VYU@~hV`FKxBohC zQ&LZh&c1L$nr;B>9Z?4WyBZyM{Q46a7@(fWC*Ms~B$jsf4n?vRZ8(-miDF5a5)8Mp zog}NC8btuJe`OLa_jm5O11|;k+-g7Fz~gv7!#Dzxdp7^$RI?_uz%#IEJwC{B8l^w{ z<5Vj%)^*mI$r~XUJrq0O9zHAx!-&xUMZJ1!6h@OyT7wcqY>x_)m18oJNIGvmmBQIf z9xLTJGT4@bcBD?q%L8l|E2?8`Z7b_5!Fn21HN8G3pa0c#JN?_Kre11sraMlWgA2($ z|69}TyqAbbmLNKvS|B@R1naPF(<${S@q4 zl4y%i39y$<7Qc=v0kcI4|5#x>QkM4Zjd&hw`T{u1iij&z-X!`iZa19IO_KX8#;6MGQtGIu2Hg zxaFb{RstMga4a-K-IC`#(+f|sYXrj4i;puPJ#VUI7TjvO?E}VSH6Bz>2@ddo*o}%^ z-(v=w){yuXe*g08mZBlc-Nw;bjo%}R+r&Q2<`DH0Fd8A=ia6~fb#@g2nZ&n{BV(yk zp%p<(y%fNs0!!mKqb31NC>;AS3WCk>m{-Gcv$F*GfuOl0pIV5FTfD^?r7TZoHjhzi zsPseZ_;+;#cuw$R6M4`!^+ZUgD0MdT_!=)PE^g-z9qW=5mSOehkRHFT zA5i&S%_Nf#Hn%uqoDwn3E_8SuzumVuH@ljl!5KCY1_ka{IXouTZM9eDYc2@wA4-vT z{rpdh!}7l+jEl7Q;q0+4U_==ghYyOuwz7tg;SM!4=#bO0=y6EX?c&z86V0k#&0`?p z_in2NtJ;nEeAz`k#!$jX6vA2(G1zP7rkV`>Kq#DmWmF-~oUr00;}coBPE4j0!xFOk zI&I&qamEH7Rqgudj33vGia=n8VA_=MLvgE!z)R(PAV62c;lTShgsF&}GgQ z%%~N3U%I$!@&p=#$Yz9ed@8bfE08RH>RjiWc`S`7yJQV_iCk@n#y7$&YL^<7gcT^J3YPRtAkticy12Ca}J!;AAik1hQ3)co#DN7Sw3YX z)2D@3yw4`coWGTQbQ6p}Y&TO{8cVw}E)Z!(t^BY(NHRVX-D(!i>hLY7s&JFY&!haa z!KPx@&mjj(dFa`0>!T81Kf zn_Z_!=1$)`mGBxhO({ItWCvpE9hkk$;wkM9dtwL|l93>qezplO4R9T_cDpd>nIl0I z0lU)2b0aQn@<&F_#s*K{^2FvZnv}Ai)fkT4zeT^+C)?Uf^7zH1Yxww<2Y(fh#5vcco)%w7t9%+T~ zowpY+0EdoKv^ltx)@Pj7+6>m;-_-@i!%x91^eIC}HO0a>F1pJ*> zB-K|^!`%$lPN1F3(%KB=8TjG7>333b5GFZfA} zO(E|*;#4_pU^NpJhAfn2;&mUbcXYVCZbhM<{OBjNA83ME`MHq!c_R3DNWkv`2|GBJ zq?72(lDtMeZSTWK9z^=^=%}MP$5f>$k)0mLd2xBf79qKe3?45ybB&7Rj-yDnZ>jCA zX|lVPS9k$}SseVgi2+FIz_-pK-W=GpfaoYrl(2Ns_vv)7mKS`So0+M+O{pdaX)-sd zD!djb>1k3LX=bkG4JqcamKn6LEmW} z(OizO88}=#;)j{!MY=fDfS1$^cGpj~-j@7G+!y4T)BE}~?b$ku*!x>5tZBR-O8`RK zm{fP~NB9AL{F&$tOxm1o55}4(Chw$=0#TB1=XJ4^u&}410Wj{lFkr1*aSnsE3hKn* zJfsG{Fj~NO8>}-qz*|0zqG)Uz%S>=TB^Z#w?d*kaO_G0y`Rb;xJ0eBmftEs!mTQdK z=!DYChKy8MfX2WA$Swf&7l1Dd28}^z3@Dg-l!H#7RsaeSAqYf{+DeW>)LBSti<(T^3RM6iId#@l5_v)pe^Dp)eF+mF5N& zGKG}VGN6jtf&}CX0ofoiV|3_SZlRhuCrLlr$iyUgqoqi zcoJEiCm)a6^05L?OeJvDCQuEl$?aZ=9~?<;N?F;7-FOVh{{=Y1s={*i`|RrX*hFgy zGMeKA_IApr7po+i%MBA&kFiw``&3tIR=XCfOfytZ%UA!}1CCTy&)e3FpwxV2sCFB! zUS_D-n5^!0s$P+=T_mhowXGgUsXfiE9TuoP)vLYgl;7*DnX;Ap5mURZSAD5hyEIvM zfKuJ>Q@f*AcT!n*zFL#WRgKD6@7k=Qnp|~G{=p?Uc)v&*7E6DJ6YFP_)W@raFj*{; zSgh^0BJOI9NP}2civb6VjUP=!2-X_6Lp2E18qmPvc)Ub-_DxN2+af1LO|ZdDa7m*4 zJ52{gRo3t#2*m=5Yt72f&8kE#>Vhqr`YrE$TXb?-^txIMa#~8 z0f&dUwx^A@3K|sLAs-c*a3}}@IS5F_gOSAPVAP2HL)tJYn%EfIC{5Z>D4O2Pw_&H_ z=vs(~=!@PpNhJ_4XNCQB`kM2e^jb$}9{r#|>Qc<3OBhe7Qpc-T&38W-u({ zH!PLg!}0Q&%@uQse+cG^KsC2V(_rMi--u4`AE%nZ`iSAnh%xb~snDpo!KkI*sCDj$ z3h$8e3s-P(9>;X9&A&O-e7eVMnTCYsN27L!)z8Ml48|k;#-nn_V{E(sIMotf#uJGr zl7%Kx4JIIlvqZG<;IrY(^@+Tfi2~xuLZQiGhybv9!k=n9)PAyheX{mtvYvRVu6ivwNz0eX93ms-JjzP-uGCVER9uYG+fhCaC|ue#nJ_f!c#+fQCW>LxKOC z`~M;Q{TpcKKhFKTBc7y^F~oBJLHJWQ>B>0Qo6P;^+%JFjEuQ?(x&MAi?w|F;hsox@ z)(;Fgw2*WE|EqTGv^xno_d9Cq!+=&crrIvFdIDfkNvm(Mw}+zM7Il~Xb?*O5>E5{i zH{tK^bN~O>`r&_ocK#v!{R_17581uO{BXHDmH$WS{``1z`WNBv&-$T2 z+UKhiKo*w9D=`>_$2tiENq}x!lno7T2p>j^@88e;5W?SI=l-1-rq-jKShoM|+>b!N z2RZlK>?O(mUAsQsOHuuM{a`~W{NAzxvVI_Zm=-niKqlrghdG#Iw=Rt?&4MGjLCdD8 zfUFA&1MVeJ9SILQg%zZw@}f@?De=WV&@#uO$;y?- zq8phj)++HLCr6?wrt&8h-tmMCrRk2gCzbKZ;ECgkhLaZCtk#9elZx0%9|q$pTsX$8 zdO|n5lJW!UiduV&uIlneTq5SC;RTk`(n@j)8HyH~SJu`2|j#J*lQhS&iZk|ET7%p9LM zR;W|oOHp*uqAO9H8+F=YxNw_Hrn}MSE3xiOCe@x+FU3ajU+MPCqp;hML?th#rjx{P zk(Bx#7-aNPFbyZmPH~BeVG3c*8;lWmrmoOJCdcaF$pKd-mN)1mTYpvKB^*FRz zr6{Rv+x6w}rMN6q{pxAZ=X+U8=+pmYx=NX_)+>C&`MY=7=;O(-;4kz&(m_DvZ(G+- zzBqG1_v!^7ZyRZ0MW~2StCi?vOCWplMBdMOgm5Hj11oG1p;YUJAE6e-H%QC^TCp;b z&>t~=rzP?v+fp1KZKI+oJ4FD(C>+6VvYqeUb|aeRQL#qc2DX^g6v=MCyzP27yfVjZ zN{>zIO z3u?T#NYWTh?Ld)DH3c8&UAq&CaYTtr?C@svhA=gD*xq_xwk;9)bDoQ@=jJ`(+ z-NFl$on~sKi3f#|(+96)Yb?A8h%>RUuk}*;l?Fjm+ghfLOMUt3bc3H%{F&W-NapeP zHSZk2D(#!MqPP0-r_KQdp{7T$(nb&@r?MN)V`ir0t87!yFu#WskEF7B92c;!iJqQ{ zuf|Za$OENCCh;-4B5t9UIFUF-yvR*%b7=_IobWisc6oNaTB$_kjkUDKVw|CbQyQnR zk}$?M<@1&zoZD(8K8?p20Th>fdNc+H33v@!94+2j`^prS7|G%Ur=nW%3ZUF~xgRf_ z;YGt%j>=gIciT$UZ6=Bs4f52wzbvbYeQh0=2Bu7F&m7@u#xp1U0N<47u+^~87!_T9K5l110 zcD_9l{X>FsV{CNZ?3kLQL2QHObKGz$>~Jfqq7BM;58i#|1%Zzbgw$`eTT1xpaW$6J zH-NfFdn{_`I)q2z?T^J9dYt1FC2|Jc`sOqG(Knf^S^9&zTut zSnQ;0DEVaLOD?Sobrmd2ow69i7>`fvWD8xq+I~u(hnjGvnqA&iQX+hj(poP`yr)r2 z4J#0Jnj~uZKYZO~R2%HNHEO(gLV~-yySuwP6lrl>(FU>fQPxbyuKG<7#8o8Y6rpld6<^N!Z!E#@1#RI1IvM~Dm;!Om3CxU8MD!T_UPLXyXl0_bHb}HCm32*R04JoIR@2a~0mQ2{GAO$NSjF*f#!)i2~AV0;BJ|TQl%dnb;Ef^iN#McELYd z+3BfK#|3V-F4DXWJqpqsT(Uh|?WDcroKdH@j~72n5^e*sFleW1r&G zkpu&$fkQ0C=NK0v3UKkjQHFsFC`-gHOYmKgQf`B;j^?SA?L0}jzXC;A$>^bs`u@nh`}BJnMsWlS zXY}6uw7Is0``{IjOzHdZ>JtVyu$jR3{tsYO0hoRMvE>!_M7nY-1ICcSCuJG`$ydJF zn!x68|DP>E=K}r%E&dk@K&JViTZ2zD-so?1d{6&;!aN8-nElio9$-5kaAZp; zsDLa$QUVe>)^Y2j#Ow|X?dIhAK8&G$8>)F5+HHZMB?##QLOM0ytDr)fIU#xnp=OE@ zEy6I<1BkU)xKmNYelg>5%sWtvVJ3ig|Wpx4%wJrV-%(f>Z zbfg{Ef&)I&bV;HSm_m-_4)(dQ1 zBC3-FVdRSxJw=jenN(*m zxFR{-=P=E0CH>P~dLR)rSO^+=m-5jE`YwbrkAUQQ1{xJk$%&I;-~&xD%1HCcfM#T5 zwq<0mWaQpuWfn1IaB8LM9zvPI8Do`zAKKzLdubEVvhb&`*nG=u>oXyBtZOi$-lJoN} zXM-qrPbq>fE8J+&M;gMAd(@VDypnr*m%9=Pj9Y>33K_sObFP^3UY_+ISMr|k^5BU7 zUb`b1=c9bgN6pMfZ_meE&BwkMSh@rJXS(=bWnwXmz432fgHgf6kHfVEGU4bn_)d&3 zkDCwx!2G*+qNQ{^h$lFPQJY37kyIjcz_9+GGVy<>i=*$O4P_coCK+wqOfI|OoZcj6 zwIh&azb|a{Df@4k_$z z*Zy=ryw)Xv!UI25JB_+*Zgi$rl@bBq3Qw-+njM5L@1W9}B)*KR$2PFo_3{xRL;+ zM%xFbI`$3Nr2X@_$;)&FNGEb_wtA_!jnY`yala{544E33bmeOUQwYE3mmTDR@p8)> z$UW;;$ecxNYr6?cdD`b?`N-~<7dxaEDn`9~rIU}<)C(*F&cX(cR5+$|%ky}+gp(P$ zf_mp9NVva6RARbr4a?M~c^pZoJ<7<+liW)xs-OgEfpTFk^~H+)X-6k50Yq~%6C6_SZmFDfxNJt0vQ<+`7mesYVvykC#Lg7d{0v|Q+a(S*O-Y= zLrxEnoanIqM5ZQ+w}P1SV{_i;G}I}1p-C-F_&7}qL%K+jSrw<{mf3r@ zem_(IXL8kji#|{%$$@;5)P;Gm#oekZ@RU4;?WvL>a{xDj&VqghuQL>>c>&;HZoH0} zh~ymjS^NWf!M%X_wwhF?;dBR+9%gX@6gx@T<}Ae0f>jr(*7w9zD4Jy7J1IGwA8Ddu zJ6rO~C_h>c74s6sc*u0hii3BtZ%DzI^Zc?%#R($L_lJTNq}XD4cAo?mv6be4Kb(|D z_DHcu&oK!tde&kmu*lX%W)k+LGRCxBiM{kzCYt}K!10eIG;vO9O-*WU=iW&q`kn#_ zAsv$mY_QPa2bs>(iuzveH#Ge@N&-^}7vG-Uo#cPA6x6Q*?5Emf`ZT2vu&I;A3r+)3 zoiJoj?CQUb4p^SnCJ(xlunj)ZIK9Pyd?N;-Q;#5ElFl#iIB4?QZC2RWx1beQ7P+V#VVTJ1Qe;jI_@tHOiR5jk= zyIBy(QOlv;8SjizdiptA(*6`G;fY+sf*Z%W8*QY0l( z(MObXi-&i6OKc2AD|*z86HrnNV#g^m2rWn!<1RMJ!;!0BP#m4#j7%iD!&Sv5!Z&i+ zRl9JVqm;TSbJzQa@zh}7E&e2kWPrk)qEdVfjQ+7hHm>~-o9B)(mRQU&X@?(X01NHf+Qj8{xN>z~!Vb;w6HkDHdA8Eu^E{xGORq)zZ>R3`QI!-~#L(x>-Ob>xIQ<(1nMnBbu zm6z(VQJLEcDn4?)S!!;-`CMeIB`_fMt$p>T#(T2LoNp1!X%sIv5Ubh(zN(;?_;+oD zTD29y%Ox0hb8Q?ltJ$Wqk$o<*mHj9yo4>T&YkhuJ{ikX>1(nsg%-@YUy*hSUe;Lna z`bxGc!?wHC7shjmzHYK$rMzBLfj^vIfXYmbGb2%F;hJgyqQtk3BiHlecbi%Wkyz4N zf=+f}1N#Lcy4>X#V!qG-nT9E`^Fh)gOE<%)2}PDt$d7)!UlfAHuVqH|t3P}{Qx|X? z#dE@uGinSrczjYIX*WripRtx(ehS~>eM=y~Kai}`U?3DGC%4|$Lf1-j#zhRDiX`)= ze;q`T{=Jmj+>gsm7cL|`lIeTQ<2i-Jaz0UwBy!v#B_KTHTtXLxM}Caj3G>2GXlWQ& z;XgrDUmg?)v&2y39smeAru|aZOd^OzLO;8LCnl2)r9p{xjkH_3Gc9@ZO-L|m-tA1{ z_aZvoi^Sm!qs)a!sqRyno%)lq3}a!N)?ONMkl0@A1RM8aaDMNhQeYiLIoUM{5jv%S zIYx{eNDsag%SCg~uIPRz zhbXd)3Of-!Xj_o2h}9(c3(`6CZD-3xspWYGqWWE7ku`T9 z+XA2qN37W;QsczI_X0aJoQ^e$ajxBzjfRv&I>Eh}i|A0bzF7J!B-|+m!QQqSyi+m$ z7_+^NFegh4dYaH=lUY+b-G>%fLNC7bY@Eipgn~<{@3v)Xyx0~@8*uD6X*38 zfC{@h!1c$mZTQ0vFA@31b;YB=vuNEZncF_FIsLApda0@P?U2ax#ebkqY5N`<0_%7` zT>gzZtzRDFqFwE0C^?SxdM|W5-_-s^od7--%`yeA2D{YW!KRagA%C8)p9})mH8zux z^M}sRFYYq@YFGpECK>F-zjA9wN#8W+HMQAJ_4$u@Qydx`cEfJJ!qP9YzDoED!S0?4 zKV3GgKNZJ+ecac8-LJu(Z>M4Q+R*%!)wI%kfq*|70Y5hZa3gN=Wq8V`A32cbq%h~##7k|P8y zUO_po5L&@d2?l!B9-#IzkcSgd$s12&1k4G=(>oyeqf5Dni!V9?5l01Edxv^@hkM@! zdmjW_qrN1H@W7F9Khy|+!Z5+QFsuTm2ybO)#_(*|zA}g=43i7_%{fqE1nAEg!6Aj1 zVF(I~h}4EgW*>yZIHOAJXtAg;QF>ioC!6yjk-tBPsK3R-xrOk$MwUf@73?CK4v6yU`gIGuj)>VwVVzk9>TCpKZNhW9 zVh0DY@IhESEbZB(-ac(B-a&DidlJN{xU(hEki9JLZU8Cg0L~fU!3c1<&?eO4&Gjyj zCV`9O4n&@eL%{@E{SDyDw|TrZGDilp!t!GoB@?h*QQ0<=0a7TLaA283U}g{YCmIlU z3XUmqTy}p*swVhx9tovi@GL}RtM+xghb88Pc=VNrz-9tRBF|QlKdd&%-$o*{fj7|_ zh28zNh%0`lg(M~yiaI@L)h(T`O=pERcFhok)E^^3B_eTwBygxQG3zfl2f{G|h4#=n zfQ32mg%?L~X`ZP0g5;HE)tj6zvGj>rX@FA^)U?OIP zj8Mv9K|)|9UNm9BtZZ13W#IqO{oiUncERDwKmg-ItU-U4^>p@%Zzf(br}qPHW+PN2eXP*04~%xevoHpY%alTiE72MQjV&t* zKUQ|VDG^F!Esd(Ii4v}sruj^)A9+NPbp*J{*O9@~_0rKA+p3a;=yt7YEqO7!P?fkM zYWEXskFVRY-o>l%lZ>*=hSgqpudFtcmuTh^BOR9UBYhKNeT_DAXbieOhb6<}1{i(~cm*uyk*iFMsz&dq#ayec zpR2`us0CKlf<)?cgu(bKbuYbP0v0goS{>I#9qI#!+OdSrqz=mjPhL3D#jX&xDqkMvoHin8sF;CT1i8>649}O8kHg&RUZHfI2k3aiIKobKo!F@imZjhk95S96r}%p2*6Z6qKxsVc?2}Wr@{5)51H82wejz z)V5`hx4~u*VL+51l|qE=m&UI2Jy$E|1$CK9GzUCO0!AC40N<5GbJ2vH&UH^UJ=0u#;wO6Nema{$#NfNcXf zX!J^t3!ZNi(f87EKP0OU$X@`*bFhcVJ%fqO#l$C>Zd=bmUSu;FY$jKjj_sP1uau0r zna{?>wxWrMeh*As057KTbBTJ|d||OnA(O3p7zJq(K%C9vqnCP^i;|Rkt)pU;$W#l3sWR?1e!iuw8q2 z3VQg1=r0u$W4=qQEP^WaK`Ab>f}w2a_XE5AiLm^f2-7S+OYRAHWYb3=%C=aWaVhhUWOn3jmtv)$O67D>@yxpTnf0|G*RAGTH}$2q`vB7mKWPwNcX0!I>a}S@JUY=t3dG~DX}4v!>K?hc0;(Ph~J5aiQJvlJE`-b6saKaYk>~7 zIh<_4#w+CnEb&?e%Oaa{Bhcsk9Lyk*Pcu+zMB7i2;%#dnXJAY?Y!7jRDHj_@c#;ya z*5ma%A@QC!lPfExHT6l)8^{F>aW8Et$#bCE6Oi`-U^D{^y;~5ZnxNL27$*hCsB}|P ziTrV8MCyV2X$orb#pB?d;)BQTr2+ME%IY}r!uru3tT0Y*SerMdTl<7!cBTap_+VD^ zY&huXnduYqJes1mjTLNSIxYu z-eRm0$vMqBDaBZ>BO@2M;16#gqg*HM=G&MjbYf`%Jld$$aTkbY6Xi(dZG~9dMvVca z;QH$pn2Tzq2)%@sj>APa7F7qJ4(?S?NB0BJ*6atS){+FQZg{(TY3m8#V1_rLg{bnG ziwhn(UzC`N2#n%x)O~`dmcJ@I`%`8_8tV}Nr``T&1{!`MNL~PFk&&BOfW2nG@rXUH zMs&-U1?=#fqP-h8!&o=2j5gBrrEBe`YrxX+rbre}_-DLo?Fu%oNi3?iqz)AJ-Ypns zHf&?dFlY@x70S!r)$YSM>EAB;bKB+nHhdfwh@FLcw#VEIEH2XdtfxKlK)bWvxN|Av&87KCdKZrIY}U;zvG?3h3Ap=<#jP%*GD zUm0mNy5#PoajQNo@94nmIM(b3i{rP}6T83R9fJk(;chjM67oITpx@73m|R9Ldndox zL8R*!L@?#o!)I)X7UUdBMh4iPsTb~p9PY5|bBgs7K;j1qYcC5A@Qeko7)+3D%M-wH zO?B3JRda#m>dAT0^&6XwFz<|N9W*6!eS>JiK6`CCcg4+-w0zmMd?|=20akl`MU;mn zwoZNM1E7*7NT>(?=mB9hVx`CSEAU@YB%7{mn6M=M!M5ZUy9T;18U2pHVfoF%9@MXV zj3H^q&1!i|UPl!-fRR&j-63c3gA%jv35Y^vimH5Ml83XBKkxzO$u(=%Kpr>n_P+2P zdz=PN>(-^5=uESu@Mnvorg)woC|J!K`Si&=T5pbkd$+7yvh|X}SAE%lv_sXj>&aau zlnX&ES@Fx()n+&>L0mbZE02MjpX{(8nWo=S)Il=2Z@7!+ovY;?ReyV2LV1Qal)g>h zk8#9ngv&I%&X9L{9+ePxe*e_y!%_EwIz5Yl4K<;X!N_>e$;fJHJt46CC-5KjjjjMf zw&(Gsm%W96ld&hnwwWFNWOM=aY^d|wF}E8{byLPTYvo7`uC1NXD(k; z0lVhUh{C)j5}CNjr4Ith)Y@stTJ&tt&l}p1ty=VJ=9$++R4Y?I%p)tkB6U^p34YM0RG?BNP7xXM+akHboZ%W zG&z57KNl&*QtUX-GFcJ>Gm?dg%?m(hrp)B>BdYY1Q!N;rm=c$Wv~nwaSisUF z!(_0bUn7ISP5mwfA!9|*=&|aLsRck}zUTLIq`^q^pxcykT65S1T||H|R28DB%Xvvb z5uOv`ndUQHRI2VJ(<}Xl?$O!n3IZS_Tf$ zI|yS*L%iKNeUvnydOcu?(-qw3F_$i+>k=jB!8UWMoZ|aisQX>H=C*OrjF?7OUb4RM zup(X(Buds8Pp=miFr-_@t95Dm(XnP-MtD$j83FyUW}IK7r``!PNS$Clb>h^zoyJkm z&$tt5*LJn!+Z`!6=l#A1k${85bp-#>WuU2JfAw9iE4%9m%|46U7>kAyp`9dX(QQiP z&*N2>8j8P1&8GIW%bbqEDup>%`{|~5T?lC3Y1#5)-+Hyn-^*=RI>BqhzDpq`(iHG~ zD{{_Jy5mt9WQN*@1wkD`G?=6gzjTPA#DJKyDdNy6LhcTL1Pe1E-`7w`XP zn*rc?_bcH2Rlu9ZfPm+RZ(0E`WX(XtYXEPvf+Q0D4%G>&Dgqfasr>OI2&@~Cz!)JJ zqly$r;IRRV7aZxu`jilOG@F3>v>#uap$TEZ-GDc0{d(S|8CabhhxzaaJC<)I?BQy7 zFSEHH&KMYR$fAN8ZYbVa>5vrg>TXM)M-t zn%4T;fr0!1Umdp{Z60U^RqTtXOz?ZBpG1d*qV1&nal_GD%(>>1gB6dDnyvi3H3= z&vI?9cE#J4xPRR09A7nKHV| z;dLuv-5W9+21Yptop{?$knoNCGf@(uPHEwpjESKmus0*Nj{oclANoj zprGey^5b6LnH=vm7sGPbWeSlrpXa9r&1hHBLoBr1h4 zYr~T|jIDz=`^h@vHu?=&sZ_knV=E`R_>C7vq)>U0yuMuhCZoC64hB_ZnGwI6enxI- zItZJbj^MX+JTY1OJeZ*TkZI{TnKF-z&Z#5+BLcB5ckA88D-{+H8QQgUvsENI{9p^k zy;gWbZujHZW|-@2W6*imD_%#`DVP=O%o73e=kuLRciDlx?}-RGCA?hMA2Vt-&N=La z(=YaGWE)m@Cd8w{36vh2D?veo{hOUDOMpv{Lg*f#DU zj-p4jX%oZtj)&F~+J}njgzDJavFVk1^VJKZ4Sm6}#X9G794i}$tn36nwp&!jS{nQI z=kCWQWW}Wz8`1qcP80phtV1qwvG;8QuijY%BKq$lQ3#KDSaPH`*_mTZuk>2-y5C$n z*@~{|%>9w8FDyD_y&Q~qQlk64xyR&d^1S<=G=6s>h&H ztd{;(t5mgZvF7A=jZ;tWm%SEiL7}x3GM$e7&);ReG8W6R$Gdbye^H-3bi+2)xig+} ztbRH@^!ysCE8O*WiJ1O9HNM2d@)hAM;wo$TQ4d&t;`shqJ*x#gE$EsjmHa08LCxg1 zoDt!>%^au4Zc2l9V=bZ%S?PW|L1~oD{TRx;RVAcw>F*Gc->oAd8t?a{-hJ&*<&R$% z*ncH1FVGmVM;=Am>ZF1t-*AzAZ#!lca>8?eOG=Ec5E* zpzGGO%_sZbzmEHD@Y&N0bm-&v3a4m+WV7}}gxX4$nqxZ&qs$T!8wa@eO}|~X8f6Yh5(>V-zge{S%QZ)TWsF9!*59lZbR*X%s@LDxFy}QAgvu- z6=ZgTkPthvkXp!Z!8Ap#Tvij*Z}tG>W3=uFTr};T?6v$5%81Z%?8kygr6b8?P2s8j zq_1emaG+PjPVD?z`Q3p@@`9+by(Dmzi74*r$ko_|_MwhKkR!s zp&=tULVjEHa~ES%vq}anXDgjUG-n8jg!;&$r3*Lla!2c*L%5SEiMe;sXfm=-=4d5@ zC7BQ~63(NXB)hh>Fc6I^){;>~oj@(Vjsr)D{DXrkn8sXtI?C~Aji5HD#PTuW17w$HOmj{8% zj(plEMF6Y9hk;19YdWXL;ouPkFIojJRmJe{+5Q8Okvnm)(a~XGyP^xLqC2gEqi%%k zXxLbN1hFcxN_bRFRH=#@Emc$rT1dQ$!5O#3*rW+mf2lv?j%GJ9e{oQ%KOfCq7)|>w zOI+PsqdA(ZD_(Mpl?4n>Vnj>SMg8&-yTnhqf;GBQSNw}%cS+3Hu1aL(4t80}Sji4r z*@Uvc+t~Q6auaW41uuGn_gHJORHe_WVpptrPWfO9Icr|Zua7E-%Bjh|a@`A(`a4NM z%PQH7xwdwyEWg@^JXE{vRJ*TVh}xmAofBVEB6L|JdcRNf^G=vzPRz(o%oaz6GOA6B zVl9gDSdvC)AGaHrPMlh(O*E>`uBi6&4t)wg$|oP^cSOleNPV;{<5{_@MZn26g!(nysg zK4~0_)WT|X!Je}yy*G`y`#wFxDYxiN@%$ay&KWf`qJcoBnL0P!UYnchhh5;(Q%9t0o?&o~ z7fq#U}VCua}hM{VP5HrItXTxxR!-!bJ$Q(oBsLzJcU4}6yk;Xr|f~?U40u3JeSo1d^f&Vvq z@BdQ9FB*=glp)8I|69iI1s0kbX%~;DbN+vBpuJcCTA^ppbY>s_RmOj@_ihe4s`Oqg zfU%~kZ(rmJp1>qLqysK?FaHYu%ibdq|ApUD^P}U%0=PMdD{Srh&(&N0?_PiHJsK7E zW$*ti;}awY|Fr<@JJrQW$EsdVlauwHknv74Tmf^-zGRmD zkMIA>-t+%(b@ac=_^*D{_=)sg&&`ue|Ca@z@%5AC`tPe>3})~C%L3p}lzZ7gJAG^M zclCBDn4D^VBNTTGiAo`|$0CCwK<}Wy&F0a)pOizasPAP1Z6xO%^Gg|D-Qckwjf&%+ z4YdEU_fVLM-B)lU*I!nzD|V7p`TwJg|5BIvr;PvqvH(ge_A;IR+XCpBm3%4V?^Tqk z7oHs2+B84Dl<`CH9S#cqZSM(hV#fW;-g7uCf!b77m_0ci{V#j(Q#!d+RqluBs&6GQ z<|>uCDTfz(k9=3-@9OQpEr5Yl-bvm;`l{p7@45rjnL%R&+tQ%Rk=}atL_)1bE~%iI zhG^yB&uYq#G6Ss(T7~H?Mv+CQvY$s*4kZ`!UpCN`_@mFdVU)k#e?`8FX8jt0t-34@ zE|GSLK45*Z_ke3nRgz#GQm%p_r$&pe)+kRZb&9jdNyACT>zM4B;_81}04x$T?ql2% zS8kL1{i^Ph!e^rH(~{eMJkw$rC-t+!G?VpnGB8Y@DIr9*n*}bBC*B1^0sl)$CJfm$ zS2D5+pqT}XhF_{R$1Gu0$kR|$;9dCBZ;7`Wx-I5j6brAV0tR7hae^yw?A{vz0QT0E zz;v+SCXA5WTOj&Rj+#J%$g|f*tOB<8ZlXc%-CnlJr?$0xYjMHv-5KI-yH!=)ZQBV7 zKZTA8b+B(G=0}oS8qEFBth%g_Xlu@ocEKc3!RlvVEbI{i)z$C$lCjeM{5(=|T+gJ$Q>>nYd@5QW3f zJ;nxe27jd%nK#rG(~k6<0{u||@zt^f(xp}KiZ>-985GNi_61Cp%||6*#I!>i3qi+~ zN0Ymi!pp1;A)?*HU_*_yrc?+8(o!K=mP?XIYm)Mc%0I$Dgfdj8oSL29VK}Y_(dT!4 zp+8U;zy+JpNC+1cB&3D7{kHt{aS#H90V`B+L>3nMn@|#5OWd~+lDJW>Vdni?7-A#Q z#6J@vJR3JLqrDZ3yeGp2AHzX;5&g92IB^=L)MoXwvUE1Jq@V9c9< zd3_QL7n!N@LKPV?F5{HOKD*kmC9?Y zWzZiK!xJ8xK+vzEdy@Aaz>l3Es%hO31_}PLh+6K<>NoTc=U3PtZ-*p%bx{RjIAf=- zYLsoJKrz|=W?%1P%Kf`&*Qsxl4y))wzi3f;d~RT3mJ9AiXSXI_dOTwc*jTa=?U6bK zXUosXkcb~lRb)R8jJXlIQ=MJn5{8_sh1ZlIniWP<=okSl?d&M$nMah++-hF#3AA)K zkO+~sqTh`vqo65ONOHdF4La|8g)u9oNi@hFvJ=a*TR1bCLK$OWV_gV?+m`Zhr~qOO znDiw;)U@!_m@$#O3FJzp-bp6tJQi6cuddQ=F#;7)#;fsn>AnaTvjsQOq|-d_SGiQBL~R|7{(ESo|I z+Q`y4X~zxE>X;2@EZ)_|QDM*hj%w{AV`p<`svf)1H=HSd_cCZ=X0f@{?mj6mRG(Ej zOFv%S0$%b-)+^o$Hs~DOLOu$Em|pKWv^6``1c;!h{?3i6AH~zpKgOtbTMll@)B6&n zv1@LX(d-Il*Avng*)U;x*VSLiS+|k3sqG5wCj9;ROW&I1%MeZP*N+MT$xWt&u*$m8 zsG3-n2h2whMn`|WTyO~TD)7P3@EJI`uB=)KR)DtHK-fMxi>%F`wi>7}IY*tXS(&`$ zHykFr{PL(}O`ohh@imI|ebwRyd)XL_LQWoyP*_ zl_@n0v2S$ibCmDk*2N`vd*9_?wy&Peu6m|{uz7VYQkOkXv@(ABlwOX&iLI_t+sqK# zO$DykuDR=~!Okw*3)+BfL@7M*I_zD!E3*90OgDWVc6>ME92TXjRox7mt1ln?StLLY z`X{wFbt-%g7JSA=)7^`H6491cUBWZvODyGOYL)jNg>}W~|CF0!9$Fx08K&a9#JP*@ zc`%HJbfYvh!g|dtd<4w3^;^o-;q44;SEi89QX>*o57f>&4EM;Fnxg5JUyqM1Z-1tK zfAWeoW}aZ6?;}cs?QXn2W7?Ny81rx|ILF1j!eApm>ZVP~(?#_CyS+T)RzF9U>TsFt z7VW0rExsieA6_}`%wB}QY?z>>s3_Ete&w3WEAj|ZxdBs@85Dq9S&$t`q<`%u43ccmE<4P>|eZO9O>?XKxp*~&%@p(uyqUL8pVIh zfO*G@<(}cK;6Bqc!)wA1A1Vqz49-z}X$e5TWug5Y+*%JZN>uyXVs4BAqFN zpLJm|1j-%2g&+LYEuio6UAtb;f~}>8OkhR5C1$w+|E-CjqFduDEbek=9YtG06kl{N zh&jFE<)TsKK8wSiWFIJ$x73gZ%5-fJ8aixpOYl)Tf+^~45X(|faea_KU(o8e;M&3P zf+X7}gD@{UrhL4&0?>#QSiQGq1T(WjM8RcgJOZy@~3+R}-;#0_ig_M}71n58y^u8Xn;adFy3yfyTG)!b~2OsqA9<*srw7!J2 z`twxKfTq1YMuBG93j^5ag8u&SrIL?c-;@5<2Q!cf9k`I5oDU5W@=owU|J;+l#gkDF zCqGgE?G8+}L4&^PMeCk<`5eRM4qB*`v5)92P6x~r0=oL7ZS`Y(hD+DK16Z}CMH)e^ znJ~+Rfb~6TGx_NuhnWJQ&@XN2Zz3~2eW3nKQiinXQ+I#~CMbdwG^irY>JAE<$$)Fg zC^P~l!_L#kn)M5nGE03jHdk`=g|do`*rsRDhr^Rsf&vJFld>)(au%^&=@j{jWjDe3 z{J8mjaQR60n3%=V%x`2+ne&myBoQ<7ahUTrukvxD^7(f1v4jioKVrhI=7W?AK$-b; zvV|C{vOwbk(#k>_;sWGVSw!OklCeVE_ClJ~0^ZER%?3#n<{~uVBFxGn@yY_Aa3N)8 z5tni?Ho7!=d#aK{ks@QBTT}HtQRn9D)!Mmyl_c_@CsGj7>2WOT+Te61&V& zhxSsZ)zTH98Pip%Jjl!t-QGdD%u~4RJ$jk?|a&sI1(Zts`?}B6lQLrXv0oRM!>!g(Rz|JMR|Xh6VeY(rpq+2S-aX}0nGAA3*5 zSLL^KW9?S6he^u^-xlwz7W?t{bRv!TMXY-J0Js0c-iv!^P53Vh07cJp9Mmf5_}AY1 zmjzHL(q3HE7VOIr^ncoWCLPWH*n90A9i6@%h&cbp%s0#b+?!j}hWzE_M>Gp+!+|u) z+5gOZ|BIKW8MMYCAt!mcH&;raBFHsW;x186V=-e6CDNgn&SY@@Ibfu{FO@6ikKoMY z!Kj=gAHT{v@~?=?k44YNyjTf~!@Gw3jky2K%iGOY{yXBn+?!`LlbQvcet#-zX*v7x zUo+n?_vY|lA6ica<9^}p{@1;E4$Z%~yDx<-Cf!*r%_nQE?j4Tb z4EWb;k^`m(^)+vQZ9APX!&*9puJ)&jWb)X%gl~Q=HCV6Lbcy^q``I4?qu}Tky}R0* zFM`EAI<>qz!BBq|kofO=bBQ&l50-;#Rta~ue`mg5xVvFwM#4ZVoROD^t8cdnA#6^= zGP-&D4=>-E=SmG)vi!@-Z$-H!j%-OB_~C6EFm(T&`Q9rpvfw-Ydl904VD;~N^FBIt zEMz_eIjK%Mrri`>{ZV6TXTilGFn_J{u+aZ4+YDy#pQ`5uBX|N1-g z{StBaD*w)WzeHSd8?@uvzcb%;pNyl9>;E@**R*U?b<+I(!~e{D|2no0FK~pmL+VtZ z9U;Ar?4}>vO22i%HmW$R9)4$We1+XdpIIWjdgSOuA&5EezT*EIaTQoE25=4jgS)Fs zWPJo*j!>toUJf&U5k$1$6_o2A=WNNooZ$WDbTug$-tIOfO3?liabL0VP91kP+a+X| zFOJQqw)n{XGxI%Uqk3|LrdnWev-Es7zg;Qg=3hNw5$*gt&NA=s%=iA0MvC)rm%fO? z7nGLogP*WS{rxmxdtU2)f3D&;Le~rge%d}1{pIdz1h*1w%U^i;D=+U|sBO(ly7f90 zYQ6DezdtDchnM#v`FK=~*!=NV?f6Z5xY)wGjuV6@9N(dav(tw&fy|Y5xCkjY(XosY zJHH(hMbuOP9|MH}Vs#hgJyQW@F`kt23w|{`m*ud3Q5L50d}ooduE%ze{NvGOIgIXXd%_v%$P#dZtRG_PCh>xF{5Xus2sbdP2ChFD<)hgJ;^t>e?Svn7u zl%25G1fqPih2m_M zw2;Ux!EKy^@*$e%kVqHNEj$5QIoF>3D2HGG**YVT>1Sg6hw25%BS8i6OIH~WTm{NM zjDx|nN$~+r#gc?8gHp`g(XWxV!`jQ0BtN(%Ag&ZqBP%6nfr{fkNbeAzv}WraX(gn; z*>cxk8HO`U5>owMOug?ts%6fVhHSsX!gH767IQ{s4@Tw4mM&u}q>DzV8^KvsnOhpbF^E+ zFg(#^S^hkh>3dUQ+q==_y<4!&VQ!i@NxjNcJw!3crHT<__Q<|?V~fi2QPI*#m$D+1 zK@@FEN~&_SXlB_~8e%!EmUKz6%Nil}wN=e$6*r%guS`bAXC~+}nR0kUUdS;sH50mXW+ty_-#^h%|P8Q5xu%}ExOAD?Z27hs55Dw+86wRS`t%Lq#U%^d&yafUCJum zpRRz$BhRF>gLTVPI-_b;o0wwVWYz=g<#nZUlIVh8cg@36i%HW}B~PTr(WBX3u;_j}Y2ChJWhYCDiM#iljfcVuGi_c-B;`(0qH}Rxo1QTT$H?SOadkgaF8-h z7Q_5oY&*@{AhMzJ1qTZ_2kCxHhA??>V_zgoicF@|t}KZ$7m7#|yjlTahyoku6!m;R z0TsUmaRdBp6U4$ERu0ec&IO$sH3YRFu#ZW7HZ*{=4J9@Zo^EI+jO8{E2IQ-S0P+hE zUCVm_bpCaSBFDxJMi%xf7D+^_kMS(Lo2@ezO^JA?C7^M_9`qK)o7^$bLS$rrZoG6P>Y>fYABR{bnrzh-YM)OCHB@I0{c> zG-Gu?av)t;q90ogzt{b$eICPkM_A_C+?}N%uo^@pGxh~fXNh$$cN4?X;~POviI;39 zbF@81ZL}eKbfE3hwi55wR;ahJl&SNDJZ<4H4IO8v$*c1Z#acBVV7%Vp3z{L{)j?`+ z?fXA9Rfb^QZJ|UmZq`g+ug5BwQeFd>8c?Mm^1wbo>^UNiB2uh;wv|fuNIz4OK9h-{ z=_hR`Yj=nxMlpshNIbAfFcS{NTrvo}WrxHN0f)lz0KYh_Dg8UU4~-EDA60e`$ZP3h z`?|5u>ZSVupC~n{ ziMjr8-3SLVFesY%B!qL@O1hVR z&+ay8$7by4i4zSCO$IsCPMW611;PfELQ{U(e(u3Au)u(0#Fm;tm!d?}=ta}DKxv^v z3==>JtwpwgLsXVT6^27r)}A6=0v;JL`cp@kexy0c0s=0WleT@ldbvb zQ{bn#omY|PBm@FpC+C=D3eN8bjITN6nkg~KwlHjJsgi-{r)gM`J=!NOn7cD(*FfD* z`BsRQD6%E0ojB6sjF_KhuuY{eB(v7S&v1e+jvU}7+6YzXy+$Xrv6w}|-Ylh?s zph5otpbQwg->f7AC9;Pozyxds8;I5xD4H`Un)$Akuy05OoM=hj=*XzrH@_u$cZG1@ zx}fYE|DeR^1V+_w=$G@keWrOIZ0A`zB3yCpejsB3QFQy$Oi->B-RvFR3XN`WjqW@k zn*Qz7MHtg37?W~?Ss4*|4MyKRkDgeLnS>I3*m0T?j9oB{UGk27xi?>Fje#qS{TcCc zel9n68@nSI8?}JF9TAt=8#hK}EsN^&;n8G2 zpH%G(BkMy9FcWZ#7G3ub?ysGsVL0T_1lRF}RCl6GG9?Ov|A)4>42!yN+jbEK7<%X~ z=~AS-yHk*o5=o^S>8_z0hi;^#LAqn;5~V{xx?|SpbwBr0@4L43W$|4;;r2Vv^M4%s zZj*qU%%^mlM$tlyW|J95V44r7*$aXa7${;;U69QZe(CAu31%73VdGk27))V()Yogz z0Dln7P!t5+4^cR3)1?NcSELJFyJJRArN6#S-!-r(roj6dbxRIyq6> z-O#NZajGCFbx>>{5YL0?+mz+Rn0fwMK-ZK) zRx(AAfgnmk5V<5gSx@{Jy3jcI(HJxk#UMzu%t#!ih}JMI-X4TcpCE*cteHNz05LN6 zF-=mu8e~@JGhPq?PXZ`LgT&fZCI$ic8X#)WJhL)Ip*(r-v6Ns1LHRXIOuh812LVZp z6VWihBvi00=@qIK2wetj;F}j@1p+8Z1X04p^!kWaAjC)-B)FLVhPWc&7Dt8{U8sxP z{S9KyugWA&L_cpNtFAKIQh=BSBHda!5#*BTXFe-4EL>kURlqf!+ z$29Cx_dvz+f}(4cbj&LE z_>Ofx*ja~+jb)E6nVJnzjDGz-_CPn@?>j!AGG70Ev>Vf5cW1DW+k9XvYAXp#3 z_PMJ)`L4)ujjC>#w5}CKG%a@3n#i|q3}ik~qbcKw<&<+^sL8sQnWVjZ;p=Ex%tty3 zUo*F&t=EX%ID@b}!c$+dt#>MEEFcH4J<>B(g;{_Djji1ciNY+3g@$E4;|vTuYk`2J zs2Zu~h;HGC-0vkL13_Y#^^fI5eMp<$;QYKfYGrVV9n1L{20^l-p>5PaJYIvmn+K?l z5;#ZzHfpSTZBgD45zCl*Zmhk7K>>=~y3aWP7>5ry9jH4MMAe;Fi ziO2UWMqhi@H%0Sha>K1m-DOQ`O)A zscX+=*Z2pi0=}^kI;^QyTVYse_#nYWiIi&r@*wpdjF0Y&P-&2Z#4@ytz7ZPX`g+X~ z7oArE&0+wJyVTO5#w*(q$?IesCmG9{$D`44r9~7f;(($@V<|*~X%i;nZ@fCq;V;t_ z{*@{JQ%y7b3NTn$E7?=VV8uvd9IbMoPNoZ*ctmUg9a-^^aWMu}eFrE(Q4CL}`pJk@ zPq3Yier8O~C^aI>i-8xff8U2Tw+1~%#sV6p_7hQ>Slgf0iu4eoRXDCgD@1WB(81L;m8pk4Ghz+E+A zk|tEfn#-z?5j!S!T?h)Sxw3UpJ7^TM-atTFR|RNS+3QIxcTHem#4$DoFg{$*tJ0`` za$MzILzUFq{xP#x_X8krf~{u^%7!3Sfw5F2(0T%noN>M7<7T7p+c=>B64l>ode(@V zmNL2KT_z#a9M~V#JT@HB`AvU+nV%gAVLYC|`1rH~zpmH0Z}psn@ptVa(PHvKQMN&= zRz&NLnsyc^*c9nlWYJU7j_6AW$Vmw1d+b70W8!5Uzi5-8H&-_C9nC6~j2kc-*R#Q8 z$NaVjUy;c%@j7TD@eVNDs;Xu}$;|TaeEVEq4Fi8Bf@kn;@r9C^Vu`!ZudoJsk3wy}yB-?6x7X zoR5g)0A@hNo)a>~5S>>SUYL3INoJVp@->V{Bj-5mbT;7Uy9Dno<2vMTVGekJA)B8p z+0a8}DLcr#s|<~*pYhKK2kUBe5*t117Y2;H;ILQ{S1u^9{bV2C| zndUIO6uOq15Td@omeClvxNoz#*nVkfSa~6cBl2YLJU_rvFn<;^^-xcAte6<2#1%6qq45+>lJ*Y_wai@&W7k%R@> z>uLPee7|_N++bc2zX1^}GSFqlrIdN%t((I`;dw3t$(g>3j}S1^6No$*p8jPB8MMa@ zF_NX_k~99<1f0J-p9T5P~uiO zp^vge(!Giu8sEA0sL1RZY6tw~re6(`p`D$=uMe$GL*&6c)AG-g+INTOK8_{GGZZ9i z4KsPT!fy!mvx!P<6&GBitW5+iD$he7n6mt%Y@Jm3o*BL%KUhw7nJ5S%WmXe9pFL*+ zOKbopMUe*DLl|g)Igtgzf7RIhU`G>y{L=U$gdKF3dt32=&dAl-0A}`*OH1bsZX| zys-|(FQHUTiM=vtZrzttwQoZ{Qnl+K)MI&T>E&+Zdhkm-Td_y=dNpZeY2MiL;L%3V zdhe^p&uHJg*_FI@~|YwP<|!`a_UazT<}giA${7bw;SCnINm?7}5Q*eeSc% ztypBGA<9%*qJg8PJXu5A)TzD}i_UwK*OtA=KRr!NF!;0e(z4!@>xUypaZZ@m27{}$ipyd!pG{~}Vg z!_U58gzV{UZ${duk#0Uh*lXUGpZ$qckNpv5)xOKgcfFSFC%%_9Ed?z|81do+l}N2T zV_IYxxcn8AkNyLO@*cVInKwvq0zD5{P+uLCaiW!-kb^EbhknTu8~B1^_TGAt1(I?S zmOqt>?7>`mk=*MpPLT|YSY&Z(IEo04`i@6?S?+u|9vL_iw(Tk)3snF`yLv+;t(yCJ zu_`IZ0GrvF`f`#SgI3n|Nw`bROlKVls%K|;6q6Q0!gWK$9wT%)shh20nI#%-n1${^ z%uQ06gRzmAYtG3-L&qd1QDE1RSE-xPidtIC#hfVY6vF_Zf_sY;0uexiy;*iOnRAm&?- z{ABwg-e<4CU9o2_=x^`vUv3*DN^o;meHfdBIM!0r5-%rblAh-&(XPu}N{zd3;Aata zL^I3h}qW~a-YnkVh9)1MW@tb)d(mL z_Y)C~;*4C@_M_rue$=tmawlvoeggQ46Ee#cpcAB<=rU6gqAGm#PGsG* zbIs*t&L}T75bV)uO0>*%T8+@$A4w2PK>~Yp0F7=laf`7ozYs3b8KY0u5u(lUtRPgB?`t4;P3121`tLpJjtp&$~mceguzY>#{*s!dOCr7z` zMfcL=SEHR;%0*NA63e8+EB{0I%`K$Jn*JFlfR}aq&VX+@U@8s(@0s+AK%2j ze7Jv$fU5t$G~W-VKzaQh{Kn9ipSTGdeob_u2KKy&9H>YD_F_8FI7O=ZniG`h_p@0! zMH@eulMLz)a2GqpI`~>p>@N0Mt;r~EFdAO}M$Zhh4fkHww4|qoy%|<|A)gp;zeWGe zVpu(_F0ttQ7K?bsu;Bn#Qc2M^J9o?Io2RpclF)6&_!dg7&a))(=^d8%YdWGmJa|}b)V}(XfFy)~!KKb$t`&ENq)q#yt5yd2skLTvOgRT0`!jY#OJmzxb zv3K_!3No)*7`OLONBJ?Mlirv#PHf5DX49L?|0P`Yx2a3H4RO9KBVVY|w!66K%}xk8mdG+`d-= z>(^gl7V#zfr{hyr{BI(9XoPl$*O;Cq`O|+o6;69t#hE4yR*@o!hso;^{B(IEk#sJR z7AnbFe>+MIxJ=j$eaj;rDcTscC(0MGdaQOGoQ;^-pa(N#ySl-dfKkzw)ILfI;Cg<| zd%CIH!#)b6x)G(axF~`>?!odr56ERso5Rs|LXV?0On+R|;K=S9`)8h!Q-Av?9>M(S z1$YtX4UJpV!@hK_`_g32W6$L32jTqYkO=bAAzlPaV1p*mTA(XbA_=iF0!1bQRU|1S zBLZlT-j6F0e8Y}87K2Ivv|jA;zo{JF1Y!yo@g{xo!^b(jks#9fBW%O*MG5tiB-9}x ze~=&^lO+G%O;jmK-QG=BC`mHb{T|dqtwTckz>cLNMI0i@z#~OtDak<4MVs8iFeXW{ z)lJ&hL;1ajX}0^tY&Y>?7&`$D*M$@(W-rZ_6pY14nk+`@l}aziEMY3Ns8b4LiqXr2O7s=p^hSfS#dRng61vch&`p#xM>&C=i!n;=G1Bck zv1=G|!V%ZZbtmR8IwNEp6#Gqt`*pT>^|t!-RI0UI`*jOtO|<((Rr*lazlhCpOfbLH zQ|S{`={KU6nV`v}9P2mxE^S~Wt7|E%Yd>Ip_*Kuc-^^Do-%HNMUe-6MUkT7>&;HVc zN5-kI-@Z@UglEv4LS98>(56q$TBhIJXaJ{RV5^)bri(WeIvBb(7=9uXf}oImGMHxy z^rKe@B8XL9Aq-A`8P<*w@_jH!B_e024VEO(E&K|dMH&B+B7!4yR;$L&(M_Z$Yf``K(!x{Dp9Tn(V@PDj=AF?+bj4+ZrB7e6bpV2VX3R3#~ zpco9TYiHy7tfLg=7%f!!HOMiZ2d$pBzK%CIzUpv9GlZv_K$%aNi;r!zDh8*1jH}kD zu2Dw0>Olz(;%Kl`W}xG0wO4L6Qtk-hX|EjZ{I1-MIo9+rQcuy}%%l8eR=F22TBD*e z)G#{a8&8mzg;l{DQiDtVDj8>AW%5AAJ zP+hK6U1?YSKBl_*UG>MI>dyz&_%%$m^;y+Ld({PB)l0321cAgku8B=w)sP{Qa(L{m zOzogu?Ql%(=)2nQLp6Bw;kQV}ZoA4p`{Zc|-ieC(rIGrTz52E9;Uw0QV`?bSSGI*O#_>^<%8ivvN$N9C+M};c zS4yboaz(wr{O$-+JOA~^31AZY38^89`dlRsko;{*ux!s#QL@Z@|? zl7Sq$Lf!&b64u*&6si$y_5ayK4Xb+b*9l;EjZG}}_-*a?A145Hhw#(EkyD&bPM~47wXM{Z~fg`Rq8Bl{Jq+7)=+mJ3W9}4dto;90-_O+)PxFTKq2FX{wVMLXcwdCQ09_ z#lq$Y6cLwb5XMp*aV;{(5U5QBV3ga6g=aK2a+cQ8-eNZ}X2WX;yPE44OWB|O@Bqw^ z66DtRQ4T`7v%)ca285w;V#`S;D3U}!dBUyA|CP~L$pii>Eljoj75Wm}>sR^i{tjzJ zR3r=up3#UySN)HShCy~|CrZV>aMP7XjJiWLLv+m;-eMH9!Y}5xU>Z#`C=11~7buZ* z)q;k0neko|IG!49M2^gRhC_QW&m$*it8cdBvA}S=6v?!HG zU`7f|;3T|z>K&HYLl5}?I;R4JQeT=EBFXZT%mSnu)7k3GbQBDG#VOG*;so|gURg-e zMg#iARrT-V$I(xfUE~g*@BxZOk)N+p8e`gKjSPHcK!CG6p1;iJD?_39Vc6J6N|T#AVaK|ocI zP#X_mN@Rl|-b)83P-rlrRZb%^-4rvCus8$IzBghga)D*ygJ>?$(0RB*gLt5Ho( zbTeGeyL{hz?>y9*ui$fed&Jnprl8z`Dnt1%vaD1->tr~m8+{93lxf}So40FB&jUFfm ztv^oJC=pBjd04QkCQYV-0(w>uckH2Q82YKS;=@UQwrc>0U%^5Sg3#}u9mAwNx|wIy z6+{6H!K6AZWP-gK3Q-BfG%OtEW`3Wj9G90UgBeNSQ}^n1s*K%pO-WMTmNHztttiB2 zjFM_3DrP9#?_#aDB&h~Qt*)#cCt?^Qn;FJ!4bC$c$BOynx5W!wU9#XADuwJckTYIi z_Bwl70vucH-s(d0vXgsV87VFk3LEmi!+-TiFvJg2gx+8_K!9$OlK3Og zCj}JRo0vT*H@qp++sT))`xuf0a~!@_$ptBOI+8)sWyKM*G;S<53X+-ZaDqS~V%46c zjzLoRhrZ%hRncBGw4e_>7bUxB%o^cJv-v1&s&cC3_IIVT#rZO&l2f7DCCj*_T9@T6 zwYEw`0dv)1G8IT=vaFyw)GwKHoJI^-NL=~h^{pw46bOpAPp=l5mUS5bAO(!yBYJfb zyEH5s;8uH8Su#v0A=5Y?$k*(g(HL9dYk%zkeo3rkYVJRX- z!#td!xa+@OXXcT{G`5}=1}mu2ukN8>RE+jvrAoiv*gKN2l$8(GXKY7&1#0TE%e-<= zqf2Cy=iiE!dO=(kh>bsFdxZ8o9-TXcBUIg?3Zg zmm>+AF)|t?NVT<`Vn*N}h#5@0xtlx8i5YPM*9z{V3SOVH6D$OpdZ}g zRwFX3_?Y5oKgbOrN8(M(ad8I8?88Xye#?QEjR?r&`-o*;19NztO|ma;=(X796Xb=` zyNApBtWgwQu{Ln1uShvy2(Pss%tnLVE%JF;P>Zpo-m$<2slVT8nCGFTrI-~?9tTkH zEI0g`kvOOS$vY%$ZVc8VADk!83$JwS;P75tqQBnbQTX&|#Mv`X9AnNgALT&hgpBzq zwqaSWl|XV-B#W-fl(Bv_3*Ydt?v>{@qNS3V?*+-f;a-7OR z$z4n)0&hByrz2Wo)oc~a^EkQ6RD!w!7Lfz5)gPURoyp}BPkeM}-NsFWLhPZaEtQfy zaT+#kAq!15O}B+9xX&@Scy3@t=6Kw1z(K;iE?<5$Xy-&%1z;u2BXxU9)x2Br-%wtu zVYtn}a4w#t&1`T(T52?lwi^LvH7t!g=vt~7j016+gx)o7%~Ke9y`(HPdW$yq%|x9P zxS1#^6gr5}^VJ(8=g?QThXi-ytTS-spiuNqT^toTIHB(+T6dlOm)|(+X#N*ibc4Md9l^3z14aQQQ_T#>W{q=kT@02bakYCIpl%A$hEg$lj>6>dbg#F(uacMFA{%0r^}SU3G!z zQ>uieZoIEZn5A$$oPyAv`3t<#NV~>OKBZ+P!Fy2*QVR?^kr8E_BF}5GVO+$0)$BU4 zi<_K)m1iozkS8$ooPdMby$Lty{5_30@B`wh0st4_T<49nj$}&X>(cEcW+(+m~F@59QQ5UoU{=nI~$VW5^Wa`@YbVd|X>@f^AR$j1$qd6d!~tEqF?B zSz>5Xinsax87zpz6XxlR5dj)t!mD@1vD7DU+YOG40JSlJGLW2Tx+4-xOg>EE+gm(e zf+*An(ubYkWS4-%YQixif@K3efv->k74WM-=!zbgr4f?cbbjq6xcT~^aAw0m3xxLNvmtb9aOn)n+M4w9$OF9oR0^z6e?!lV0R0bXDrn#5r`<#;-H=egi~ zX`CJs6T}nLxCic%qc9ta95Ms5oXO%wCR8F3JJTmdp2qLYfL-*-#a&_;Zxa`0(N7k2 zHv&FQrucKh1a+x0lAb~mVcbcQxM1Zbuxe;n%e!Q41_wrdkRj(M5i}jv+hiaEHgyug z9UcQMOUhp-0K3%EA16T3W|Db^S`tFCk8{F1L0z~OU?Ms4gCMo$umO}a&8bB-(<5zV zE74n#HiD7Gj|2}&A4f{-uOOLDiOUj;h^Nfx6`7)cZV|jNMG>)-mTDtx>6I~&oRPV& zvc0G4-n1|c3wrssFfDdACG%LUkq!?gg|caZHV2uLW;y9Z^#g z(medKL|egRgEEWY!t^_lYMYX*Wua|o>1Q(Gn;wgTJCQJN1KudZ(@Ue=D1+^q@)G2H zfpWv|mu_j^oFR^{V!XO>reNve>Mt@l`}bfezDMQSDq6CPw*#t?F8l zUo~kYakLPS5&P_}HXq-XrW=F#Zw=u@h=4u14tQF}wNeM5t*3y!suyUht23*o4z%Dz z!wPptClo-HF>H_-#g(&b5KCx~Wg}PdX|TI#P-gqeme*jPj)xsx-RS;7K8U{4g>jcr zq*W5M?Z_A(WD2(u9)SsL>_Ba&{@=quv#ze?wd8gfjVRL$=5}P>;cDo4aEvthzMGqT zNs|K`$j;C_s;SX33)j@gIX6ul>`69}R9i{NrI24jFU-b}id8G83J#`65e6~O`|J}o zPnt6P+-}i6C9TXd(K~A`zHfy>Vze#EYLy#Xd_a{e*k3W)Vx!xfgXkFsIP?(HJ89n* z8Jbzz(CFf}g7MoXR(u+L7~9A#&r`5^**c(IjeJ&ZsW45xb1%~OXKl^*II9OHcu|f7 z2e18Dn-K#!N1tQnFoW_SHF;eajgII&G#>_~I3(QJ2T!>2Y6KUW;Nf5^Z@R8(5_$!E z2B9;q$u8dfHOE1SL;DGr0v!ipyU*jO+qE#-%`|$|8V0RMj}8xrUIoNF)`R?j!|;G} z!$l`#-X(SWZ4$2wC+Qnfw~85mZx!b^!S^6yc1&P>7eP$r;F{k@4?oiHen@6L-0iqV z=bT4Zm=f+qVF_5%%SOI@f>cgy#uP?-ZTQ+(IFk_Dy%kI3XIS;x9)vV7vZQNDmN;^sGO__NZp|L8 z%N|7$9EBAbx3H5_6u(WVuiYdx+2|)7%O26h=amh!S}wxxz;#4(dOK4&25=u+p^zNP zHeaqB?O-2Ut{m%VCnYzW=s6r|8yg`aGHIg_q?P+3P3(z6G%1lSrCQ&y|KO{^)W_1(LbrXE5!1eHHiVzlv>1n1p#g-6t2sE^N zd(Rw?ILpR5D_hm5GCm_SI7|Di@e5+}{lcs%Pk@Ep4650j?D!nhsj6vgGi&{f#R|S4 zhd_ds8UroU+3tM&3N8TnO^RdgjpnSKUAn@l-v`45AJKHBTH&`H=_suo(ZG)@nH<;g)vK+Z$0Pr?tWc@^x!3qqJU1EpzdIa{^eOiLx!3%$tkhWi zbFYDSY7Tykw>2HZu@M;5*n&pA_I*igsHz@+uo1h(FTzDyFAqW=u^c{S3SAwqJvPF6 z*;=!`esA`|9gbAyP1nb$?sUL!PY+i&=ew0SydB-9-2FvA|7BSTWBiMafZuE6nAiVx zudyoquMWomT(fBst);|7X66h=To3wzJ#qqAIxUnUwTyN%4*PCxmWV-@I5AFy$c8-D zFVIYjjn>KhKOK($pRf_G^EQ965q~;0`@5e5{unQemA;#?u^ zYgR)()e8Vt@vmp~Cfppx&wfR`fuPX8=gMBD!k}A*S!>Z%H+uAlGtd4rv@2fy2T zm!BQCU(Ca?5jQ&($DQ<_MvlKBpt7HI0f_BSx`9lUCq0<_@J`K*7*g%mYiPluWQzIu zf*+zyYuX^9(;;{WZFPa!dB}|}E}BP|b*qma$F)qF6=mSeVgtDOQTi1zVEh#zBa8yd zG`>JF1yZyJbH1Z2;At>?wPkM_b)=F!M~9|3Iq?!>_N#(E?3`DFUpvfb$#S9{G-#$? zc{IB-@~g2~X$*@K6Mxv@T8cIVR@0Q_G@SV2I{^R5qrsNCy7_YnNXK|GTHfSf@pn+= z2k*!g<(9S#Ws}4H+<)I|ish9!{@1-`xBC8fJ6(jwadqP>#N0dt>clmqHy<9(;%J9` z^A*HjK3>e~eSA#WC;jB7RAJ~oS^J3+L(B*e`x7cUEH(Qm0Vize+ynDpYUq8W#Q1hE zK%|vh)5`Krcfdva! z=zC6f8lj+Kj?N$aoI%LRUCK9~phThny=-li`7{;LC{OPAR9Wy!@H$cVmaGfQ{@ZsH z1!QL2k-V*^v5qkX6uS!YprbEwiuM##*F*9@MXKTr4QOe~k_RM-SVY@73!f7Y56KCg zC4gfJ>6sK2`Q|DU)5i)K`G<$qyw8$u&%$pdmS{}~;*+UuWf3)7Xf^MoNh3)Z*w}R9 zv?sWvw*}_uR$CCKTwNVj(b1B@{q5lbJYN$Twc5<}ospd)AjHhV?5|jCD4j?9yaFu-v*6Ri{Yk zvTP@jL8nA%uG}Cc7v`EqrD`!%fo=5;aa~5QgOwz8HJ;d7mCeAf`>$n1zzyAKDGJ=O z%v+7DSz(~;ywKS>$L>D2%Dv;#AJVX16CuhjgO|0K$w^deTW>8p(miq4S6Xuh3@S9ya#=WGYBhxFs-4PCYGBs zif&^)C0!t$NG&25w{9cJy8flo{p>{U`pc(snIV+GutZudIlBA4VdV9Xi+jQ#Nppu` zg{!4Rv@;f_@cJ?tu?Pi1uAS{YS;iBeifPsKJIxutfb-`_w7CoqP?a_ec| z3x%^!(E7lk!Fam@#~IF_exq!oa8Qe#lTN}w8M%sAdnKjz;cT1w3j`e03jBr8vNl=HUk)KP@XFV%gKEE5FEc*Ke(WL*m|MhFpAN% zR2|BZM+sanF8&!>NzR7UJ<>*)^m}8c&Em3pSa`WAT>&}0p+ObciOh8pSaH8{>OS1_ zEa`WBWfo_CPL(P}C-{GUwed&%zfJ*UB610TrvQ`WJ&gkSSVHM2%-dSangnLH%!hQY zZKZe)%}xNR_SRSoufvb_^rWqcBvFnhOjcK>DGQ1u*8ea$!{Jf?)3rvaeEfE)-fAYF z@*jBAUz2mSanQxtpRYED|8CZr^=>~gm{h`>wY_k7RIWJPJT${jX*%93J)mG6nqKP0r|76LBI}dz-=zkIeM(lGrSk337K4mWeWT{e_8w zQrmIH+OKcpQ}kO?wo~&bHGANFxG#*+LVzWi<0 z4l!1+m-=lZThxC_m^-YS{r42`uV$_An-?4ZngTwwZV}PEV~riPv!deY#zLb~Yw8ZX{Ia6T-DpYXo(K%PnW+~@7w!bFATwAAN=C)c zPwWG|)Yt}4%~W_c{k?z8ZvD*vP+ME`^F!rwq$B+(ed|lsxOI$Y)Ctu2<|frEouv{W zLR3L<4XnC5?fHfEI_xPd45yE*qIJP5YW&MH4!%-Qww0*nqktb^=4OsbxXaC*I{KE#p-aE`ga3`p+pK zA1@_XG7#?1`RGgm%v0!RMGOyoJ(f?j!qv_3+A-KfM$N=JrH50_Nk4@`+l zwEf>HU{GjT^OLGRkm>0air9}SIT;9f@yLxl$x$p2)+|N)CZs(iTgt)5=+6`|tYmQZ z&lJEy#q3xo8}+aiMMgWKmHEfD_72&&FDIn11Rq=Z&j(w(J_x_m1B**?PsfZT zu|}X_LKk@;H%H1Q*8%e9AH!|%JR9p1Z zi$&$V(u~zeL-7(Vi&}-tOwQd!iNtEs%W6`cLz4Q^#X}aYw2|3j_!NLL&C(c$K39$s z1%9m>$1ayPSN+67Vscch)Ekxkn4l}DC0b#yF!FZ_aEz@my1!^@`Il?$dSs#V?()kY z*BUBYUmYZ=CZY=T8oz?9kn^e*99wBAeK&$q9bLNWylJV4Bp-aUQSWw%^~bd~^<&T} z?}&)U_Vv=ZIisVxZ_E`ZWA_A%HRKg}LzOhqO!)w3Vg5(Gr?fX-WK}=8W&PTlc2E^mL(wRz{q{GzesS$u3xk> z9Ix}y28ZlYbm$fxFDkI`ip5`;U1q=lH29*gvVRo)rJ55updy+0-Z<(MSP9z1<3+!ekz)tJO9_4EfnhPam0(hrzP?5?Mk#ytoQpfp zeEdfzzMw;kAm76w*&QG>00ozt8#ILJ$~9Ts&c#&HWUH(;l2~?^LW|=ysu2bp?((fG z2(=$YBt46M%gR#&@d}|aQ>#yo^?k=ne)}HPDPye^$+DvFjlkho^pAO2$=_Sb)08v5 zXv+;WU~vh#0$Gk#nK-yYYP=$5D}OuqtYAx99J)4I9G9d8HT!!y&cf5&Qug5~&aMWp zzF-?ya`PSV&$rTs#qqFx9RJ=|Nj$%arBW_$3^FGMC=8geJB2yeZU6uXw6_3c00Inw z9RdCmfXMW(^_+mD626`z{Xt&*6Q_V9FK{<%qei7XC zN?Ti4)opXzo5l~VSi+o<-YNq#=e8)r&Yf-|9lh$>O3~T`zMkVdMgDs|&&hh(L zgD(a9=!Z2~w@Qb#-*N)r$O|PaGx&OLM``xYdXBA=DzS1lOZ9arOc*au{OfsKGsO?- zbny^0^2ExMC;a1f=Bb0&`%Y`*<3H;;=&izukN7*n zgnnGZHpc-9kHgcqdVcJ6YP9k8XT!`T|DrnjU3apd+cl=sj=hT=t2~z}IrQBdPYQjm zK`!>C(P>JdEsdw{kp1Z55Ax!2R!7g_tFrvts>}KH#8J3(=~I=npuvlam_=)x!gu`Z zIy#LK2A!0AvL8$6<5DL->8SC0iNjx? zbLOQOy5FO1BI1(q&XQi2g0)`8qa!;;P|WUTVN||g^6-m65C;Oo|j4y=ns%Waj`-G z4Ejt)XSl{kK#SWV08E^E5hul1_+DISi7EOjZb7o}y$=O_ZTk+lI^%dMbp<(>@qAp{ z(O9zLIm2isv5J*ay)ATWkt^_Be=>di^PaA$;cCIkT(rUf=6x$!zR1sZ^o3NI3E}cv zXt>@_y}4I9KoQhBn0lyXJ?%~MFrODMG)iZN_An+&D5DOVIg5mP0qEx>IScnim!a}E z9byBtfYh4LsTWH7B)C{XYAUX@DG;U?CX!R}*uh1Jv}ICKLRz1ITZBxyiitIIfI$0h z`a}vvNw;Z@JOVeyHIS5yOC~t#MF<6#D)5C&D_Fr-hYUipFF~)Q>0ND3$U&&^s*X%M z%rm$gMiQduM5_|`Q2#<6S;^>aqK+dFK+wPUOB=NttPA0#O^67SsFs}fA4;ykaQY?Q zNjC2vqg#Q|B1eys|2nWTsEU>Ly`c}6-e=cFhPAF|g1<**6AUh>x7H4%9!9`j@K+K1 zh-yxluRj1|yef$2IFM?8^(Iiqy*6EUSVQXwjnBiBOp8df`^&h~kjru~#>!%6FyUFuJ^2OUuzKSL1&n}p)n1O0v8ND(jhi`4d^uc_>lNt2D<%sH14A6Sgs3C>9WXowQ!kYNh; zW=b7G$Y!DV87h+5>HdTouG_Ku`u=K86RW-wRrR2g#(;4WJCcF1YgJ(MdW3x7Rqf}M zcgl1tm7^%XHD+s)a*6h-OA8GejO%{KN3=G1I$TJ6%2_wX@tN+wa*l*m9zKu0XNm@Z0$*$Z$`1h>Iv+`x$h59Z>%yZ*QN-|nBUu@3OV+h)ey-Fsb}!wE|HcG1f`J6`7Q zQtqy-h^Su;`hVJjkn6FsmM9Qwfx=jNeSdH@RdzUZ9-$vR4E~&N_!juVt;153;bYp+ zd|T(w$O68@Xv%xL(H{q~(jA)*xp&JIKimy1I+%=Wo~>>^x&=agcD$QD42=K2&Oz$j zeI#laQr;K?H*BtjqAGq@=kktl%|kUh5!&93xh`wGDi6(hIei;*<##Uq3x?puVBhLR z|7FXNk(d~ktLL3W@R@$_;}CA@m%Gk-sui@dKKYN>2TSC_Ri8RVn-?a2f|Jv>YV3w! z6q>xBz&z%7{C3jhL=Q<@(S45?>)p69jtlqIREL;Oe!6Djx5WdSht))GE4zm6CFra2 zcx!ri-Kcnga5i`i@fb|+vW5!n`^0mKeS(VD?}jh0fhG@CbsUo%90$WzhN1G*5B80JzT=c8rq)68V` zjUkv-GMG96bt@GggBef8l!PBh7@bT`dV?D%05S)vTkiQH<+*|fU42nQ?O`O^+5!PK zZlNwi91ICSN*cN_O+HfuI@hUi4N0W{U>LS;ghE7wl4qEQoV&V$g(fia1JLAEL@2GK zfQ2N74Wp4JfQ%xAI#?g~n?4R76j{+!FB}*;*#x>vbMRS+GP;Vg;l)N2Fir0FsgQ_% z{>(cMHzYJ6dgC;j;52&86v;y)rX(UJa?v|M-p{+(DL%q)1{nOEKNyDK4ND~b4kUrx zP_Ctm3qQkt>4?f_8q*#YS5_L6u;5Cg;B_njoc8q6X||b z&3L!K6xzHb&}nqXS`wdQ3hQkQJBzN|evIhVTctNiNSdK0vI#V&$q@+w?a$I@0#hmb z@H;e8*&KARX_tqpC^dP<-kQD>~11n@SWMDFYM0FWL zhUG+RG5Ji<DICq{JwsrSO@1>^rqwyZG+&Iln?9FjHgB1N73-eG(+vkip5x zpeZ9Ja)^tx1-F3xu2W7)Qd5_*2;p{G39NG1lnCTj+oW5GVagKgStjD? zbF@^-@nO(61x(Sk%v8>tV!5o+Vz3)ihI>nn*Kii=I&b$C3DI-_MuI{k0&OIKc!xj- zOB36F2oxj;TItYBjA%sE1%a%qv%BD3;B zso`{fgJL6_ECf$`QFJX`Z@dzkLaKrySuz50eSCKqYq4_XXMxtw^xj$G1I6jP1xeO# zeq`_+fl3U82&0wojS-6Fp~x0OSqZ-i7nVNTjyN%uyPLO^z2%ng>C$YZ$>v}r%oD;l z?m{wKc8e#=m(3`6)l!f`R;nwIz_MP(h9rC3g;qj?dCZBjhDPYZ3Tk7;H`72)g(7!l zmhjnz&6SlW-IbgG6PU>=@|sFn%NGTzWAgT21@p;x-@3U&}Z@=Fke(`hWI?11*+pMR?Xo!sP zrN6^VeP_i?l1VRLPH%$?WzEx1&kS#A6k0{Se*bY}tf>4pNyFHm^%|Z1IxfJx+(o!d z|8u#>Xg#M^$n^?xX?rQ1Sh~aeoEJWgF7F#hMjIE$2&{d5?8a+#d`l`F{cA*vgKnEA z*fN zt*=WX9K;IV`ZS~{6~C)w*k7iISZPz|iRgzH$6g>u+XUP>w!>yVdf7H89W+ZCd(~%E z4o4I8W3(d~;Z>g2+CV$H$D>{xMI@7!xeC8{k{HhNt-w|5W3X^sGmI_aybddtt?HX{ z)BR{mGFxYwcN@E4>%Lwq8)Ekxn(l3rb~?wLUX!kUtjc3-DiYG(YT8~BqiDxjIr~kG z7lFN)pkB<`P%~jd6!AVn(>|Pg5D=$tg`~N`gkU29eynsziD2)LH*{4t50Mp%uk_R} zw%^nfamNt3)mxu$c8N*j(y(JlD&aE3^bAz=lvn1kPvoSD6>+ilu+CzO+$VpX8KA}J zVxeery89qQk;myYXkjrRnmcEd;uTv{dV4O|xksaeo1iRR8ycB1!Llv$P9;(8g7{D1H@rA21 zkM{JWXl_w1+Few;u3rNQ0n+Tq_Pp0KfJoW4LQ5n%58}o7+ z>^H~$af_Fn7kN@ucIt<+T7~|VqNZ~^q>=^5v~QuOP&eabSefO^PF~+&Y&+wMRq85k zyMgNFOK@3HiRwRt>1?4w;*@$?ix=wwI!;AfHS5aKLxEvGBlb5qG4Yzg0vPufc!*tyEt ze#*71O2>IpGKavxxkInFS|PUC?6~NFEjhC)Yn1hqU01!-7yMt29S~>C@%zb1ap)8F zwzR$R`L!JH>d$&+1pcwL7Uq~PfT`Klm}#dP+|h214nxweC1I@z;j^Ux$|Wq0kzX;R zH)|!;ewn#Bi#3yhW|}=3Y|B?`MIJFLT~(v_qodVk?|mon6qru#Q&eCgLZ9-D$u66QG*%u%i`sI6%@t&DWFc;>96 z-?r@Ef7vjr6`}odMcyruhfa+;92D~C2n7HT)?8fvoC0xwwX$NsMP}*y>G($D4am zOD7LK^i=CJIrtK!{ms!6W(k`mF<<+4LzXE!cl|zpHTxzz1Z9*?6|EVNW3kxlS}&E@ zuEg1-i`)KCz0J@!+z>mVxAAQPXS*kQb;NkP!++Zl*G4D~-?aOi1Q1QLW}TdBn|pbq z;(p_}Yeghyccx?~@+b7=TNHE7B}>ljhw8N*82dN*sn>qF+b`bYLlO4X-=etHY&J{m zgr97D|I%deb${^t9-Z_DwYUi-?)_qp9g43DHZ}WpQ~S9!yRi}k1z&d*5>Qefzm=)) zK_#Xl-Y$hxY}$@uzD)q9%wP;*AJv+{zX+@1=Ex;A8*SfMSiXoGI=RJN-k6Tb`Obg#qk-dePkq1b znb~~q>B+NMpU1;Esv};DQUtD36qoMw+(T=ax)IIecxKct%k;}UDtz|!vnQu#rBC;M z$?teg9sJ0-@PFKAnyoDOe!=C^pBh`TP;<&(yS&)Cr}#l#3=h9h`Q-Zcf}QG^v*r*{ zaj`e|>PgELH3&_8b;sn_r6R{qyOmAW&ck-I*v{CW9H6i8%fqvtS5kP#ZW2HFs3&>f zp8LQKl%M1KcYTvX|K&<~<>|8Y8gIiZ{vuMt$MFX!mb%-VdI!SQr6W1Z@?uBf!;Mzk zHN)%;t@x>ha00{aXeJ3KWtOS?Mj07Yahj?9@1W}9pVD>9s&1!r_^N@Xhe^RLav`!L($O9$PHED z4P@k6xum7jbyibSxwzkx7fLBl^lGe^=XO*wcxdNo^T~6d7ui>FDLiS&p}Qf{;N`rnex=Vd-zI&nC%c$wvZ%uSIZf=8sKU-FBvm ze@|XyJUy#eP!VF8El}`vyDF=LzYirXb!2$qTB#k6C#O#FqOPhxmU8)IXKney4nBDi zd?IFS;m{UvsuvWX#`RyMt>uXflTP35xtO2O&4 zJ+qla(0}EHSEqLy>_lE@adE@2m^_QQAv{0X; z?>NyM1f z<*81*SX_g3Lq86ZoiZ%gc64^g22Io>!KZQT0*(zKdGNZRL3UYXDJQk!6(!$as%fhT z5OG@Mf#gXN4|%rq4B-+~ed8BRSNf(NpI#X}^S$~MK^3D&7s*F?cF8clZgbg4N0DxYq3+ls)WEmSV%f=pQfS4{cLr=|6DWXWVwCE0i&RrV@J*OQ`~}1+UFR2=u)+gQH2WEyC#2ytYCqnMf?7_|y%lytmG-zXkNt zqHo$j%fmOKc?7*kEw#Z**1=q1M%FWpwL<%efVg|5_gi%M`#E8CkLY5XRs0d(1FlI`b%J?`Foy!S+{6lM z$=>_w29r@@oCH8=?Hu3|RMUKU;rh@deS~2Z3X6%Q5`YQBZ3jTUM5tYBmTU|M)+7gC>|6Vgwdj}gjYycun$JEgeQ z3K7cdi&V-kAkRLPLHx!WZS{l+)1p_7-n0)>lg7$)hflHPGOf(Ac+ya9L5Aq^G~R4* zR?MOdvL3So3AMH~ESw1j=mXKbfkz3TCtzBDl9<&bAgYkT#{X-5@*BT6s+{~}?)}DO z-e(11dh;+PxV=U9zHN1-mZt149Qk=}27udFlgUDeJk2*ouuV;bJ&d*&sw+&Nn zVQI~Q+#l1wvV@7(B$oF)aL~DD7jmkf5;UWytqHM{IQG^EW}zjI zJPqc?sBhEX(2<$(vSWj2#aXEq0G7=Qr6_MTdj%|U-O&4bA!?ZUIbTi4D zH-t-2TW=NhV9+q(Ls}d+nv^29ofpp^ZVh_T^y`8doh$&phJ#G{_0cv?R+M*!uvT1$ zG-L-hYYtzd3ip>ZPs@)a9nBH#Q}R%puN4Stq>S|aPbf=Oi#d7jjF*sVs3txzR~5zM-kr^-_o;1a}SVx6h-liHQPN@S*Q8)Mf&u zMNi{J%FJnGPX~z1HIYqHq)@Xp1925ig7G_(+b@c_=JqWD@y!X*4DwJ2(ID|;7z0SG z83U5Ty_kHe5KQ{IP*UZ*U^dktDj}9WgCk!H9OMH^)-tCsiF*rRxZxl@(_bbp&TcF* zlRMK2DSnX5#Q@yLc7>}4`0^E==@`Y)Mp})ClzdmSXSZg6!DOIlkuR0sXA@9H7o~AL zbre(7j)$0?P{#@n5joC8>GbyEl-l=`+%x0S@%KAu;R2ZbX5=q#Euaje3Qq|wvDNPf z@H#hY6fC&W)mbcX&WX^&(a%NZ`ROKSA}*9~&$a?}L7km6LAYMC7$ng02{Dj-=JLdL z;C?GWW^0g0(Zo9UIuIiph~|T>x>HdzM@)Ahho$dIVSg<}@-*YDe8hbGtzci8z{a51 z%1oFJ#cGoaNN{^t3I#hJg?jcK3WMVXo(YRI$(PVDYBcv1P1gdVo<{}p2y-XvyL><= zFt!f;;XC~o8BzzS;KxU4+h?BX#p_?sp9o8@(3;UM!w4mQN(oDc=)~k>n!ZHBS%LrB z)!2uZ&(fNxA-2y3+#IcYdl3Dhek>w{7IlRegWuB}n=*o)oD;wadBN>io+`G?eXUTe z@a=>O+gSD<8qQi#9kr#o0v4*>cFOxf7&dl=yv6SqlTE5voE z>u1J+?CN_85uO%`GAF%EfV0hLk9vLOm^^4YJ;*10ugLh{nIO5CNRoWq%v^_Hc$+#IunkRPjag?u-#x8)X9-gtc9_$uX04aezHB|i~n}RiqORiSpcVh zAs{1=N{bQ-KFQhBynuX8lN_RG1|D~nwf8!+z&KCn-SG?!`>-0W+hK3JT#&iUx_@yZ zGJEl$ea#A7Tcr%ne$YH5pD72;v5ldt;A^VA`kcNJf$^O{N=3T+~Cx z!1#=%mjZ`k=^~seq|6GVUyBT~+bf;C-vfxOakmdA?!;tZ=qJNrd7@it=o5}b7>NP@ z>E^yRCL@OmQG|v9gY5_sywMl1(VxgY0J|m`h{y|9jOw7oSOz0zI@5)dUMEmPtRs5~24lJwo117jyj^CQp>SAw%Tr7)Ui zo|rdJMiYfcquDXj7ckLNlnRug^JSwi2qSSQBAu>Bjr)}nJC!tJMg#0eQ??Z~t7Jnp z$CB;QnPVbeW{i~+hQH+QD`^|6WS6c^k*;Y}u3J+k<;SS_KAORzk~A}xD5cW0FxH?u zp2^)OC5tJ=KGuYyQWc`2S%_KLsls?S-u-<%uvNLCYCMZYr4whoMHiz2Wjw%ZoMs%Y zf?>S4XyRqU#89UyR_DYxit-eS@-zj;D1}-ch3Y891UkEPA%hy0_~c}j>gtxWP4 zMJUS0hxt*0(tm7o%ogH4U^<2WqfGMeEl>D1$H#y2r>Oi*5&AEzM+5=ezpx(ksSnu1 zxF7eX^SWN+!WE%^vL0$Wm3{$@RveY@eT$Dd^qp4TcbHuTk>{`A+Z^n0MQAklFw3_X{^o_L z-~JSO9sc8e`Z$4yYpVpviK2C)2vy{EtU!%*f+nV%_e_e$9K%kk&SD5-nz8mlaf;c? z1DgyhL5JN;`+ru1{-x!)B`5QD)}wv(Ll~3eGG>%u1u;Gn&*6Si3?<~CI3OqZpd?@i zq0l=!iOHd?XgJiqyzDLNTCQG+qq$_wFsxz`(+TQWX;t~PqS7$$gtb%~)_Y4_*A2cS zsvm|cLjUGZ+47!lTu?XBY5FApFa8ub>)}-rbka_AJaE!+I?VQ?)1bUk6Z`Tv>p`&m zx0Yuw&ygb)fvdpoREiUHB+fpPgqt1mxa`rG6ZKc?^5t zj7O@T{IxMFc+Rrv9zS|ND*xc=xmbODT0b1;R|VnvaepzR zz$KyAO5izg+0ZO1@H14++~^8`+V^n1o&G=D95CR<$?t6r4Y}9@fqf5k*kih!4kpY? z^qI^yZGzrLkY?me^gfnnZx+TWEn3m^9;84#RA7b)&lCd@2I}Ltab+DsUO;_uE*<7s zCpNE*b&a5y3`iSvsml*Wb3-Bt#_-y=`i7Xd%477;3TzyA(QEf<;6H`t zw?SLesprPu5<;x>7VO0aK@oAb?4uI;*EAB^q45nJMxh9#ib*)U=H}w*)a2z%`~2}q zuI_Y9LPja}7=z?&qvi~z_@i#sW0HhX;c`-ENi0aUDWqh@QVD&^>YUq@4fgntkDE#+ zys~k74TYT;q_s*Y>>=GwNz!#06LkwT{!sgptb!+Mf?6NnZ-7u#YDSsWR-9;dfJ}ly zsM+pwGugWo|H69EsIZ4+UQX=X<0uMlbNDJJF`#aL5g_=qHp83RE zdon0kT1WRE3kWQ&&2XY-TTB}ZfpaX1fUDU=va%v3n+Z@^&|C_uZLy9+xeAdEPC3-G z|0fA+PX%GFwE_m=cAR+ z`jD3T=tgQg#Vakcbe3u`Ue_B+J6W|MsX|}cG?;i-*;LXQ4ZU0x&Uj#V5oI&p4QXy{ zqUCUm_gMKfCf`)UsQ$uAg?t(|_gb=|wc5tjeo#peGqRlnS6IH^Bzgh&mE1jsCi2ka zLK9LNC*80{8qfGoQXR-PP!Zpc7i;cGwUGrz&9mzZ3Bt?x)(#eE{GT>wY4q14~R=dOGiP*Gqu}C zI8_(6UcLGeqR+?l19^fnzqTleh?MZ&#aYXrnLF0Fe*;o|#k)_J=y=4F#8^7AFY@nj1P_VOrX zSBN!y($@UxYUUfd-LUM5m~q@uw9)OV-N2BDDWKc?3;>-f$(YfYJFchjQOvH3Xc2`^ zGe*I2l^8W219?FNyc)HNUu=fol|rRhLfdc<;Q4+YwhDN^uYa(vKOhuBYNR=U=7^sWm+OeZFgdK}^+vJ%6|pK09jp@B#LCEAX&K9e{|- zVjg(iSGw`r;r&km{V#1#Dj}Ia1!wSpw)9}`W}y#bnXsq#(819C7Ar2wq7*MBKcb!> zEB|XC>XH!iOPsQxh-r+vJgJGKHtVHXs@&J$owW9R8nkrtuqV42)@eo=X|OzpzdF3( z0bQDPxm|9TD{$Plm-Ejs=ARgb*ACJ_QHuVb4(|g<5}c4Ifnyks&vW7&58)U_#i7gd znnPCQ;_kl*&e%*|ul+5WSos=yQKRHQHPlc{P=GB?v8hn<| zBLX_VMRyLSSVUVmvFpa{k%&eDz8|mE&-r z(~y!CWc=p%>a%$`$Im6}bmyPT_NBiCXD!D+S6xRqeyw@#dCn{OE&4M{$jHD_!ZqZN z)QobCpR!+P{kjfrmem9g2$$z>~ElME0k^Dy|u%9d~~y~?<@_RP6>|t zWthVSCOfE0F8BGKibmzM8#i^*wBPvaY34~cI#;K0uW!iNDU`WZ=WI;qho4Sr>)`dp zZy57xiA&!7r&ROQ!>^5Su19!4b3IbF;8x|_gn++4O8yv`e*8V21$(&OgO6vyF%0;4 zR@E8}5(dMr8OkdZ)jT9(XfK-RsQ`vw9tyLfbQ4Zp5U`yFjk2f@?spBQ(gkA3MC5>y zW<;69X)u?$}a?x}~!_o<*DE(93nQ$glC&$8^xrlYNE`3;qMfgkuh&;P_Ql*Wx$eq$KLoO1kazcCDF9eVC?r3p*2 zKQRotvI$$!i_Dpr5`KrhXh-9Z?|lZpz?bDGwbYZ@R~9BD51TTN{V%dlc^E}!kz#f3 z*=YW!@a}~`giwcAhJb(pLx5pY{J$N6JXS4n|5|we%QMQq?g#$YBk;dF9{-P@Q8M`c z)$v&Ne|7}6sJXOx#2x3Vw0OC+UqyeaeE~lLJAN15qfeRXpT6WymVE;by0+<%)6rFi{^;}O0e_}@vi-Lh|gkZAEzXiv8P=6GcKx59g> zp>6q&{<3qXe)_XNk3ffA-N~FAJ&~=Df)c~!qMKa<^D(qoDYZ`TvF!iAqyL3O`^ORZ zH^<}q&trawi2w5;KtTBanS-o%#GLHG^f1iUjq=C*T-2~U)p9=Lm%U&%A z>u@hW0zOLc&mRH@%W~7dk4WZ)DQlIWHo>WfvJx_q@`}HSK8@EH8y4H~E1UlmeXd1@fjKSXzs&7&+;y>2CLasI*Cey9X-HG5kHtW2fca~o7Mw{eelUAwGngKG! zaf=n3Y}%psVcUxQ$TphE`mFq9y?KIa=ttc;AjGK$g;-UK9*y{WO`idiII!c7=fFPP z@25j(t9N*eBy3qOBjb)Z=g@v*RXFu9;^;osT{FR3%h|(zF_A8)dNEm$8}zZZ?D)G! zg&={i>a-;Bq{D=K2ieOxRiWQG$mJ!oP`%=W4Trn}uNF=JYYuuux~`GE#lfHR+!JAz zGiQMH6U=&lMB9HajULA=5lr<$7`~L$?G?O*av%RC-ryOxWLgKS_b!KJ9RAnr^tKj{ zPudfS2S{d-QBXP_}4dJ&g$8>XX@KJ)JV&5OV=y;!hP_=R1pF!tk{mv(Z zB=s0LNq^k`F-mZi@FmVaKH2HVKXMQ+k)}`GB<|<#FQuKkr~$lyyT9h(^OD0yZ1{*I zOO_;%TXDPt0|D=k91H};m^*`6`ml^ogPeJ2(CFbg_!ORlPVgLT%>yL?pE8MW!gH|y z5T1kc@Ek0J=it-QFhM6=+~*B-6s)%4PgQY&bHQHl9IO|X7can1hYm8GRD`SRs^EoY^%?Ozy0u{!J+;E+kj_P^2f%31#IM5jcG@~-hAQn+HQ%vUwh+YLMj2>QopW0uhvcn z^uQiJTrubQ4HEsPt}WBn{r0}dfL}Y?B&!MUgjmtO0lX^Q3?nOHoC>G5rB|2fQ!NCl zppvElLmIx==m-7zK5o&T{>6gL1)WLxt6lSWu*kOPq9kzUr%6fc^GIWe zKU1Tf)5|~LE-)5lnzu1Oo!uur1>z*EwvSdKUlCb9qp@dB%XOv%m>q+D$r_@OH7aRRA4JD&z)OJKzs z|G1`2WuF8)ohA=44gP>UczLHO39;PAh(LC>tDpsQ<16~t*o1?UziJi*Ue(M+ z8RWULrM$7dO$P{V>#*M!?`)}EAXCGhLM_%{ht(m${JgA);* z1NqN>Q`h%9lI~ZOVt-usOL)^qCv2x?g{J(N>>8veOpW=XcScJDTSnEK9~EfN^1p(g zc&qi8H~gpV6)=0O8R4Fb`YB-!YGqc*Cg&Yp66I^;i#LD5rWoy5y*}4KB4NEjg|y;fWj$JJW%$?%0y+5C(ku_TCNfWDO2XeGQ7uL zPPOhXCX&B0xd2(`N~FjyLr$e((~KzPNLpaR*Sb9o;H$AnoHOYHih`DR{vGnv9`szQ5VUyo!CgSP z&C2ixwKfs7GdHm7@gW$45a1+pZ7YGwltD1&81m+|kVz5#PpmzM5DwYE*{`_U)ZTF4 z?CvY9j#-lIr*9R4VEIU)6q$A(Lr)+j@(B^n95x0S2H)GIEs%VTRHhN$LwY7aZHB!lidJCmUN-#}w*<140R#$g&-7AUh7o?r z$HAPRjRiwE7xFpij9%D)>{aZTOxt{izjU8u2&ZRY_6D_r zr08t;Q%`VS?}27O`$FMKx+eCBs=-9tbgH6C+{DI_IjmjRUg~uNGsAbxCmk!3Ur8&` z6}b0e5-o=PNLyTTdMy;hOzltc^5{jh<`eNHw%)!$N|p=5wvaX%dj_g&8TtW66kQ)` zW?%)CoMx=!Y@_ntggL$CaQY>>XE);=8u36~9B(4iS`F;5d%P;T72ms?N?j;?WM|j( z!$m3Zniv1E($0BHv{Z`~Pfm>4ZS*5=iT4uB>Tfevm^RqCC4r zhtjcNu3VF#_R=hR6?GL1SB6yYOg2tOsv;?fX;r&mKu&|C?~lomgfDwGSPp0Yy~NTl zc;0TN1C=+#YEt=-ECQVRoKHr8EmwHiQkZJC1{8?K>Uu^9^4duGfevR{a1SZ7XTVRC zcd!{>=H3A9d`zS>KWsM)q*)0HH(cUbBtX5yGeS!gI<8@DVJup{BRkMR_&X$?5PLU2 zoO(Xn-FIM~z_T|(*cO(ao5(+Ckj-p$n6A|on1NYuu)WSCkZ6O6q{B>SUunA`UuoJC z(FS?U2AaD0ElY)J^97180hNIQ26gW``au&zFD00Ws)LP8NHi9ifh>lg$8@jx5s)=3 zA>t)Sc>NvKOoAmvzSQd$K8s=?0hCyETa0=bc;$iP2o~`40>uI)g>{Tf`E6ga0Cnw! zCBRXk!W!IAkQsb`Bs`j{3^*N*)UpH=8v&As2}}rRGiY`VqAx`0V}XcOh# zQ_YQZS9MY?jM5Yu-HeThl^xQYFr`G&(~v+i+8`NErF2p&PU}&kw+l>xDJu3`Ztp}S z0}tFlvMLEF!6A_uu1YKmi5V`48N?uxgz}6ex{Tl(*7P=s&e_yB5%Tmm;J}4+AKHxk zL0lgmJS1sm@8z_rOqR+vv^Se%pELp0Mp;r043_p;?U^bijd*WHLFK^gavEU2QT9M4 zxVtTDjFj~efjy}K(~}kr;Fb;R#Q<1@jW4Iw_VbexvZ){wFL9ePz}|qI>PYMAfRN0b zsz^XC1M&Pjz`-bZmEZ$*J_3aW{4cgzVeY*Hh@6o4qdO^MxKg*$2b?|x=d%wlXOVGM zkSRcD58iJ)`vK%dc`#RLCyRXlO&SRnqNW+3$p$~H4gqr(!7(x0vkw{00mAYM&Y5$o z-;h?86LTBWYmwyRd}Jib&qwMjv;*bwuH?H)7vQ*|VDn%QyXAUoA==gJ8OS9N@e~du zJ`W@z)_9FYY)h;iRp_CWYd4#VnU6{?6OXf5Ohk)>W$^)H1&Edh)H}s<@d4d15);e- z3AhoQ6D@PffZv#jd1+LNrIc*eTCOVqB1>yvLC?X?XeD~gCvp{aF2q_VX z$Ra>%UeuEyWc3wDm&7t>4A{s5e4Cs;ghd=|4Dwsz0=Pw`BeKS7;%1NqQXqz7ot4HH zloQQXz0u)+ieOaT8$4bClu@)wIE-yG0+sKQp+i9$c|ciKMB=~?ih01cWT5{BnANyc z0*KIli-$`_yc7kt2rftJV>?09>HL}>}6ZL;9@7zjltq4ECdS7V4X1Iw7`f2E;mrGP>PVwkhP_QacBzy+$t!} zYH$Jz91spJc|l5$1MFM&_kZ-6X};}*M>FANaQ9x zu}Yeeg=-cGPR|3^VP;v?la7oR_k+92VNck$Oh8P$Y(y16m_wdjeuqyYc3U2Bn1%=# zl=F2wMXCZH%c5K5k0SvK z!8%wLfZ^VOrxZO>>_p1#KsNRPpEIsB)&XD>SqO-Fxi^;r+^vmG%%sh5&krC+DUoL< zCVxdbeL7@LF>JXugvmQ>i!+RNKIBA48#qp)Pe;8~2jOU9UYWI54QBI-0c^da{eqxi zqYd8XWpQV3M&MQTS_8D=kGzK2+68S1WLtvi`=PW*e!-RwWZF zD7A{%Lfdqf%{l1%HEy>w9NAgA69BNJC!I5Z{sh3Zl-9EAEUW==4#K50izGqR9$XNG z3tI{NL1|0CZe+k2j2JYNKs1y+5ZsTQxiy9rsKY%rXL*Nrzl}}bz&s;0EK3<6dOr`7 z8b+BN;@~JUa$8v3!u~X<5f6zHk`Nu488SM5D794+%b3Fz^*0x zV=n8a&p}6}@`OwI#l zKNrQ$A_Zb&{ls%qnM-x%7(rNziREJlED+?dW#iAn`T6JCl)YQB^pLsFQfws*>}deN zv|%|ubHobtI!i|_Kyw3Chz9vl7g|CNgB~~E zHISqjX)!sH#+N7Fx33d|(K$!A6}b1B7AMxV1xq?y0BD(w&_HbQodPs=J`U6-!ZLx; z-Eql$Vs(!&0tn@uEuV$1PfzE=rcwRRr)SJ1MYkC7r5)$1k>Dlk1xGdKmT=7{$#4itCMY!IlO+hWUQAIOL68S zxk{;UpYcNZfIGSgKBHkU4S$a4+owA#pN__u&<+^0Z$5oDYIOJnCSe2`EKT?o|d38$%OSnx80oTNDK3;|r#(EqkC%=L_J< z-o~FShD7=qf|nEvW`ku<9_isy=x|6SQVRwBzRab|2G+$RGW}ux?gkw0l3a~#kzv%t zBzRUc|DUr*>~qttsPgrjZAO;Fm8zciJ{`xX_Dbfn;CuG zK(C`8)X&D~Txs~Q4(%&NRy^t|MM758X_jyb*a;V@e#2ey+T*>rGMDTTLH#=R;vgMe zw>Ed%JFGz>EAeQdf)GSkx@_wOw~-RoZMe@^=};a_63lvun*lv9^-{(++9@_h8@Yd&v&+1Qgk3DS}6I?5$c*7*r?SRmh&h#Y}V_S_>6>lD{r zHp_b=X9||0^mcI!W*Dop&jD2c2_>||*OK)GQvjATi*`0^^+J&%b*!Rx5FtQsUcrr( zSNFXs*}iU&<>A~+D1T}bjiHHI)4aAsF_D3Z*q2LM0nDKBX-4{+v8>#|#86F6%J&XW zk#n-2toZKt@oHqb${eTF^z!5%D50&PKr0N33A7L;%M{0^ z)`Hj4qKZ6jT=*i)Do-Hu`JQK2pyv??vPSu-#EZ-MFJjCb46z)>ytmlwwkq?0&D#Aj zGzD~StvzW`-iI(xK1ar#K*9l4T4WyE2;1mu_Wia1;pDQdK=HR27SRvJP~up0e6hmT zH-Z@49XwkKG?dqr0Lwsl}gp zADa8iT}e?`DQNppDgcgS(GA2-(NT?0eg)DAl{E*F89<#y@XpEBJ`uN9-v#6?(cLXH z?L4JhhvgU0QnzSYcmy%*Km4LW{UPLgH*zXFhb#0jKpCh4)o4~ou%ZbQ`aG&*Nl4dm zk%Hq3#!QDvBA~Pf<>Assef-etDO7Wwi26*uAAjbZ9w=a<)`_@KZ3km6txgz4u#f-) z_Lv_N7$Tz~i)=2-K0<+rHu6rN97Ax$qE_Woi2HhlBApjYLWgIiH8Y}C^Lv5DP$@U- zdB^Y!-7?nX@*jC4=d$RUNuVRJa7)$qi0Li3#yl{@P3ekIVN(oXj;^st?_>dwklu-dEC6wpk);4TL z2Wjy)^$bV^BVvLq$^HWHP4wj*=`l!$2AYlw8=@sMo;!Wf0v_#_c?mChKQn@e2lMAd zTjdEDL&D3(;`gle+I(H*ljNiyZ9VAhL==*kZOOLf`&!AlLvPd@S;oCii%J&`y)_b{ z^voB7c9L5C1J7=C@|d3JprX2Cy?M0CLbkD&wO-Q9>Fia!RaH{x4}D+EuFITu4>E(a zO$2E=u)ngxm8A8Vs{@1(FbQB_kS7g{k!<@n@j*#Kc*8PrQLqeR9Ha-8fZZwIO2Sm4 z@X0**f?bDm#N`xqk0QG{z<7uhYu#_x#!NCQ(yuq4yaw_;E-?Rq9 z>GP@NiQHp;B_5;oCs1}d835Bci=++D298pA!KX&teAuH0W~7#+tY1D=B9G?lGZg5- zs!O)TF>fG!gSX`F2?EN?go-RY#K5dkuoF;39$xzo|_f= zG?6 zcAEYPWVL&e3(jt}-m39KWOwXZgV|B6HK@U$*O*Q3&eb4M{ zitw?XG4gnz;^*W~&Wn;>zns4-n=JowRwDSy0dyySALlk9*cp7o>%vEf2J3hTcK|5^ zt6uur*;+Mn+dbrkjk1hCf>~TF0n_1PEL&_1+(SPig$(idza1~PMv0!ddA+v!>{YS{ z^>9beP09WyS2dqE$X}B6Jex+S0N)H@VK*dmmP3oDu%8H*NI3CeU#z@MYGKhOC7|K$ z71WA)D2da>#_VX@-KL}Y@v6q;=;(R4;!@YspH&9u(Jxw3;4i~oH`h|?J?6Db8PA=T z?V0^hJV#B8>-d$NOL6L1wb6yXu2Dw)s6t@iCjnUZf-2<7aHji#%pQJ?**&|++Vk71 zkN(v;-G5QoLU5oK;IklULs)L-Z_grqvM9;8RBv$4)2e(Ixe>%LtqzOGb%WhG7+5aA z>;=cY@b0OCA5Vu6niZoY{kA{k=FGN0Yf+J~LiTfSlRi9c@yoxMntm$Wz5Z5`w)ufN z{rSTPf~E9Epx+sC`2At2osi$9*Fq^wNu@L(M*mAdX+%$0h9ts01Fdo;k`or9YA-f@ z);pbMD#JKbQw$_)DN#|$K*jj6XsMkHDeOT`X7BI>0+uwBs4Zk%Jk^MAcfA^iPXkG$ z16ZXcm88MqPYPYdG?MzB=Jy2~O2=&UkZmVqUibLS_2s_nUf<}Wp(rCah2(1X2bD=N zGo*EA_2<6(f7pA=s4DlaZyV|61Qtk3HwZ|Fq;z*nH%KWUCB5iwP`W|7MLMM$6zN9k zmh~>S?tSem_I+R1^WM)G?>ol*SwA?2W6g8U|D3<$5M$~tOor)X_CjVRL1u^mo9%T1 zRiW(E;$fF!i6XcVK{0WpfnWodt~li`Uu5wxBSAiDEavQ1K|5sreQ_mKVi9@q@XD?b zwoXy`ZmO%U_;yA?_3p9dY#O+aGx3P~0o^Zf3rqRLYuZJlPoRILuu24T^sw6}E;tqK znZ_ylUQ4jtdJLo9v&|R@MR^f9PBd{>a4&!~9@n#>+;->k>^Vs??uYpphzHUaFjau0_J_9de{qz z1{#t9P8{soW@cL>a*4$F-SV=82$z_7!Hv_;tmm$rc zz!&5_^`B7SaZo^4AE=eVjQycxV}*F+p>Owx!nWH|FWYF);ljt@!p7jzNx+?EpU$jg z&%#4OmOq8W4COD256h!D-3~f4D}?dNhDq0q>%rskDNN^q9oW*#NLY@G1@rua7p&l4 z#$ZD-G8DobDa<^Dvfzdle+V*QbAXj`-UV}vU6G*8cvZb4e~*}1Ps>?zeT_87guK2# z#!wS_-a2YrrTi@;v?p)Wjvg2HO9WEB5^SbYE$k@am+{>GV4@8b+z&*r*?MmF5!>KZ zA9>?6-eP-eV^7FZkx#QBg<~7C!F9!f7sbJRjjDJm4eLe~^oe0x?x8W4qXZNae#?&` zZgSY(U0@m-l#>1l#C%!OohZZ=bVh$mkAh_X2 z<0@xGk8C*9-8`d{8^^y1BG{)*&_{+QB&Y{iAvqbTgx(fdFit_=!{#%_4I?HPslnzC zR1uy{&X>JQPx29F( zj1>)7T>)9AsMP-uL5D>lMS^!+1R<>y%N ziXMs4FVdFrot3i|&ze>c>hx=cYzmI}H!R59?5Nz?v`>r+irz%N*1+XuM{VZShB(E{ z@)XZHFF$e52SUto-SLRsNcj=)z%k$grFhcmj$-DqA0Bcqf+z zRi%qm2F=lEXH&XhH~2O#RLw2Oh&^&$iF0epzly0+(?FhU#2k4OTyGWHyRDP=1~ITs zZ zaE9HC5&D+vGivCfGw`|38>#JwR$KX^*v4X)!RHk7aCY2~)(!N*52)h?$dIL#GKy=t z3_NfnU$ll0%GwzEut-Ff1h~-yajh}jRC?)YK*?}^^mw~rk^sWiEzdkh;w)+?%WYo6A&KqO+>ao`N5VBihTbqQTZr{ocJ0^5eQau%qCWeXvPj6ut9j9 z!aPJltY?Lw@+KU;g(#ZBNUt(TjdwZlHl#5%FfzsH`>?P$nJ7mi%d5|@3o zofU^w(M&rFGL=^<&#P$K++LhO#F01ROApE|-5Ug0!6LNlp#(L3o`_HJ!6KUL&&ZHl zBi917o0jd+Gd{7|ctyWn&wOW#D`0{A)W@u>A5k?4`ln`Nj2n~c<~A(mfkqpePuB@i z*QE+H#mLNbSVNV2H@FVWlcz$J9ng6dOMLs;#{3P&pzF8QB%|U22lq`uzfG%x3d@mT z)Hn;<`c1L}M1jpsF7IeN2Xoc8EH5m;j!9w8h<$cp7J}ItEo&ApG&kH|ZG6<&a6G4V zueVHaw+M*gSXQX*{gACH1eVtL{H9>0)1?8mGoILamcsEdH) z%Zl-e8#(yg$~Sm37uX4i*$jMRY0Zk^DY^4%WXe*LcEo=ty0;+p?d(gRodiQmSOv?_ zB&*#L>%K22x433DtTsM~eX8a2ISk+`5$(JgZE5da;$iikm$Y9)chj)7gZkAg6nA~k zXg6SO?T=}B)aaTh;vd*DW*+XAj!ac6+D6MGm$YTSpV5x?DTsmn3_&T(Yl$id2RA(c zVm9KNF!x$EZJG_&YVgym6zO^~ZR-(>dxNJe;>I8B5i>C_j|FVS?pRami1yJDebf=-t0U%jM=XdV5KS#)lE`H<2KNF_#-qP2BN6#M zS#`LojKl5i%7N+Wzn6Y@s*o zx7#BIE$>7Y4@hKdi+XN(RR*$9Gs)wZm z{Y)0le(@Q$Un_Wc?{C;45FhV}OenPd=MB4O@%GZtyLZVa-!D&3_P&mO{0KR_#GX;$ zAu=~La)Qt_J`zIbo?90EE*@&KQZ!lFCg8R~I_` zIMH5t`Mga`g}OrM-g_qUA9Y5K1jV)u;Nr0g=%X*B+UHJ2e({9?nu0(U)(V z4;sQ0(EiD(_FK;OZ%(z_^F{gq_y?_TEAQ|HV`1 zEKKC4k7rF55;6Vs1s;1W3#Dfxvxbp7xcV7ID@h9GL&9{%0TL&eRYxV+Y01}-AoHO? zyqDy_3*6$E>KF6es%A!9$egfMBK>kGhD`%rvAmGh=2K{lCz6o|+ey5B4jSXB*N!Xu zBgQjpfAM8cC^s=y9}O~fG2`QF=46R{XRrQz33IAp1&Q6TVhtB6d0FMfaEMut!!>hS zJwQ1bU&8Ycdbn*PR*|rcgJ;Rkny6;R>t8=im#{%(+}k9A%$j&3^^!>9sIo;(0?V(* zK49`YC_Bonv*Gdg)~-H5NIlcUN88uWgtR`g(k(ERz5G4K^DAfDGyDGg-3`gi6Steg zUooC3^6Q!*UkD63^n6(wYEwCUgM1(3;VnU7JM>dyhdUrAVA@b|)JSj6LgYbC-gHt{ zKfNI@5_G3c4+UtcIn@q7ab)8LhcNYb$)T&g!T>o18&ixYpdoQ}MJy|m=K#`(5I1m~ zmAXIpqb|ap=BYR~Yb>LzL{9iy-b8xY*k|eqVR)mn-AvBAOor&Duh);-Si_DYh||c4 zW_h0yL*tIxgd-tsQf0z|%%FKu%rC3PQb80L6twbskBDc&{M5HVE^AaIkGcAviOI%B zC8$$T&C^S({<5k3cD^ijbeZ?Z`LcXIqn35$T-9$e9!XtoJYs}6@&;ykR`UTl1;kuD zi+!53JIY@%o&t^`%TROvlgL>20?xHONhu6d>f7y=AIxATACPi7TUakA0<7XQ1DA|P zY1I4yW&PPNG5dz(ty0!V_PwOA1= zKP>Ya^uqPlTAc72I|%ixhzA1>=PGoH>2+?gbR?PjWKCzWkCZ(94r!FG6PFj|M2SBN zt#&G|N&@(0nd1uW?>3bWPBi*ky0Yn{2^Ha2scbpHKW!=o=G?Cc=Q=SNNsiHV6e(!K zJ%Q;;4@%}V_gEqI1rv0MvB@Ovl4)F0(<;YL`@%lGvwQ8RunBMnq^6K(0+=- zR4#S4aUzMeu=>D$Wn%h^PXQqdLx=;*alCKB8MQaVH@WVP&r>!MjTAE9oRBCJb}YJ^ z+cXMH`zE3+(Hkho+8t!N$LEul8E8U#q)~^4V!tn~^VWE)0Y^Bf#hqq2=Nd9TYLwww zC4mnMd4qI?Ii9moa6}`nyp=vrPcHce5baN^xrp-`2RJH_d~y7y&$v&9*+54O=UkZ) zi1wvFmVhEb4n6eCP#WGxOQ(!#8Z-Z6GNP6(rqy!Qe?C&D|LaUD{b9;IG=eOksA}z5 z6q$fOda4ukKs1(8l6)~vepeDJac8ZSs`+p{$YnQzpsaB8tv~=O>EAwP{~8*h^~DeR zG5ZCL*qh4KYdDx2%uIh$@x|BeWa2kyMDWJlOXANg3@aV}*oZenKLw$l`Gv38ryJvb z2C~FHf#6(T){hY?kNy_O(lx37n74;0d7)G*QiVRW;_y=tN^#A!pjdn0zmigt3c5Ft zjE!Q_>E1rF_cxj66(ajBkQJ{8d8C_3Uh2116?7lS@+?~mN`mkleE4y5c~F`np762# zQq)iKxzD|U#BmgvI?G5jFnG!z>0S_;Mnf5(JVwxMpiG=oI4zlZCA9*kHhHNe)+)G( z$@4K^8~QQZ)OzkMcTl4j0fk1a8FJF%De?^*&_e@RB{Rmc(zM0Ynhq>GP(djF1*YG3 zbv|?D1g?aQK)p?~jpXm%9_H!>uQWztRn7?R)nM~@Zyb6V=*;fg`TklEniFx&pr}Q@ zq-Bwtu&~vq@vtPnQ~d&d6Uizx!%CS69{X6CII)2LVF}#uc)xHc8-xo{!sS!*7zP1O zw;YCasB@Tz1t9TE{OK)RkXQj`_nv4EzB+RSyy%S*ZZv9lNy%Ie9)bC+b2UJK%XJh@ z4?*7>tLo*R%2Hgq%MBJ;D3;S}++zqj6xl z(qqaYwdn`l`o^@MKAb92qlqsUNFR!$@Vo9b^IdVod_bFzQx>Rk$k-9>3$DfuM2l_i z5vd|daA|^*xh3imLHeQICKJnaIxbCDe)=nm^UFYTHmz+5HIP8FICUilf%lozNoI|C ztME*X1?%_2ujU;-3cdR59P*=1Gv4{x{1W64a=^3XjdaKJRR@FhawX`IgZq*iO9k(; z?^l+q^#m=4tBn*(pTwe9Hs7wgGksaFxAT%6pwNgyR+6-mhHrF2InAsBSyiJBEpJcR zd|I+NC8lnKKa2vghb<4kk{&5kwZn=I;hx^;HrwJiA0=|X2aZt{Q~->bhf`h`uq&}< zr*H%E8XqC@O5UN&S>#Z8NhoAGMS@GTwiYS&dbC=V?>2^an^C%&pp%VMxm#HHrmtZlZuEORvd5Aqa<5y+?kG$6vt!60@LoJ-VWxDYEP zAB|Mi;Hc^{c4`&!%WyC_ty;uN!iK^lS3=B?3xtnq=4Yp$gq6#ivnA6VMfYY|!)yjj zjw4~>ik?S~B-1ZObnJY(y-e}YI?Hn^DmI2>h^j?ZVCLEV$86m~v3tN*o`WuPKTqUo z@xV_t81!QX&Eovbq>2}0lc^3KC-GO&u(~xpG&nv^wmmYJP>l@>SobIIhA-ggP?b01 zFncr&Vi2z$k1SNpV+$b!t79J*IfHXaP~b~>tE)7? zUUiHc+rcz0CewZ(NfJjqY1p-}giew?U2{CJ0ZLpXIXglr>`{qmGh=Lx;(EE4$CP1% z*sOoibeXAl0`ECdN-d6Am92rao*RzpU`j39Jo0=GvKVfO{wFgy56OP@f|wqBvszf= z1C5dXnH)&OOx#1$T@hznf=p1bK#>Nr9afyk0;5EOFG|I8{dDpTR%-DsJg{o!VvJ2w zQ4=}^k%WUDXqKb91r8-by(har=+d;Nv&sgu0W^UtYQ?*ufOZuZrtg7?Wp^$ri(rnb5k2CWL2o_8ixl;=3xMsQ!24>iUEyc}4&l&%Z}`Nj2%iVJdZlwR5^PJ8 zQ7VM;nsL{S%2#^%nLH*hELK`vV6E4YC(BNCs9<6r!^YaIu3l zsaaxp)vhN}Mhb$BudUR?;7o9@j0$Q{SPa>i#}HMheA~8#$0K!^(j{dJ*^4dx=|v+^ zt&_SV_VUE2Y-W-ZSV|&ItTpgVxqSOwL+UI7rrp;VZb;8^(u876)#w){de>{R{p}<1 z(^Zz~!F4qX-<(f+&At{)H4c9udsd1{xNnFh#Ur`n(AN^P*cKM?+=Ch0#UA!q+M1}@ zO#(Ki+4Ix3#g?b%KrRalT&c1`+q>gUKfvEiOJ+4yZtF0=Jd3Y{S1vbO3?W!!#PA!$ z0jx;H=j0#Q$~-E4rRatI$X`tnl(nRbN{OA3tVU!^Xn!T*)wW5x_AGVnP`2FDCfxPw z%}$cswP}(9Wr=|Gy3)s?7_+Bm9oj-7Hl;)Raij^t(wXE_5nMDF9GOSmQiV2dU@B5; zpjj>OTh8%D=tA3ZNjK{^w4D|)cr44Z*i7b3T>j^)lQb<_{49ju^p?<8u{xD#DHW5Y z_rI;o2MSip*+)r#eS*d5OisP3#_p*I^AS&l3Vsis;)9Bfl;Kc%&$(#F2hp6Z%b+>Q z3)Lq-l*Rh6{E$CVG#d4D5l#9%DCt0QV$ckO7*{_h?ABLK6*!c_BT!X0!yH$^Ce2`6Yd!hw;NEvAyQqaHq!tgN?}tr((dxmqwoNWg;dSC z{_iNTE8OrEQWOS4K*z~kP4NQJD_8)>bDbi2Eqc(+E3SoP!bTo4Wp^1zqEg73;}i$Js|-Npnnd?T#~dU;o8)PqKby{kB2UIpmj-t^za$V8gM7sZ8HuT zS8>8{MByn{Db>JXG96*q*s3+##N;NQ0C;r?`Ip)2zoyUd^~K+MTMaeR&tHPZ z$$^P>7dUpZFW}dRPBBO;7}Qr-0dHalr{Z>=04D_4=ZNw1kcl`7J|Lt4moXKuH8@`N z2|BW$e=z|_LJG7-pCC_2BIog_V+>V;S3p8VSG5T396dr1+h4*Ar~D<`|L@^p^{=I$?U68uK}4?G04B2z+DDUX@|_o zo!V#uAa$itJ5E7zB8kxlXiC08#ehJ(_WrpAitFDsUuF^$u(_0u4Tv0My)ia8zGJ2abJ{8js zUM1%^rvy&G4Hrk3Yyn+5ndnpL96DYwgb8nJ;^iUi4)s^Aq^b0etU)JvnIbyC@__7K zXiP1FXE6ub{tm&G$Gd>;*lQ0N)5Lc_WTckerG*CG)~mc#zyD{&szfU@210FV4gAv2&Vy}*U5f-0#ads%ylvmk+{NZK#3?zJ}vh_ zNfNtyzUD$cd$%g@c7Cr~SZ;i#JOzeAYDlA50kTe>$)JdwjjY{ufh#}1*@CRgLbPrP z*8~je3(9xgmbnT~@&P9dAAW4ECct9>41o|DHhJ)PUl+pYSosff23`Zfve=;|K)5Ve z^{nVQZt=?!+}@3X`1oQlBPeqLEHucK!(Sp%m6H%qf>TwDQdNRNUz&PSg6UK&(UDC% zQ=%tc`hgLs4+9!eUrLB$B{K50E&y%(UIYWi#o}dSHf1Gg$#s)uF|UiTu*=0%-cHOb z8qt*LnwFy<<@PnlDRz_-<{PvEIZ7vGJ7MB%))fj=@ko9ZXxSC>3kkglWwP;Qm@DO# z{15l=X+9kKAQ5|F*h*vC2=>iZt_=csdtC1eGPwpp;?neqS)~w|7dRaViWG0fJgQKf zP(O`V1#zHA%7CV%tzLS7&&`Wk^#GOM&*ttlqSx-fj_O zvsiD4Tj(gjKblqRBFB&Ox}kvz9lNxl2-n(&Nq|@m_(s$iKUoy4Cn%NPn0Qhjanl%6 z3L0h8Kdo$x^=wL61bOKJLFrA}Y87wg_{-aavh|t^Je!Nsn@d`n%NCm}Zkj8JTdD(aU)#qNsScF2AlGL+xxwkxHaw zE)B_UM{6ZVZ53f7hE%by=k!C!(HNZBjXcb|rSvK4rEb@R%1smts`g?%Q;cEV{)i6a+px4?)QLH(Vrx3OEuzp^)cr z6vzYBmF(ozgE{TG< zNnc)}$>_gZIreU>1ovfDY zw4)iv0f>g?8j)%o4WP%RLwcYocmR;X6Mbo)3=y4@@YWGjn3Ou06fd9RQ_$Bq8&w&e zQWTm}z|hjPpOUqoepUBe;=_cnw^rPOg&ETyQ~ciPdYMz&KPEZtryrBf zimFV;B~I%nPUDo%5`CG(jGfXSuhUe~fykvgTg|y>>o~d3oxV)hMVL3YuaXps0{-leQ-h&xJ;Ir2qIBNov^i z0k_m(zJ7QiFA`|CmV*G6#`zd(|)V}D8=*f6z&Va@dY>b^MH59U}Wlk>BG-x zUvy+Zpm+vgMF`|E*(OCtuIu*Y&hs;N2R}7IN3r+fN75ioIkKDsKg^ZUEsVt@md{w( zOR_7C6lL^Z1ec3dml31rk;&xp=gt32dU*f?5913<{@1Td|F|k)M3>^o_($SdO~G*b zzr_9g&>1mn%Kv>;lBj@?);d^MI{V(Ji{mBZuh%8>l$U?MD*5HN{cTn9%Wr#+BsFas zxqIewFP`s-fBXmThsl0c@g7MU!XY=@{F~o)sMqtwz2BDjdg$lt(jQ3D-~G0~5zo9` z-tNxT6joqgLLWne6Ja12G?f^=e6S7b=o4eDqFh+nZ{EE)14*AThE4?@C$vEzn4$q> z_kP>|bMgGOTQo1%ru(A6>Gn32ozNXUwaxcdXoB?zY4N(H3@h|?3HGXEKweZ#$2i_< z2PWV|3M!ue9Z4#QR!%*^IHXuNX8}c$2EU>LxIZr}(2I=*?(H@rcnsl1F`9Q( zXwTo`zE?SE1HEY7C0ajd={05mK1xlO#>Q?FQDZ(9-asR2S6S&ll*GUAK~!{qL_!mJ(dz-+s)$%yxL{S`d01Q9e0qb5A@= zH-Li@&mPjd%`(oGUo3fDKn^axzCmKWTpr*Oy<7p)Ra~w{@O4>a01MOV-DV z{YR=hePk~@zAkjBe|VVe<$w<|liWA?vb69L`+(K@gj>cy1&KY(x$&&w=_A?;o|j7{ z*Haggqc`g=kv}*P?&gob-uf;Z_pse&p4A5v1F`nq=FsY(a2eo{d*l@`aQ6enLQf)|~j zjWK4Ez#|An6or7by0CYkr|PF*NLWe=)!kY!96KqlhHF(ocL2p&N)CQQ5e@-ncep;3 z^wM#O#SwNSCL>7Y_o+w{C%-E4&e+sBOr1I~VJ#{*9=wg5!*PO<7bSU|t8ysaFNUM4 z^P&~w7Qa}8mr)`r>Q~>j&+XVrzHJ+wP_H*5MUrBaYWK;`RLdq>ka0o9^RhxY)o107Q1Sehtd_(| zZH4=Aso|f+^Kx^YMCX-Yh5cs>?Q^~SKgIKOa`S__=hZ30WfnX`^CPd%YqEOwg$d*u zCcwGEA!f-x23IsA=9DPXP0K~DT^4*H%T9GlDvxZ3s=5=HV>#dBfv*>g^G2qV$S=@X zrM_KaZD0mARnuUIDGn_LtXDOJ4O=t;6PQ-5Xhc2s-$b(f^n<$h2q{lkTlxinS1+|1 zAvnmKQz5w*VOp*GYRP(AOkdA&0zVwv9|*VW0e6^}A3G5o{UCZoH+QigziJ={?#UUR zFTC%>palnT*)88BZIZ&^BL%b5uEK>7bf5(jt6{97RiWhJ6(074p_z09DG%eb-^FVp zIIsCv4*O$=r)Yh&=+L}%=tHHb_I8f|j2$}%Ale+F1=QyCnPP*mSMlEZ%rPWSJjj)O zj)i@a&HZDVdVQ;dwBm2E>P0;u@TpHkqXc7!AOS;io5#xao*W1Q z>xKv(lHAA&2?wmN4YhuR<{;#3JF{FrO8kbx$!%{{x!(6{tbtonnkneh4?JRf&`Ri?e|FZfF4S~ zf9|cQt3S*CCf-LhJB9DoekSB#`LShwQxf$RpR@36*sSreJ#Y8(xX+;?w{^JR`#Y(e zkB-~Ijmf13`Y>K4M4d3Lap*KPc7G@S8v77_|nMThBVJ5+`*oBjielT^!tSr|%nT zK=bEr0|we{y!p#+gD@%lAG?jPTLOo?fxqXg7Eh4=x!dpzL;LS`Sw9am{!0LQtoJIp}Q=&>AAQEADUk#Kjn9r&slH2 z_)dG`1<8Q>Z{UKjKTs`0yNyds1w>k2a(`6Xexm?{r^qY*PZS6!-Z0It$19NBO|FFS z_|fNtP{i??gm7kBQHC;96q$sRo7@A?XROxl0qFk~TyW|BK0<|XBhg34Iwnc`6<;#t zZ*V~=8;+P%vjUyxMmF_3o9T|d3|oK4mD}0+9e{4L{V%w3JNbGBl_-Bc%t-phS1l>~ z#g+S~Zo^!>cv?ZM<0Lqd8Kk6fY@2b#Govc6G59O;K>(am9KOQo!LqEwZ%n*1Iv$52g zJIsI4?=m`gv=%caawBzGb}Ie)R7@^B%{5QK#awb+UCVxVQq!`$u42s&%2(xhi2>bZ zPe&=WQCwC)yv^t_(WWvNPtB#Oq4YBdhjN2EQrlZW|A!7xsmh}Y_vO%w z>kyGn_!?gCVT^^#^^`*9C*p}_->!x>Z(R?z_A%t{cUcv$V`a+TZg1>`4$b>j%zne! zuTOs&l7}==q0I;7$_cu!mjwwZE|(yEJBF}*7gW8F@KrjQGR?g4n7Q$2l@xydi!0~W z7JYx1(UsV`v*U{~D23Ayt;|me5Dt1yZ@vDH49j zQyB16$b?8yX8xdB3`A&f1ue`hfFuC}S=@>ME7&ZM+7$y;jh+D4-z?|{juf}NI4wbS zsuNc;*U8K7-A!Iw*SP*flZi)p2FeyV0Hk2zzI`KZVZ2l3bke7i$^(ZW=ni9W( zK6jPkAMw9!85 z@{iz92t^F3Edx1+$Z?yJ``9^HCfv=8qW}<M1%Vjol*+YANdu^@S`YHuqnT~^Oxi;I??|^~u1$QD#5> z<50KOcYptOKhzDSJV<6rZo2nOh=-H?;hFe-sC%o>azE5TxpwzMUFRy!53;|&SpVUf zfHGVmzcE~o481Zw%KY{Z~61zhkWb@&4^UEVC&Vf8aYU<}i$NVQEK%3&YeHL;L9K8I9UFA!ob7 zqqn%WMPdlj%G`*1+#YhN4=!J%+)fTt;EOS z8JrvdHkDjqzz4b(_d${RT055)x1Y;SI{Ciu*K`PZ?uLl;)n2=}dS(%xj>~Tm%Sxn0}| zHO%+?5VH78l!^LlsEZ96zFdoua+vxYEXR5{NtS8LXExCvc(v*E4DPjEPV{dl0~Oc1 zWzqRpjjJ}=C^GLG40R9cFSu@`8@I@Gzqf7GwMe%kebqVYo#pb9?x%a9b28FbCnyb- zP3WA>G;sZpnzQ__eX&$n=e@aNiRg1>5&3oeYP;ck+jQnf;Z&aE*>|)*&bO3k@2)T2 z8wg6RJgW8D_!x+Cr~}Wu+<{rtj;I>yhba%$w-!A_Rvlx*ZCy5CF6!to1E@N8vov|> z#oE0p1Dz-+P__Cq%qtIr*jyt#pSp^9p|A$?e#*vl>+fnJC=XFX`O`^k3ye989gG~b zBtTy}{vPWr?zc+zpPj^h9;o@Vdgd?4_CMcw{(GXYYh*3PpZ=vVPyqEC*yX<{UjO2F z*U)ZO@&8`&a_Dvl-2aOgsXrI5zXDL(c6~P)daH2r<=y_&)`RZc5)#k!T(bL>i?j45t?#?L)EnTAb@UE7RS?*JT^rNet;9gwo9jT z2ZFa2edD}QlpFu&7pam+u8fl15+|~*-O|e5Ukv`=U!-s}l-{=^rmvHC{!zR>aqmHk zmn74{KNhd$V5WaM-Yp!5``-Gu;@qH(s>ETW;7i!<`TeQo}K*u!TMSlztdh zj@~`gMevbc3ECriP4<$7FgweU|7_5nREK&b>KqTU^?9k#aLn4B4D)W4os0-xlz&o|k=LfhzU$X}6~l_2CRLthHwPsLBc8@h zkRLbhZCH=B4@vM|+*%Dj{{HZonCmz8@Z*W)nbKhQ^Uv>_y)TyIue~qVPo&RO*2L4T zuM`R)``7!A4t#D;zw-J1cvl?hYj*K{H1+PzMIHj1LI{K7$POo%WsY7X(oJ3I2e`&^ zQc8EAehYD6>eOvt$NQ6GqZ#HAjOv4=KYrhb?;0f#?xDMt*0CYO!jY+|0M=~0JlK}i|ApiRsoYo7A z22Y{A><`Ci6%&9i34TO|^IL!dm3}}Z#O!}m0`PCwVE&g>DZCIE#;A9X$!Z9)0FN9(K%jG<|Lx?F&f1p$&!CGkoN%!hCvZ1|Gff5;a|+@y79uz=ev6`zPF6~e`+BA z?HauLQt79t>}L&r?WO>o(}$+o?hw5a**0OB4?8qJP*rq1eG8q_X^-z4$UbT(=$!5~ z(bIHIF~%NjgT6{;>dXw~ze|B+2ALb6b2?iel>g4DG$TIjoW{JL$9sXEF!J<0jr7=e zkiF};6|BKz%gu+qQ(+}3A&`(dG2P2Cc#a?W69g1tzdR^n$MW|c6d}S%!_wj7K@x;L zZtICp@E4zBo&_{`z5d?#`&JdUt7PAvWAd;^F3#POIyq;BROs#$JmhYcDk^l)-K#*Ve=Swn$NF0X>G`<{H^lS%>w~uO@9hs?+#Zol zN48ooF@F~<9u|K5qi|g5g;3NHxrTR5gkki_`KMRkg@%`*b9%liKhpHQi(eTPHom!e2cuCN@c(f$|81!L zZW{dGhU$MCD%t-@tLX0*gMa6>=WF}FUg7_;ivItip}IFsF#bBTxZSe-C6>EXO8JMT zm)FS%n)wzFHj|Fa>yM}8xf37Y(3S~cQ7MV=IL?d%+Wwk0 z^aEGXtMO>nC!9&xL6GlcqyI+CcS)cBY{#vpp6O!b-CjlK_g9d`VS%|?Yh}nr+m^R& zWA=*QFRPMgO|#E)-`kI#+vtHyau;57BO=?>MMiIsj(DbwB39^D0zsNq#@=zm`B32F z#`Lh;V?NvkkvPIy@&JriDa&%$hCj`(x!M;A+eUn(BlI!0Z76{zrcWseFr8O;FGqv< zf3qsFUS-D0VqSg~5eh~!4?x`D%@@_;fH#T%O)O{SJ)Z$aLAh9a-g>q^Au2@HJuGq> z*gz}BLK3K$j6_QRJk;*0DJIJd-^MEbqPA#^8pVDNGaI7+QY#%jn;~D+iILMR2JVO< zChaX5w4usNN>k3!LG4B~hTL9~#c@wVL(SM@$aw+2N-DY&oG)lW%Na;j$Hhso+3hx^ z*+j03hHd)ByU?N57QY0Mp?+7)lNx?oB=i>UnUc?Kz@9rl=kbAXV_!zi~V-Kk`(di2bc8niwMS`galJmRl@37OaFCQ6?(&(qY&==2B7N z$AOh>5Mca?7-~GIq7Pe&rB3Iu-X=GgonW+ukjYK!%^+)iZh@LB(?3T49v$TZ4wt5(H#YS!-|4pypSBKm+fu zgl%xc+*%i#_vTkaQHaTVRP$V@SZ?pDH4n_bWNat42+YI)`RQS#zEMq#8}A`hsI&a> zvbz0Vs6)`5CC1p8fHGn2M`jm+@Ju@uy-hOU(WhmEonsM9MyvqfGdU`DbvqViWiW%f zF^1`-7?hg9_7vR&fYi~5llE?gJd22dC#9D_gk=b#;lQ<8onf-nj`fB#COE*KNIX6> zV|^|=b-5iv$Pip0VnK~U^s%NlyX+{^N*$R5jk=Flw>OGAHJ5A>9K*eY9c4J4t9cIY z%Ln43CSjxCzP<#WTz3f+Qsq+9$;hA%7bt*lN6jz6$_Q*j(3rilTQL(4 z#u3v2_oPgq7sd(F_NX~_Dg}!pZ?{fxjMLarO4&@})!Em{!6F>bJ|MJM{=Ovi-51b!95?tD1tZ=2&0^% z<5liI;!S*po3+X2DwK;No|~?QVZ!T&nulm=)x}_B#6f_(hRC(IC<4w3E)g?D4?anG z)QJ$>J&kItFxIj97F9!!UBVd>(;D)ngN>g zcW{W2RxD$(>doBnWhIbXq{kIwoa4bP6dB-DLYSNAnF?ksGAaTB5n`einmpTRnlktJ z(~3iS0nBtCmAmzHlN;HjlRLG z%|cSJsyn>uYpW{I)r=?l$VS8!<>UJJhH^*dB!415l(T?gs$0?XdNK>Mu1HG3Ms?JZ zwFptQMC}8CM$7AIU%$Gt7U>SH#n%zNEp_F37<*zje=<$n&_sJtYYTepTVT0x?}uVn zWGWoU_;1HGcbt|edy-P zIhl1EO5Jy#o13pNSiG&-%!mFLH=i5LI)p7M9UBPtRv^5h-E^!+VQROl_|N5p;5#=y zAloctdMrKXj&i(WzoFrTNH-0tJq<{D;ziCH?JTz2k?s%Quc<+nbEGzRB&>B$nWllx*o|V5Cd!wgyTDeC|(+izO!+j+9K0fpO^yV&;T7vEdk0!OBnCyXiFSP#H*Jw$)+?w4V@2V143WD)a<8l4)cM;CdA z>1$%u*@-FoyqC7%dyjOIGyw6-upjBL^zo01szmISLfG?AOTID99a{h@yVakBt0g`9^90HW+@{ zF`iX7R-_~2%4x($=b)ViV1W)us8fI(`pZx1ARigp#G0t`yjeG;#c2fEvjD&fz)S&5 z9Fa#GKtlb%OfoQnBeQv-QJe!TPjN&#`pS*_FFpYU#&IxE`Cv~xQO<&kspepq(?UE7 zgv7uoiqact;4qwU@*~S4Xye$sVWPMLpXhWA`X zuyMFHh*O9nMRtP(WhU(XYM-qxM}$hykXlBrUQ*U!KYcz+Y#z618R({%OX3 zL7IGtHu}sx`aC6i={)Mzoqnvq4lULWmM;cgCkD|Y27U+hX)YR_kQOG?t|tUoEdW}L zB~RvJ2y|r7Qe#Q@1QCv73`7~G=VGa47+-ZrW>8BbVGEFpIn&5krRK?W!^g~BV$F!) z4?+&(_)%DPdXWXL;!ofxshaSLD-lIJ5`rj+lG&dUGXPD83CbvmNJj~XRanvj^WqG&IQQ%v@wZjC<;P6-jE*{B`L!TjKKcjYH_*|K6J5J`L8s8j;O6>##OYs0F z1|U4ddejc|9%6M&@>_Snp|C$h$}#1TG>j;wwpdMxwZ=`ZPO)_&6cS_5p-ADbf`MeA zmaqX*j(~AHFq8GvJUb2c0Vdp0Fj3F*T$2Fw2kzn&nZ`%qRXaj@vD|5~4C1_?c1S7! zTM1CM18s!(aE<^2%mXD+6eK6Oh(wNMSGexkhv7wdnkk<8RV;H?AXhb51MDc<4ZNu) zJQ^-T51DjCr?-9-uRKfv(IN!B9=vDD@O~?AA3u0!pXCW>j96}jrmP%%i5*H!5kP&E zM(vb^#2$_`{v^DSYb!8k$WVl@<-m=j`$$C?4B}B=GnhU>Vv2ufN|9yd z^v>oP3jU$KVhzA2M$h4nerXO+YpD&wr@}sf*Behl6-~8`%|jl~gME;M4Y30308CFA zn6)b$R5l=D7w_>Q76Cu-DHKS*#u^C)X09CAtN?S_M<*|zbZR{xO9bkTbP+ppACJ44 zcI4FT;(>DEO`jmLdI0=34n0(f5c>m?k1s?29$i z2@L1)@hoWg*Sj^6O!)rNvURW+^D#+{48ZgumWn_fMoXopUYZgk^NmZbU3LzeC-F5E zNsbC-T{W}hv6;nDt<_MSxN*7F171h81`tkzt6qZxlgvYFV2xe%_JN!xxA~VCVt*z; zQ&Qw41_M5jX^4{kw%1!>)4}W&vDs$hYaVl*%|~W47~P`mGMboadP;Y(RB1y^NUQo` zi)OJ!sxkZ?%HsW9K(G}pVnAWoqgH#Vo_F%N7pBSz+_Y-uuFIOdvmlJ1-Fi(HTzdL40g7x9hoc6HZDRrEG_*0I4y4=i)Kgcts7Z6Ul&RGm?BZK zTi+75G|F*T;PSM^w`>!)%A7YZdwQ<<17FfxS67?$dtYoQ%gvNFMBg;Ew0yW@x5(LO z%3Xv?HA#_F9AKUBQeOg0v~QZ3fNxV6kJr$~9MMk`I%55sH4!^)ZGqPIR^k7Ly|<34 zdf)cHm0XKlba!`m_o7=tkdT&;6cnUm(TfxikS>)j0cq)!kZzD}Bm~xPp?mMM_c`~R zd(VCDc*gVm#vQ}I{Cn}8^E2mszg`KLQ)^<=X6TPr+JMXLh&%+y*=;~`p{X^i_CvpG zPmCH~%4HhS_9Z5S`gX30TKusNa^sFXRtsywCJI0Yq72U~Pcjal&oLJmpMMDTg><6G zyt{S7_)dp`9A|jTBL+sqY^LtgP!fK!-HGDTRu@p)?@H#2(0-YV-yFm*tro7miEctB zdcEU^g7KLG)&rur#`R5?I$h%_|@&T)`0u`xi<;zlr8EdZsECeGPAyNQDQC=7<$8cV}#qfq9E7Kt1kuUEu_)N>|6q5yeCugiA@1j73PezG>4}64_x& z>4tWZ#H+F1>mR=*Uz_xi7r&M=&T|y)RBWwZc7~qjook*bXHLcom%6h6^dv3Z@d>S?1fu2IdVX;ST2^Z#)6Hy5o;#0^k8Y z%ol{-Lb3wd#u!$Qjk-k!^^!YLsKr3l#*lM4QoVnoQh6+>O@`7^^2}~GL=j6~O5k+W;mQ^CxHZ^IR_KtpHTz~xi8S-p6E55 z1|g#%YJV4W`7RjuJ*5K8VwsB6546s)i>7Ukk&Pn!3}nQI>eOe9zPvDAz$0NJ9DhV{ z8DkxGKwC7-UVBb4JVNL1fR{A@su}|btg0j9G1bLs?r=D;JP_^Lzhs2fAoO#Ba$vZ5 zFx&zv;?LNG`g}jEY4${mxUIGH8~nC(g|3NQZ_O&|IQ?kms4VyM@FP$_-M5%cuO0sb z)5PbH&&;=No0zK|E>sGl4g%apALCf`OD(6rtgEK*STXWLpbKj0aMOgPatz&YK)pW} z!=v#{?L1|dTHTp(J8d$6fX21m=xRSy6E)&T81Aar2XoIr0;31t)T`_!aL<(WHXj8W zqb7Twmr{&{sU18g0~2zpHpwq$u=hPYm~VxFm`pG#<}Av<2a3<9O6TUA&u^VJqE4S` z_z{LxtXbh%Go+~UcuWJ9tc zPZ70SaZ^jMzQq?lBewYgvh8h~lw$djMFjFR zp`sv6#T(2QfJ*}ILq#3eVWNw)hloUE1pzrQ!f7=Ic5mB`RYL^zFx4B#NwL#Nn4Vf- zQJ$pt0-{R#l$-q^?7Xxzrj-iPFb+KZM5%%&dOcBoO5lAODXga*S)6Bj z&kZA*!t-dQk*!#yQr2{Ka|~O^dN649Qrxp2q3SGCQQT^;yd}jK?LsvHyy#-)g;khk z;aF0y&=3?Iy3*cS`YYGFX$zcF(WU`bvfPx20pl(_SA<_96gR191k@ro^&ky035GGA z^0+xRED;YFsA1WJg_dM#0ywhxfwHK?k0duk14J(#WSe>jUr;a8it#W`rPCsXv0f6;z+_cQglYUg2F! zx4KOdE*Dl`+e!p0l5Kg0P7z+xNU@dB7izU02yA(W-+OT!GnZ~F({wcMK)Bhu(4+Vw z%{%;Ia1~7$F-QW_2MW6upTd=_K=Q)?X3B>aLT|P6aJwRvZIOD~usP+)_xv+g%v`Y{ z>v@V@Tlgq^dAJBF!GQ}F5D2H$Ct}7U+V6P10D>H;<)Z^SwsD}z`}`#G4K1d)05zhT zdfY?^BCj#cs#Gbl&;xB0UM`VUZLQXo0tJ5 z6!Q|BG4SQ|U_dp(26|)800WV%dm)kT8nhN#01A>XDE3Jx>}x(?GD-n_+9fc<#z1c# zBpGz9pibk9h<2PdIv~e*pRRzshZFUSD#YMRn(n}c3U01im_G+?!lNYFnJh#V3`^Y= z2Z(S;+fXMaQhEh`F?b^@*l#G?S*&4BekvTwSdaG>Q$(-7_65|3GWaboa7(re6oI0T zopp}^RR(505}?MH?IgF%dh>N;$V-9xojpWLza2=dChLF{^ko(6_)Acf9u15<#7HbV9o-M!=q!UC+jARFcvd9kH%ZSSG(x12z7RDk-R8(M< zrOFwBg_!Zuwi);49#(1+)`aKIRtHhb+K&?sg4e^AviXH+uA@uAYY3S4jHVc# z?P2(c(V^ExTqHy@a0Lzb>m?0v7P4~o@n9fOVDctV@<&E0&%DG47~yW_f1c-Rnqwa9 z4D$kW^YFyQ9?yLA&u6s8bYU8efU+4+_xf$g&UC599Tyybo-huVnHi1N(tFWQXvdNK z)l%O`jkY_JUf!{8rzU{^#o*H|SN`xoOB32PKh@_z)A1&oaAPb6vk7L|KCAw6XM9ew z47%Wyuh#NA^s!|;BE2FiL)V<_W)KHVmKN*hRT+aIW8Jl>+(9Zi+gA-XHb%4a5)e-% zoZZ-R;sMTEaF|s5C&$&bO2X#x^f8JA?V`0Ac9!o__{JQc-GlJLhHCRj+;jUd>C0jE zlHrYu67iICZIVk}ka{NEji7NOnvE_nv5b#%6u+#Vimj`rs7s&Q{W98mKJJi zxxiL@{z+TWHGDj)3MX73ng-J?#ovP3Q|m%XaXHsnj(#0GK)6Cd)+KHP?;F-=l`NLP zm(;T9CDpf(A=v22$h}V=FK*nbAc2A2y=~!zHEX>i9U+u!gRlWAV zVR(N!?+6R$DpkEs%zDKDe(WtbbNl?7+VqN`W#IHP?p55y{MGEYW}O^IoG{ezxq<`V zOA?*OC#Lc{tixr8V=!NjHW)25@%%NFqDVe&@;rA?{5IFXIqZni6P2E zV5(wa(kNft0Gncf8`aiwu~7Y7X$YV-!mOFjO$viu%B2W6QUCF@itC38FweEsh3(Vz z59u9UQ6h4HZ9E!2xx{NoYp_-bvAiU1N9zG%1pL+i2@h!J-$)_fJRsU02MvpW1lL%! zf9OD_Q%&B`Z6A`8W*Bcx+N@@^1gN65*G2*;s%0C4WO&DAL*QEanOvB8BrUHlgxdkY zOfT0sR&|oqL7)aXWQ(A^<`=*2xar_d0kkJmcSZ_JN~?9+;B`Kgi;y%1$mw-DM2cg; zbq8khrx1DNIr*(wxg0O~bZQxm&QeNpg;72Qy>v)if|RctK$9FzOHILWu2yia)v!q+ z^f2U>t;Nos_6J{tLFecElMtOX`CU9k%f!zQks{2$5q*@*YL$xh_{rnL_DK_jIKg?PgM>RL@{(>_i}Y zo|4}wy=NZ4E$Y1=f8*nHNpF4{dpf0n;O;>BkM!x?{^^hac^X)SbW50co>OZNu^RZP z=;yGduEQC-O~Iyh;_EgyIqy<5q-^XRLb;t zGOrciH?@5rSFK5;inWvqO{py)@2#;EOuFu<70(ax=?~acxK9suPwxk+Mm-Md(hls$ zLQ?DGFQpML2~81fu2yJCgw(4ISmUB@5)at04+M#-^~v+|@%MMl^=Cy6KvD*V#0M`% z)x1~L#@#D@=?6xx!@Bbz5?`7pn+EB1)W_r@5&UJY9qOY)gusylPH}@W$1P$v)8XHlA^WuE%N{O?j`PfC>DX z=heO8wnL}lO2=|^=S`X@dVp>R049d!yVhY~?hrP8SnMH6X*G6|R$G9rn8ZCT)Iq%0 zkwT&64Sp#hVbr0hpG&{;x8V6eKqY_#ISA#ZmR&I5N;wd81AzbMN}pEMC0wCFqL()k zkTn`Wt+gi%Agj?1H9(nP8YR6!r9{>t+Dn;d=?j<&E%3)p?c}7&03c6DQ2{l}603xgvOs&DTu5-B+ ziuMDdLz0%4m7t5mw7&*)YfnkDN3(hq5Fvdpf>}GWI542RGXTUK)^iVs0)p16E7l-a z)fTTSjIV*2|JYwItfwfzO)sNWTV4HgB|bXW1TaJQOK^Gq*5PoXSFb)ng%k0(@t!`z zlhgoa;Pi}?TRV=ZA(H8ObE-u(u>;c95hB0(gXi{|$=r}P?X9{gJUmI0LkZ~Rn=DS4 z4-3mff_xz61P|RgFz8jnAB@DYJ)Llm{+i;iokT4B;?viKV$=Xz9iP32em4*0UlOGu z83b||1UYhfNf?B@LW?#u2s=~pePxh7I|ggnA)rh!h#EAAo;Tp6Fo?OCiiFZZDGcK| z3{SxZ3F?MPkEe5r`e&mIk{?IfdZ_q)oJ`Trado7BD#65zn6I_@;SC2FPp=_%yMC~+ zo>Kg1mcX06V*|}VvZulTBW~T8>FJk`A7Se--S0=0Zv@`|JToXvmx62*O@LzJALICV zCUx&2*P~oYI-?L`qc8$M^`~jRm57H)2FxGBF((Z2;v#LN(T&Ol=14c58!-*e{Njx53=NNxH-}eew zxn%U7qrab9e6R!K6Qr!wETT^=DyS6$)~JQCP=nC~TIhvvbwrZ(-!mCJiCCsEX&h-< z_(a%W)U+xAFdm)XRKVEL2ULO;doMk1%zb2eV(9!_L>dxgD$8imZ`yMPRnF+T=f%p?LZ z3$5}z)JO`WX)sCw{HZY*zT!_KAy_654@;n`D&+KOgR6h2g9{}ZCu(a3dX&5rTTWB3 zzuC^K&>nvjV;t1dp6s;4NGG$VqB!)nxrOIhcrHtkH2aGV^&-2NG9;o9np}_AyWddrYQl+0z5QHKxqm^<>3Rw`{*WMqo^gMm$Hu{iaw@` z=J>cy4_)Y`KLMEwf34d51Sr>9CPA6pA~0P1Lv@8? zA1oms1Cdz_6EeTxyi7vY<}U1HNpe)NG_|YVG6w|QTSs3D(S;%>4HU}-todmvCrUuX z(t|Ci*V)=u1E$_Q03wsyf#lW5#S|gxMZ!o8PhIE<*+ik{T=iQ*A8^=V zM0xTtW~VOZ$w#N1+DyAsK0wuEMtPMca4BkDCsBUmTa49cwu0`i6EXclPEV zI4v#g);I5jwK`4u8nsc{hd_2Vo;!VO-t8ycKi$|rMp-!%JZRjYFRKRvjv~n$L@J_5 z5f@BSlF+BElNKaRNs{+J*gB0!I^Ad-_Il^`z5{T&9tzAH@JARS3z-2uEs(f!k;|MH zjOy-ruHJ{4qQ5;vw;>=81r!`ck`^}|NVqJ#GqusnC8~qqygs@~?ybq-xQRI=dVT1W z=0a_=1nf2^D|ALLbLnwo?tb$onq@h}Yw=tGuc^L?@O=B=74yF1k;G#RcFkk|T(VWG z#csAEq-T_=p(zAcuf)qYUHSZ6lUPjg&li8ZI%)NCMvH|=Ja*$6UZAmvTGU_W8%AHv za1;7=B75LQ`^-(DEDGPqtx;N>x|>kG+f@23dL8nK!}21j&7o>x6o;w%9P-I#K4iIO z5ufO!4AAsuoiu(v+aubLigvb%!EnhdQ*%4pFt*KjcxuTOb4L1$*9RQBtuvD_qojEc zi$#O4|LD*7r^sexS67M29hK1`x zcllw8GbB9|J@7k|!G<$1U#UfZCgxd%wm>yJKRiG7T}!Iz_lr`k3>wp+pUClC)wddO zOhf8k<;@SDPmP}2%_O04fd-UP;utiX`^|^z=IZ=VUx-myDtq$c;^f|Q88 zrRp@kty#c*#v(KQIgZVxAkZCh9Dc3%hd%>AX!0tf{VO?TvVk7it2nS08``|Iylf6W zzJ&~{!?G3#O+Xup1)O&d3YTWo50Xje4xv+4=`n-i2IC`zMj*<(06D`_;z(tcc!M7@ zqrl;Q;SZ5m3N$N?kx`VJ*z*OUX`Y6FmM=7QTVDTRu4| zjabps_kgPGfd9>Vm;OqAIhip@dybdgCBfgcsZD0>YVALS>(x0$Z|{Aiiz7=+WSI`< zv@3{n@6oVe)>~8CmCY*!%aL}{sk4$JeQwN+lS!Z#Z==@ATFtC3ljUlt=4h+Z|AEcT zwk(ricE)+e4Q7@c2YiMZvTHS=WcxsSF^Z#f-k?ttC)Cq_Wlt0q{1w65JsFlp9h{Gk!K{7RCX`G`x2FKJA+y_-|s;k;_3XRD_T3v|5|cyw3o^o*o(=iSGrRmF$iO zV)T)OC*;;YsA#-==kwP0Wi`db-j$RG9)9C?^;f4Kd-buiX8Rx6I>eTz2AbnDTgal- zRojV9)sCLcCP5vA(eZCo<7SX0N`Ar%hF}?o70tCSmGr* z@`40-|6C8|)GUmI$q(yk!MOlVKQ6g`2!hQYuw3t;NL=W}20DlMO!H;vU3I)cJbp$! zT)%Wpog))+&-uaGRF||oGYE}0mS$Ei^1fz@&=M%XpS`oUJ6@q`Z;3-yOU78n)|%7p zMP5KEANU(AkiXIo(m?@#ayZx1(gwRjZF7p2l~l?zpc4B^xIe=19oy^CMjb+tTt=lt zyFe@<)S&{so|!YFm-vw(G5;pi>)NrgOP%6=MJ)S!3R}80@;Ai2YzN zEF&tv1ce6wVc)TC^>0w9t2<1?Mj$=2n$|KS&S&_wA}}eefY~Xvg*S);?}>u#BYOxX zOP)YRd_Mrk?adO#H|>=+sC~80n-zL|5m-fp`>jI;8c(6vV$IO=wC%VPBxND(FEA=& zJq7#vClOyrpU4L6uf0K&Dawy&O$LMHDJ=pREY+B_V_Pe8fH?XuxkW)Cv}@v&1f(pe zPc-B4@mZd!KsYkNiO_=JT!w%xF3m^rakq&03{Q%U+^=Gld4uuP0}IqDl9k`t#xn@J zD|f1eC*)49>2FqNoQFn$WJg%o^&GXqrQ5hEEDn)e%EihkC@Kny9&{Ak;! zZO1>Th`Vq1kT_C%fVZ=XL_M4fAg4Q#6y$xN{TAn8BW^XonSMUSTGEYaS{F9$UMtr4 z!SwKw|Kfv6-K%95CmIVxnK`8TRGGKJY4;}Is$tL!GhjWolNEm(VMoj>Q)=r)Z|t67 z_du8c@>~e-Q>#8M>txNy3)m4CHG?_zl%uj2jK`$su;LT$%MZGON>Dm&bKHK537?%E zTnKA^Bg~d|7$KbjPX8y<>6SFJ4V?G;Ei> zuS-6Zrm*8MDam(f4ONOEXNNTzh{)xLL&EiK=KT1z`g>VVjGCi1R*R-#MlL+)GD9mk zAL}P;P*~87k#Jv+&A0VC?#H;m$Za22ejI^loTd>BZYol3jKm~IW75tmgYS^z))D!9 z>MYNw^YYS%5~ImvR}4Zg?ewtDauf%l>hG>54$Tjx%UNiMHAA{HLj?+SKG>@+H++4) zB2do6;9z##J5j}2%T=h#YlYpYJ+!f2EQF6)ATO5E?zK}|db2C<(l{G-^_^1&ec$yB z8U32%d3MT&{pXEhj}P|s8dlYxc~&(pToeGssRDO>ObchQNY0vZo>=;kT`!TjFt_*O ztz|I#EXTYQ?kpQ~&H($Y#BK|9(Iu`$+sv(oYzy}&E!f8;T(4!r1V#EV^|zDU!0Vh; zdi@reG$~`oYJ4ppLmW!o@Yb8Y;jM^_7`h#$;9G2hi8Nj&XuRjc>)fioye$7lfsgql zbqn}3h^^c=`(7-D%h>l}vX^T1P(U(c`XMsYT+bPL$frH$*v2{Y5H$m;ATPJ>#K04$ z^!yVEJ-;yMqAG5Y^`X!qM6+pyX!xQ_Y=P~e-?jTOT6RyjaqR-ou!Vm3a>)DkBn$h~ zrjq8>mp8YkMVj=!x|$i@Rn62hz7o$U2*n+0Du$a68rxA%~+H@%BiSec+ux#Z} z4E$k2HZyTSn@k|l3+!4NqKzQJX&F#lU?6NsLUfZ%+UwE0S@3Ljps=n4Yfq4pSMYVW zu7qu%r(%c!&Q)qvVKof>i;qK&)Ht>Mn z3yk~ZGmd14N+G{JLK}lWGfq1wOnwCkhr>W-JeA=Xbdbp;Mw@f&rdDM?Vf$=njF5{6tTx(^qKE*U2$*za>Xb+rAUu0S zBpnQD1Bb^NM4{b}OzmOB4Nwny2#N>eG7#f5Ba>dAgd$f+Y4Jp(W=CV+$E*yMo&pE! zf$=7Vai`0rNcCc|!W#DikpQDhYeg$qDkz?mhj?A^y82#p}56ySHzOQ z)HpO{C<93x#dJL8M=0aRIONM%{%{ai4G@YwiaARsiI$Cke8f+jaVe!BPZjICQ0;4>{-ZLO((poN!pf^ zbSzFLGk<|Lnq+R6??JQAt>@AXf8m*e-tZCIVC9-^rl!n9GLn-(B{R1AR@1{qK|y(pACzPRT0my{|a2g zfai{gf5*ErJCn8r0shCr_P*}j>cwM)Kk=>;Ym%P&RX=k_4>Oi;LvB=l;aw@&3;$xm z^IY7Te@9fd_#cvh@bmm1GyH*f{ih@#_t~EK`xT)N`(TXAl$7Tg(yT#c{=k=3 zR%uk>x>N;1-oyrZK)g#TbFbsx2!uAVIN8b-u5joG*n&I-G-%NP0pJ98( zBdeu=gSOzMKwxtxbs(>Vmsv3Gv4VNXD;xmP1B0#3Whtsqz=|4evT%+XV;W=y!jeg> z8%bMAoE!R&z%@&)TMW1f4^9GFi&rC6mP`1Z1e9;bcb%}F^k))Ku}+X{s`*CRXpJl4 z8)sGp&EJ7*;fr`ToBtBH_C;|x-|fL)g51A%@~kT8@3*%Ve+0wi+ul{1xN9oqV_3?6 zXbMbJfx|S|;6d)&9yvG($cRxGOLGDYqZf?l9uM)*_T@P>9emtJ9*ne zjz!|9Wpl=}&fPbrQ$JxEUf+Jhy9(7@pFTWOG=g#HE-5Xf6&t2<`f{(xHS5+d^T-Sl z%o-J&r;;YJ?R3b*81Y|7$$2_iQRW0E^69XqnCJ+O3}{ceA@vU76d*q+#G|lHPGqdHwH5`HV9O2?AB86C| zrsqU-cKB_U(|p3~xd*$fYRBj83k9`hA6Ht-GqccXsW{}|7lPxMC7<~mZQUnOu=>pL zQd`otK=OMl?Trq^{PDjWx_kck58)8Mekz@Pb>?_m=jO1$EScl_BaX~ z_bEZU>N@`?B&^dBE$aC>Yxflw@W3dCR9qIAc*;vAfO}Ys-gZfPGF3WL02r>=x#DPh z0aJe-aq@!n2a^NBRf}7Eo*9C=ZO;2*t*>(x*`VlOCcH^?IH_*aPPkw+=4D9;CFU;^ zp0CmyMk@?C-M%lfdu6{&cnx$`CE9QKDKJ#rScx~56AS&fP{08y<2j^fMY*hDI+{7- z&u?-m;{4C^WE>lU+vFkdCJT z;e}cte?j|vONUQ_ImVaeVt7!^M>_)EvlGdgnb7F0p)gNrZs+5hGEBqgLuzwWM0$hC zLzrLJbfYAswf!~ww6f_6;u(CL_M^=BcI9kI9qtP!SGe7UHY52kAb@s3-f4h zLhU>;$>+rgsoRQuX$yW)b#%I~xOCdtp#Jy%Od0^)^F`SG1MO1&TgvsHqg}3h9RGcE zQ+u9L4Xb{!K^1KcJmorBrd}AHf$|$nJldbgHxwjt!aZg<)te{J1z? z8_q>7^Zj(0vOoO{yQ#rz=n8hYGc4uS;&;n?b8hN?4Fs5}q3kPV1)d1}2XiCN(+BWn z74r&&KG}99Tz=4hC4#;7SIYHY<2^0I41Ma?{-`$p26yi1XX#8Il+QA6{WtRZq?M5V ziuZi7rExbmV$uF#{71Fn%~$(1H!_gP-7YD~*?y|CehnKNd>1*tp(+T2=z_Qcmqnr6 z>Vqn5R?S$ybLV<}p zsP*83qnnIhCrJJ=Hv*#q9lnUh9APs>W5@@qiSbd)H(Oko3&a)z+(W92{+Ju_Z3ldx zc@{WW8+Fj6PRIXx|!z z<5#g|G6_daYpt%N^4P{7xU{Qqifm$qQ@U=Hy4fBkR(>rN8~vC-ez@O?J??$j8T);* zSrg0D$10iq;Q9oPoVz)Nr(AE&rfg!JCT2W;!+T!9Q?78lXJOgx)o$G%)#f+vs$b66 zT`41&rF};9y-lepkd_0&`_cR8DQU>Ohx}MRW_Gm9ZKL-<<^=SZ$b6fr=&o8pRQ%DX zEwYWEKFc7+fdPPS4+(zdVF-;#=!)4CN#p2gBSmoVW1X=erhfMJJ{8|2Ya+k!3wm55ZIZ ze~eN2G7&TWuQTSXpN{6g&6t0ofaU%H1^ioQ`UmDsTBqmF---swpuO5TUV7EKrQ4Gy z^{^4VKjFph-2=g2JO}@!-_@_(#r3Aczh8s4eg3WnWrTA8f2%=BQ-9Q;x*{n*kN*z3 zs_FnqN91?*=>v4fKe102TPX^#G@86NU5BIC{<6D(*C5pA^CtR?p8E?e-mqvEU-5xs zP&?zXOlvx7aO`Hy1nyvx~7*1-G!XUL15yUHunokm5zBk+R^OF7@Z{>fd0W>Y~pT+i2nMZrNzSpDLYi|Kk3(P1+T| z+g;!i*!^vHq4V1JCusp~g0H9`qNJEAq9g0wbUCcgz_H!^L{lVeLJ-QO{+SgnwD|er zA+&d}`9L07Ox5=<@PSSRKVKeH%cA>4fxkJ=#A~Op79ANJ`G~D8gJZbwHmaK4O@9win|+*4|E@ly2A(lw!4Vw#)!@( zfd%vSN~?I;@Ox~h1ssnFGyWJRY|{FrONFDW>ZTN?EUQvIrn$GHzDG`H?e5HQaALxR z7I*l-UoRdq*qXY$pF6wSVldOGkbD49X}$4|$2rK0KK|s(GB!hIa*E3Vi>FNhj;{K>29@1>pZjMu=#3(xpTn^yMMKot@WG>7qeUt@*p(ROJw$`F`?${h zDB@?y&%y_pMDOnW00Px~62-!`AiQqW$Z#PS#I4IDCR z9R0JwE0ITfR~}9`LhK6~$N5l_K|4aAR@?q(Lh?TW+&PAP^7%)|=wTPzpCO}v2crK^ zz7l^w7x@iv_xk7>aj5C9W4(X7$o+R7THC)rv?Obu>c9J%KURQ)!S?;#bd@c9LI2~> zM5fMRwJ$@p&S})!dGFtNX#D~Bw%!5;2mWSl%KY@5v@z_bS=Q_`@O`HS{eikT(~aNx$?DtU7MO49?Ir4x@BLdM z-GD31lq{crEON`CDC?j9);!T_@ulB2PydA?_j9Z#xJ4iDAb!_8{nv|Jp%TVjkt4q= zawQn<|4`)ie-*hJ%|D79i*BFK&mzZ4!2h$zQ9mCu6L~KQvwp)heNCq!(+qg9Bi-JK zw(_C*w;~4zeEW(jRsNHo@7-AM9Sei#^0BtpiiVw2gKOz5PI><1SI+w5O8bLPq{o2= zfA3NFyPvN&rpoUgg|8lRy0`8FmOZq0W4+;*kh`(oub;15_@^NZrd~n&bB!U9%=SMP z^wHUricHZ394a04Zev`stKCw4GV@R9;2wpaPVhTEqoX@N4yLS2>61c7&@?FZ!}nR2 zB)YpIhq)v7yg!;@7W?DwhvYuv28IhMf3`J3m(und!9}b~ilg}mo1%ln7$v8Vy-B*p z&pZT;7pyii!zf9O4;g_Cn@NU&aKLxn{?!f~&G=*YZb4rwyjc2Uzv+Dc$3ZJ9*WVSn zKR>iwO@dxI%phiXMbAGwcyuA|r%89Y@;21>D*waqt?hmb)uZ!;9?eJB-@O(6ZgZB0 zVb*Y3h|M*V^Z-)1e>x2{0?}riMOJh`dNC=|V?FFms6`;LWh4pGN(9D(E; zV5SduM|^vKJL3D@?C1%1Et!RVqTz>0(_ujo;v7Nz4(~E*gs0Qv)kP4(EzYHEY{mwm zMz2j*>x56o%>twjh~JQBb? zQoSl7b6$O-CWw2%bGe0ZIi?}B62%iL^|oC@OJt=w=*K|=Ob*+-jjY;E?yr6M9p;nm zKlz&@=6m|v;Vcyj`hQuxLvg_JDeQOg&eJg}{fN`jU+ebt^_WK<=QTh5W|ada$rc~$ z%xCZV^3wU_z5SnkxoN@+5#AfsJDaK=qP;^veFfZI;l>*CQ@kVf(R^V5F5ZcHAa%EH z=Wib=(0ym3P9ku}O<(ljxD)Rv3atJV@BD#cP1p*eY9bMwEfm>NY@KHu%M#73wS2eW($|FQtVsHM9*oE2SGNwyX(R!e)@XIGf)i^iIt6T`}q zr)X8fq)~D^w*9Vj2!^!tzM@Z_?L%$XOZyKzduaBhEjfSBO=nj-l=$6U5jErwA8Ou- zcb1L|9P8JT;R}%NFQJ?n1j(J*Db|{U6-)Ke;P*`PAob z$g4VJi5zvS74QD$o?rIg{ms47mq4pwKbs)djy{{DvWvz=G$z}tQ6>*|e6Dc!beaC` zaF*lO@JY>b{&5{IEFG3Blmniv8D0z~a=H`m#PBU5V3yX8o_3yLe_}K|@#@{x_Px{^ zac_3;U>n4XTO+pHHxeSxmWF_NbKueWNcy*a;jnc zF;@No)hJPK*{!1L1ItwaVa4!DoGQAhiWxM4zy-noT-7Y7S&lZpro$HvpY(F6K=dGW z&j)893q`1>4eRA$5cQf$7J#=MBpGeasFsa(w3clS%w~ui0dk7sCaZpMHsWi_9&(++ zL2r)s$~ZXLn-$*D&9D@x^*L&ZMFWxu!G7Azx$z_owlUB%Z z)|*9@QCT)T(g7t4$RoKChCtQI>5luRq!__XoFw^}H3`HvkC>Sw;Q(9}RXUA4K9DkP z=o1DSGXT=_o=AQcR&5=yEs`xW&DG~5$O|In3!yN@r=6_8AKkPM>m!1Tc$st^uxP}$ zXoJ{Kl&qC=R&u6^{5mU=Tca$6_i_dYIjqv7o}zMjv=2H<@G*Ur2hj&j#(6c!6Yu#L zi7f=eKFqM}XBZnZk)f6_2jGqyEs8U{rxjDh-Q)tT157Pk?Kocy3}$k<*eW2mj|3Sb zK1O+*hU4=@J3;$|TOQOyz&wh9;i1RGpx>j!(vFRnJYtkYudGghmO(jXRVc2nry++h zo)!46NKs&1OD1qU&-Gog7QIzP@)b^zC{Lco;I_U`xOS*l5VhXtC(Kxa<#2Ot$)m@5 z24f8cuS+ZokhWNj4yqr-WC;Wfym@DWsrxm0&Lik@?wy&CYgm#z9qp@$9#cASQ=5(| zv4P{bIZgaj6#Mg+G4qoQEGIETFKeriF4+~N8$rID^3@Unkxw7Kdju(;tj>+z^+Pf@ z=!7M&RpL%Nc!S|kg^!pS70liz}dM8^}2432O^C%bCLW+v_jFP z&+E`9X9;=A=P(bnO6=oyBF>wRNz`N$6c!>D^_f zID>McuEXaH5%0^A>$R^udb~}q$%usL`FXxGM|+ZY;T3jvizi1LA|tFN;EVLsinuB# zMp;f^TvDlFDJQ;hAibKg?9%IsN-}-2N|4F*88XAGUVbecfvY;eu~qq+32{R%TLjh* zczL2Sj$t$1^Kl5N!A)f|>f6_W#9?k4x3^TeHi`FMjuc;>s3S$&cH&>rhdJ@v;lHv{ zewfM_S9@y1{1{Ks{)#JBP`N-#eY=1>w_+^qSi0&5i14HrC4awX3dC<81f`p_i(@M_ zkLP)4W;<>#&Z0KQ4|+J;O%=ic(Im=2Ep*}$GtW}3_Eg_{YUDjKY>g9JI=Hv!UpKqO z!&u))7wNJS_P(0G?qy%Ly+`AZ`NNoV`xqMi7Z!zNw6%53!^xN{`*6%B)p;GF#$h1* za2B9h-%d1i7%FzX%uFKODK)kcUWVd}TPJMOx%{lY#%MJO*xxOqL1LR#^@I{uQV0BO zzL6RZS9$fK7qim3g@Q}SDZ&8xoWObYF3@$wSr{*ahgp zW*4b$Uj-jizmZ59!`5;8;#jgJR3@tUQsY=L@-fW_Gin8yt3vFYo`O>}8GmxFi{F7Pt*U~(G-knSk*iDvSoNz=g z*{$*XCEGsyFpSD$Q)xcr=~v8SBKm_f8}K!{tXKE=(AyJKe;E89w?DF%KO&DG!ja!* zn19GO-v&PaZ$bgEZV*a62mug)L=*7C6Lf?c@a-HMlQ{sHIN-iP0D6i)9K{8+cNO)vCAA+u{gP#TjNhyh< zrI2cUbNe6wdWY;TQy5|l3DNfg>3fCvybdw14=E4vctalwtne~;9m0APBBLFuZX43L z8j6|i!Hgp*PzT}*BXrSrvv~;OIR}N?ka|Nvm$mNpDYyfpVNIH=!9I{M!V1kF!EVA# z9uMnq!Y-KlaUk?AtXag*(pdvlU{Ag2Lg8b4!^JW?j;` zqRM>L*X*W!=_1^WgKsz-SLRZ+n1+NcP)HMnnEH*D+QDR-!9j9#&D+d0%3$sijqugQ;cCAh#>C?F z?D8JAduTjN+V2XO_t>6K#^a&cIRkugjv+XeVp}nfWMZ_AbTQ1&s-C;-hqxz*XHQ8Q zj3rto0za~WFV1tcUoh}L@gc6o&y~KfSf8e{ZaFq6MSm??KOM)+PbA>Blc3V=nB&VBC6KnO>9X)IFY>k?YUGTV;UrivX zL~kx_RSpcHl*qhSj>lyTWgPF3Qn^NyqvXIj9u8i-U6rGqzD)pQI(9zC*0bxonDMWn z6MJNq(8irYY2{w%m$Hz|>4-=I@(!ikuH|-R0A!~J(%Arc2WB4ZaTHlDsIhks^O++lEq|Vok@wN*U!qV$ z5(;UUr-`wIP+r{o;Ll3&Lo=IG88&S_EWhI;=q=;@Lvsjy?-gi?na5YF-vmcia{z*_ z_hJIB<%u6RK!+#F&L&ew=tI5H%cX0x=m(@%POo@mpDwO_mwDEZG9sB$PM&-tQPS4(clb_+NpAKD```FBdKE2y{vMtG*rEE}fi0%jk zw^^Ct_2+>CC?zsuOSLS1Ma6~;1`$C32VZD4IhfAO8H1j{iZQ!ruAtomIzLrple0vw zB7Yx-m^d&Xt+kc(q?r-ajiXM8@G*dUQ>I1nVl@M0>#Hs+@~XIema_E+pP66o>=@e8_ zQmFxk9=efkl#)ieI}{L6T0m5~ROTMH``Y{3SN&q$&%M?&^8)6NIoI)x^E^I>JWdM% zQ2NOz^@816j3Deby8#GM>kAgq-aoYp5zdq|S4Ox-&Ex%mWQg8KHw+nGWqcrz-Rpqc zqSCQJMK4U%Ylj5H@H%ASi1twc&omJz4^g`V(=~^X_%G8}Cz^O#+8(C5EhN01v*B6|S>#K|i%jNO^bG8C#hg=zdd> zTkqWkE{)1zKOF6G{owbh&k?#_)dK9pFS*}V%DV=DNZVOES>gqcpKjSuFJBCbPu9iz zjLZK-$?J1Ra^t9tjy!}w^K*10+ew9<{7A?%IDF=k!NZ8chf9q}S8xUlZ1M%Pj$zFw zDr5mSg;35`=;sU{ib_74+Gkl z2mBv54%KM5_i+%4hY}U;6@Pimc+B}3H@AHu4(T_Sy>c9p)OkMf8%q9rJZ(4L^&^iD z9=Iqg`Q9Fn&>)eHHQ0sf-%#@8s^j`Jq)=r=2L(HZm{y|aW7HYnH`!5TA*0S#$kcZ8 zEqr$gEzqk}6PaC~6@Qmf|nB8dg*Y$o@xOp6!jZc;5rkck35(=o)K z6ccq|igjr6+M9<=90Z}Fa1g+yhJhX%QusRxW9jm}B{$Wb5n@DuAcnRl#A@~^} zlq1MDA7q-3-&Y30$pFceLsB`EqEeM*Q*}6z7B)Z<4~@LXB>ak1&G*hXUBB zgpGBu9ti1k`+|tvNCA3J?umnF&qxkVLlJgCc^sf-oj^QrAVFe~+5t&%I%vQ+((sU| z%N_W@hJ{`9jwguemXCJdpCS^E%f5xb2NY1dNdcOll;y z1QJ&r83Iorz=w^Ms^QDKf~XTA5{YD)&cZtisoBc0P8sR_4J}vrY_?wg1Riux~%af)qZD?dPOF{ z9YZ@G5{87-B2#SEQkKq1;HYjwVHWEQ%y3R{kVr^?;Y{*~Gnp#}^#f*Jfuf=RE6u_9j!O$38P56~GAx&UiSteG2o6_6|hq`jF` zE3H60gzbY^fswn3Y+b>yLvEP^$e{w{B}94L;Ej8j{q{V8R~P5H0`k6#aKOgT-JGby7zDep&)`g zh4sd_Y7J|w3W*v+l(Ik>5xFfMi}qz_2iB|$O=W%$qnSOIL2qx`U-WQPr; z&1tUD;FEYo5+_N@B2L~5DdAkBq4XzhRKlJis3{{Y#XZmFbkDL~tAx(Q)mK9Bm_R$* zke8PvaZ!*%e6k)>Y<>aIITz?M>xI!;@t82z>P4Or`Y$!3e6GR94$0|gtHqnC^4WTU zNl3OS$xyNjEZk)*<)Yx{0_`F}lWruc5~-Z-_$ax0UT`W*3Y6{kKyNJ%ob5`woP&}R z6A1u`qS~{l1ITH=LAVLhP;zCSS%eDQAh{~YjiWIBm_(KW5LIs_E-mwRFlb$p)IADf znB8bD!Hs!C#@Ib!eBSGOVv#X8+vILj@?qh1w+?t+^$n8zaWH5fiF16v$!nQn6-x6_ zI8b$|LC-qZ`&+Z+j3(9z3F4AOF%9$}8~yCI39q0fS_%|~Pn1O1V$p-}u7XWZ6SenH z0rXnn0Z=1(<;ZWXnAWW+Qlv#=6jQZr`1NhizqQqlwZ%i*-#e8v!m9-2rzyZR{0M zSbS1K_B{a{=#0---*`Xhb}laa7?s)&aCWp42E2E%UxmJMEaKOCBe@~~-CFL-6VB=V zM*m}3axtch;LuJD)~V)eKOtrMe2M76I!z}nE!n%y!Ed~#gReF|b#JkBQdalmd3Kvd zu%1hq;sVJ&edB!(?LPVT5Eu*khUrn=@Cp)0yG+>edAXYp$X7ShbAG#r1K8cW>?38~ z*L)fb_3T<86neL;+dMa%az>{7Vs4Yys@!CShs2WIe4=BP($~GjQnu_!(PQ zxd65t%(!MXIDKHwUBF*LXb+tu>X37=Gbfb>R$|skE=GdpPP9wCfE7|XQ&zors5L?# zo4c_*AfCs99_B+xy6%W&4m+J`1>h8B$?!`t#^sHTl%iW<` z{#sFJVh5;Wny6OPUU`jdi3u3T15$j`j;ckJXpV*ogEC@3U4<~8Ucy#vqUR~v1s%gA zfXdP_(j_j^GP}5sWI_ualCOb8ujCw-4zx*yw3Y}a2?T36LkO|zB#GV*h61P5BF2e$ zfJp(`e$u8dcz`Z$k16$fsiLc$URT$M>&{!t+nSIGO+BXE#U@vSyxww?JY|}q`$iI+HCrX^ zaN-&c${l+pO@rq?QN~TawF=#b+OZakN7Xch#xXqw*Cz6k9&hk!Fb#1N)uqdjG8AHy ztH|6^N#mX`j3#(vy!zt(LN3-sOazQ>BHUE-IVbHTZ zqsUaEaW1wT9n9BTORD;%1DtG4tM4#-O5QUQJLJRSMlGgLqXXktx=l!Jo-MQW2QeSw zK#`(%4o)}lZWKQwA~(p#ZK|cU%@@$trN^=+)X9ac9#xlB>96a+UI>TwYIJ2Ip4MqE zb3#pO6DjyyKH-Oq<_X{N;w9i1|D*>UgS$U!*WOp|mpmV%H-5ga;;v}^GI*MSd@a`g z^;7cMx%ee*(y>oVEAMS-$i5gHa<6KC+4(}z=J~}W0LX=VcMB<*91EIj(@D+!qA%aq z#8>^84d`+u{5YIVmPK!LR_I6Ls9$J~9Q%d|ltj4aAlaQ@;P&SrmqIOMIZ6O`-&;a^ zBPETOdW4w5nV#{*>RVi0eCb01qaG4taDT@`E$y(pOw{wWRZ;@6_`cAaKr=8ACX^`O ziX117bh(whl&EFQfOwD7^}_`T39oPy_hJA$wv;@v?BTI^9l__s&I^lu0b(a{E0E+A z`7KLw*fkYF*XbBBd+>;(!4#=c5UI&Cko{MxC4sL_cSx-uM~up+@+cDPF7nv}iuV{4 zw1MaRH;C3vGTc8fgg?6At&`keT=hRYHv?Zh6uhu1n2i4bF_ak%Gy-1CU1Wc~Y<)wB zCx6K+cp_$fDQ~l)r%U7iXb}(mZBFg5lY*r3nS^~vO}NOBfpszBv(M{ONfGz6z=*52 zt)$ibtXl%1?=abYX0RO&_SbC+C5o^cVWd@IAyX(T%Xde>HWpn-H-hzxi>$3xj5bBv z;G|f{H=+hjbOf#&I4|)YlsP5uz<0l;Dd)>I8sOul3uN{7(xj60aat>g)^Sm?Om#`wms7Svd== zu}o{<+U2fd)VAB!^1{~-Ayx<1E|r2jR{c@r-1As^tRn+v8`tesi_R#;6+tyO~qmS?JReF70Yb}*qTwebg+aqX`ZW1Ws5f?ttmG(8|)7qtC z!Pxi*%SP{-MO*Eh$8Y`cIuKM`Wptkb$NbFLtz2dF@2>USdfGO7-3o{}xN7C#Z^4mr zuZZFNJ kkaXeQ)zt0`nhx7Zh<>MtV2p8#<>~|Q`wuaqFPT5)jfE-!B$-2`hhH*< zh#U>G=N4;dL`Bm<+SpLevp3-x-#;?2lGq%o@#qTGYw|w(o-{T#Exk7$GL3x<6>W_L zNOIP>dgi|c?ae65aY%+T(=aBv7oyZ$=K<{re6xoIYAt&B9g>W_LOf!mm<^hdJ3Wu| z{ijbvs++sbJgWi}a6ZkkkZ7DTMv8}f8yF90!VK<+irydBCm(GziWcgOEV#X3U|3jd zgClHg@+7W&j$eYPYHEkMkX6SO8ogcU%hVgrOcg0f#zJqHSeaUC@v?l}5-*gUBbp`$ z#;br!!24EfnVg`@W2a*Njm3?osY2O1)QhYO^Aj+|xMXbH9Nw^okT(p-Z!Dfkz_L zGS)!suOi@hOod2}x~RI1+enhN!S_TxKGw{&4M!ZoGluo$_|7$(?=pAfOOl zNV;B(3lD9vW}>>#R?DD;ABL556^ChuhDesnM}-8gnioI<2?!+TRTnWAiIBAlnysj{2I(y-E$5LVqIh6Qygh#5AFS|ZfE|H^NxX%d}kD041ejn=q^62`k0z%Q@Xp`)hgj7 zJ}_7Aa6i_nB$P1Ehzwl$Xrz?8f$etTq6ag)5dkH7*?U~8n#h4~n}Zp_gS5Y`?AbO2 zs9@%{uLtN~?T%Tmj|euM?!~_M0`uNsoS$Nqml0(Li4O)p!;@8qXyLuhE;7LCAv9RAP=Md9D++u)$%>6 zA}U{LDC+wOWeHT~5qJRdS;`ML`AK zSCvRqyEf|!e9liQlae3=ZaAWFX+?hajAT){xB(EwsU*Zo8WCv!6R+=bSqL{IC~1Vb zKTt}GY>eblhLbpdwDf2(L5VzO!WA8{1!Ec(h@>#5|4?-htEY(|Cx_CJMN>c2;d)p2 z6h&=0L{bqz`Bbr`k#1~0FPz9n&4MeaU$dh& z>5J%xW1tX<>;5xF^;ZHaZnu>Pu1b0+LY|RG#@vlAK4&~JeBp?iQ7S4pVFGN&%wNnA zacMI1N>C)Q^nTO{CEOxsHI-}&JYT4q(nxaDBb5@uUHXNuK&cP--Kpi zeCb5dh(6VXadWPLSmR!v^{0D|O8q0aHsH*-%t1Q)*EMOwRZxhl;%5mq;=nT_cmd>l zE&21W;_eFl)}Nh5OO`9YoG3?VZ59r@tSB!X$+5etM7&dS9=lmNn*+q<8qc;v&1s)_ zP_LL57OT(|$~ATKV}{e!x01(!s&yAs;Nrxr1dkJ&`+gjMDzf^<`0PuGE@IEU0EQgF zx^bMz9q00eYcqD5Dmz8@Ih`F{F{DEs5s&Chd_ceXn(2kwGc!NWV#@H@2^tv3aE@31 zi5WCu!prWlMXF&m_1@ic@PgpnMxpt=7xI^367cnR$$+9Y3&()vX4`l9x8XYk)R791 z7*PKExz7O~zc~Q!?F0p5?$bcURjMD9Cx8FWI=trdp%u-~abc^6KWbJ!vLM6xVGD^n zzk11F<0y;&c|d&7B;1}#_w@a=c#lE13%kkQ$T#US+F72iZUAGU(xW- ze|uK;(OqX-n=H}Ng3IMx99RjoCU56m53xt6P1-;)gK=({r*zciZ+9 zfo*RQmx_ohQX!v>m_X7- zzem1wV#k)ochf9h*&Fo^{y#rB;6 zBy_6>+-QpBt`_<`igi-+aV*s~KDi}5g1b|S7@mKH`Wkwd_dx0u0uK6J#C5wK= zfee}R{F0!<2$y0-N3vJ$v51E~2o2<5bRs|{F*CYF%KB5EXJhZKU!w_~Vj;55?>pY( z{;IH@ilE?5rg?Bk^-w1vuFn-7N_Zd$4oHze3_+w?!w{%C4TN1Wz)wkSNM8-^HmIrD z36~pC;^`|q=tIa!#c#H;+*OYX?h8S5$B3(?Y_=8%sHS5-zoh~29Uh6BR>TJqq@JiJ z91mPgtLRsU#s-fBA=OjLMk-__ofafA(uL5upAp|b_H&pWB`5hPO?i<3sOCiQLWiWMwBx@fhr=n!D~+&LS}@wFr7iCJ9W}z+lPp@%2C+SM z(+1xr<~Ju^_aiEcrVVT--|pXOIBF!?(t-RC{+Lr4OEm)tZ^U>oc?w6k=**zwJCEs< z6R`&(0c~IAMyWenC(N_lJ9IBML>^Eh=wE8y-=EQSso31V-6A~OY@iqEsRft2U1%`H z{3DX(^8|j1o?2fWd*?LI$}I3yFXWrluiG0;GAET!XDWi zUASIRhN4u7u!!LtVtVGLR)H*UwfMxi1n>NYw85%mL@ph|r*^jAeE!xw71i*nhida9 zjq}Ox1~hqj9E%M&=nZcDn8&26)FC3dxoI$bGJmi?TUk48I1#5N^Rl~9@nIvtWNXH_ z`gOC%>%slkNmbGKI7USZb2!QfnwkMG?5ewZy1uN@v9Vyg2`-Y)@wTG1wt)9Ol5d3h>33jfn7=maIY~<9&Q&ym?q$`c8wZFfx=Y|uwJOg8fC!M z5mUoXxbSY?Z*PG~ae$+40HC`fQfD-*9HU(dk^2$=pqe4yF*P>RT^{iYofKPs2c(RsXdFyI*?vHMEmRIqEVxi zVO%qN^O1=JTL83S0O866j}@l!i&OeO8?T)4uIW>RgG>}kL&zlu+o?QVMF(%@RMHYL zmB$mUVzsEk`g$R^*-9yj#48$AHgRv2D526Td5OqkV}c7$hCm>>xmm{I;|lPdXjC(7 z=?f*y^`9*0TJPp?vz_gR8vddEAE;@wS~U zsS#b%OG8D=#=g!~9FegPE*<6=46C2mtgvobVdpi^`bQ3HS>bIH&W3-$%Ui7}H)bla z0%`;2##akgEr@XoCMOI?u2;V--g|U)7ehF&>^AXTxw{Z{g8VIF3xTlnw}6s3ghaXZ zqjhY`2qKOE>y+RODt78+WdQyao*Pk0fPMTUto7IoVY0LM>9;YAl@Rzvc-U$w8<_i^}WwE{BKzxJ=;L(|jZ<>>t1jiz zpz_Gz&eS=?dW?<}>Ve+PaDYjq)ee6pLF54*qA3}h6Hg<#xvd=NA->`Z!0dEpzG zLJ^sI9}ijxRQE2*cucAO1R>Xs&*|dWTfS?2lO>xwR-!$sGV0rnV z>4gMh_&GmQlIz%;{danRFu{EU#)CqgeI5qD^sR`ILD%r|xCtA4HwR?UPE9jYVUrA? zHxpYUDGHq|h0<^d*UzWXt_|-x!(o=B8M=i~FDJ@up}g;YH{v^9X(mzHLAZ_+PG)&r zvp~it+=ArKq?Vxlc6op{DB^G%{xzcK&_V6^7UJYh$25TG$JOUZfsFN=G#%<+TP{9d zF#vRTl9#XXwB>S*Kse1SHs}a|gWhZ%lep_!gvS&(xF3`8+P-`vj-w;kKe+k8+Nl-e zjw?crp2f4tcWnb}p7?>QouLNcMM|@)z|^fg;jrzEMhqFJ@V|d4L!59=-$S zd{Y2Y<3kkxlnP(E5XaP@-wYtDbT@kVXg1X|rrVt+62M2|AvSfyFm&ALa1>o0`#3o3 z63m&P-~yKPvNZQff9#z36hSb84w^)&JGyhHd#N{XYN{UdmBmUA#Ys04k~bg0I8Ik8 z^L54CyRzadzMG#1(aF9(k(nc-Fq-ZI|w>it>K9`q*)5@X`5z z`G?03d`{icy*$fK?|ksG9}@Ho^0F)gIxr&K7JQz3^$Ak-@pJUyc07A*dHU!@ruSEG zOT05w$oYwSBtoO>2mv_v>54($Focnu0o{}Pd^Zx35CPlH4n}7y8k=?>Y6#bm?*dzW z_f z|K~3zQX#B9*`BfP=I1r+CSDrRIIWBhd6#<_XLIm2&d04?^_^TAND*; z=l3sF{ZM5?^ZzP~71+1ngrW`$v$3!6F2~|4PR(;X*x109oot-jAfR2B>Sw;Jz+I^3k zCX9$#?sf)a5i)3+6gTuDNVzS>Tej8)f4*6jURtsaO7Tf6;;4JHJ(aI$oWp)lw^Moo z$hDZbYS;?OAU`fFoT1!L*J0K^nrUl(G+0WWeVMN13=7d?0fZu3|(b(Hs zxue)x7-i6JR#)Y}D#5Jb1b-JO@F$e#*PGS9_acUMDsIFv-rrKSeXX7Xh?m2a(4`&1 zN8>gmM~)I8vf3he>Uni`EJ+62DcN$y&mZS1-PHkasn)|T^%4xz(6|k!(h4+gqiJ^= zjoaXKRGI!Ryc+DeUGWj^i~3I(QYRJF-I5fU0dn-4)xF){aU1m)_7&x&mG>(|kV@N? zwc9AsJ|OlC&8M20rTfU|23k>{Ubvg00|lxs{gZ%W_>DMq<4wgQa#NLF1L`B!`n(2W zB2~Qd-g#}Go1?V|zx?t=?UYu1Y1?o5^riiua2w08Fzg#0d9~LR(#cP7Ie18W3B>jf z`ar6#;2t3`>?f~4T1S?~$DG`mAu{&$tw-d7iM-4KEj)%+zKD8dXa`*eF(q|2*9e_E z#=6@bjn^vvab)&mqvYO9phu(?$ofZ1H}&kSL;)h0b#lYE@hw_M0u#ki9c?FQFJc^* z7}#C0Y0;^yrpY9!`tunYL;AZfYUPtmQEH+&A!`2o&C?(|cSpeW0|U$V#PiK-c!Czs zH%L?Gh}Ol49wIlBNbTI$KjRP@3`Slh0zL=rOaAZ+d{SwXx{Z!`bbj=mvjR1^1Xmy5r$jBytq$6M}d@AK72 z{_8)%a03f3&|o;aH^M&O4t@v2%`;s!j0K@EfcY4BYTcML2f+Z%d`wF5N_>HX5Pdp|9adJ*NQ_T0U}0H;spCtDzTPy`24Tlt=64r3OpWSHHEH;sC3bv1j|+uce3x5s%g z5}3EfqEO6F-p^&rbK%~?)6mI**XD~?tcgb=rX$Y2a$0%)!jPJs6jDu;tB8%FF{CF& zOuu7DvrdX(S``|`qqAvkC%-VH8gp51$&@%dDzr&TqI0jv9(jFtR;0cHhZCHZixFW# zE~DnT{fjEp;us9(8hR_9s%pY^>Eq4ZMFW{aa z-Pz1PnrURyr#z3j%oHe$Sa@}H`XczA{msYJi@n5LbVoo_Z76$80O)nCA2UyuZ=#IB zTN|L#^jzA_%Gadywsmf3PVLjd1&I-iG#?pKCunt z)@EO?JT0Z><&1pDdz2iMa?1LI^ULl2o_F*2m0Fw7ASTZg%6(XF_BG3VN6Aa3TM#qy}lffKF_CsILEZUduM z#d0IbBz9}p2eG~1?U)#RD`@x{y(elP^tCt!L z-|?IEnEaKF^Bd*#pV(2qirH@ljNjQ&adTr+U9!fO*EldMV^7fG6cN@>a^b&%@6heN zo`__6y14d>a{7y0sIo8_BQOZtFw>uKVu>|a@wJVYoE)}I5WEI##_$rnWHkQ9cA1c* zY4mzC`L-lATZ)FB@>YtjS=3gl*-g{UbgKx??F_qrDrO)5#?<~<%-#%O5@O$Y`!PQe z|30z+&R)4w7<+SXM<)sBHC*%$={WzIT!{KF$%W(0-xM3BRnR71A4$dEncBZhzG$X) zOP_)*pU5WW>xtZTL~@)s3eoU9gLdL3f7m&}$+#?r0?t?24!ZE$O_u~|6LNTu&L8P5 zi@+bYf%qj=`pJx44+r`#!_bsde%}Gv)5rh7)c%(y-#_3x=yV)>-2&`?GS*A^-+43s z;NC)_Iqf-d9!VrR9mlEN^zqMhoF;3Ut{Uquj|HvQq7sL;=kK*QP+E!a1M%J?1;oF} zfLA#@W{2f)3G(uZWoh}q>+E?#NZxqIFAQ5*K767d^CI7i>=dS3i0qb@z4BzO{0n>s zUjE^Ez)0)Y=jluhVV|A9>iNm6z8OX(e?NL9_KfO~jCcS0FTz~mjH1|2!kmne#cfpQ zOf}Z&&_%O)*i+w`Y7&cYUw&h1|14&XxhRi!97Z-N*B4d97+7jFD02H?>{wztr7MAC83~*&dMH`LV zWYogIht6P;nhP8278u&(dl>r>%zuA zS)en^|Ln#wG3+qzVdnf7@H>J5dr~nsmcc*cy%-w`%tz`=(C|A|f-rWZ?Rd8MPXW`< zAIx(C9t!qNusjI z1Si!P&exFRy{1uqR}Di=)k|QLFdS32|HwD!(YJ$xEu}Bcv@hDBHmP z>F?>iiw;$P16};Afxm$+{=-1`>1!7T9?wBH#iimw$O&EbK`-#vK=&KzJ8)W@a>Vv< z@X*FJagZ)Da9VKF-yA#)jrd7VMbPDve9F=UkK#26f!z2$($P*xo}2Se-NGZ{pH`sk zo9w$`t*;|X|T=FFft`t+5g#VsrCg1E{wLWgZ{-aig+5JYvh=4CHOT@EiCn9d(f#c;v@xyu+lJr9c zq8A<3ld_By$MnklKS|$zQdU23NYFX5TwCEklg+r?`;GJ+gYWbGq)I&K$3?nt(Dir5 zmLR3Jy=OlMx*i`ZzgD#ARdnwuu z!UbXrfR1W?G;a_7sDXJeOaV6vNocKmUj+dkGO2!71xM~A8Q~zKBoedbip7(I|B?*w zAN8W?|Id0c_nTf={?rS}$l)&9f2$Ys5C4T;eEv-@Z2qNQwC^@9|6kCHx^B#Wr5CJN z^vwT{^g@AkQno63PAg_87InoXKlL5Uyt2$*82P;AY>(U4_WN&O9H~s%LG~(FZ{zQz zpXz_>ndgmM{;6mF@9G6MrR$6gF5`vvU-SaqGvnR!1j|zSNWU1QaNj>1#>2Pe8zzsU zV@AXN?dV3Pcc=MA$tnU@IkA>7k0>cX-l!&x<4qAOC>(WegwrraDV5ZXT7nM1VLZ*2Strs7HU%+p!giL*E zR1G3~o*@!lM4`1&CPVzYUSv4F*IQp<=C)yDb$>45SeWpXa)%}Lp`=6Qi(8a?%rC!4 z+SgBAQ|v=uKa{d-`}&IF3)ATrDcfF>Ac_M<@<-A(qx`ZIM+hl?)8pANoF}UD#((O? z&jrvib;3|X8slQ`9!c8MUpX{ZqgtpRTyGOl*KB)tz%RZN=6iqV_-z4H0;R>I{J)|X z=$`r2ja7L%I6x`AIKi!&X82q5aFWOOz9`Mjs3+J$1DSshXqLN?hJlIxVgPV4Q25^| z|H8gxK=&TF|EBjqFO$m;=>N?!S!vkiXZ!jmyE)H*bkmY3_kT8j|F!qvQ*`$|UVk~( z{4X=D5iv5VanAOrL$W|3>7| za%pZr^OyIvx`h9`_LcIPV3^gD%ZuZH&PT|u>%RlrF*^$(LjnIpcwdY7f7!lrWNv-e zca&IPy%^6C+ENFJpa6XwQBSY+ck&VJqovf*==mGXZuWm;|66hZ7aGx=pYi81`5%)5 z{u}f6KN8-#b7bEdso(i6)9UYgk0h~4<)cP4yV<()wrPJ8(C42r4dWJ=RgOhnoHChzIIf$;leM%gB0uo{pkzZ2IS1_-M#J!&+uwJZQ(Z`E>g~t?M ztRKn{OL)dbvR-a}z85dyks4NfxxM>@SkgT=UB-X2Ow71VwXp1##i!>|P5!F2LqF4L zKmG~7onn?SbY%JN^ML`Cdx*}oLc?zZet4bClSn=}UF`FFa`x^;>yw|$9YOF1OdQ`;@l~l(rRk%???q+F*_r&coj^~o zKnyIjI?!OCer(LEt;#avqIT7W4;W=a%7AaL7DoU1`sv^1S^tacCs(TK;*lg4{mS15 z-ai%NkBwcg7snshPbsDCWp|cE|AtIq=Q)3oz3`B!%l~t;Pk~A z2&*^j&Xwzb*zA~TunkpOD#xyA`~qWU$7z?U zjE2Ov?oFywp@g4VBkfbz_fcPI?7j{ien4;R9*HK##!drg2gMm%CTzWG8a_;Y*y@CL zoN(v|V^TP+K9~^o`MI%k$_yp`GtZjq#Nel5K<|E)JD)^AZBC37IZD%Qlv$fh%wyP^ z8f~<<=08HG(;WE?0*aiSg5& z)Zrl9mkJ;#$xFfQT)8EQX}Y-Y$-`>4aw4kvgew?~@*VRBiLf$&9Xjn*WV26J2d4B< zE}B8aSw5LY16hU=nJJO;Uw5w5Ht#g#;vftW)FnkBP)B!)i48TJ6}L?L_hjz_u(=gQ zTg-GAFhk^-xqvOGomZL>svEO0xL7yl)xQ=21$fisM?HEPD)OVdrk?WfG1%lgq9QEP3`hARE5wB_Wx6|D-X z+#<^IBC!_8?Mg!U5Im0*TR?N{8q0rYuP!)Lj>GEYN?Y*ZJiI@jf%T(oW?TPf#q~wA z=@OuG6_)ZF(eHQaTPW3V6*^HHJ+esx^FMe2iH!Q6QP}*``;>9{$YY!zd$%+Nbl}%& z&XANqc^pTQVk$iRXL7{Qq-A;~JX{{Y8P9s;w{SQpuRgrsssy>KT>La)6ahSGlts~( zd*fV&C~BX#XTV{%7)Iu)cwoqNWhGh89tM$D{m3F+X6TbywQKCqPCAGCAq?M%KcZNL z`boVWv17QvvG6gUGyU4wk(IRw`j;m}n}|%xV5bl8y@$t0fX&}`sG&D@iCif44cTrJ zuxO<&ldJU46g>3C?(mNkJY090-l!r*JWjAY<-C#t&QlF+T8#jV%*Rg8BG(&Pp!2ZVF22MAZl6CT9gnlr~=&5 zz=la>xI}Urq0%*-b3}er#a`=6;EU|loOh5u zb?q3F7dh&eBw{nWN)PiBbMN%e7|c5(KXf1G0SY*7otvW6o?Zz*i5F25L77hK<|gM~ zcon;0AMwG>=8$+YYT|E}kgi@Vg=9BkOmG!u;9eDU>#)dEC9Zf^FA-*FoVrAtpo%9K zHjh9^g}jQlUbvm22qvVxtRIwMcRfV%|8|z#)VxyQxc~`cLl{nMGz66`|{%z_| z-Pr15-Wxc#Z@xF=3#AK-;Nzt1#661jS^HFizgsCcDM?yuR9s26yJujl@hmjf5PDw* zar&+jL}sz|+<}0eH*$jphYB zrlhg5(-`)lp9Mhqb>(5L>cii4wYOKN#1*BTL8VlhT36rzMyboyUAK_EyG)+j%d9SEM zzKx2>8}U6hso2eO#ROxn%P+P;E{Ir7i;YZQygda)8}eXPwcM^WKC%u0DOd>CF-0tG ze~PYQ60QVjB-E+#+!15VzejgdzVJt~qscesS8BvHci9PG={z`z-N5D-E;SGD2QYnl z3=2RVK9Gu6N&4_jHyiOW>kXgl( zO$KKi<4rQ(>Cxv*S{+fR{BV@&L-g78 zSwuZd`%XhBtj)P^=;8M`P?)g7A5&A6gWZe*7?Q9J6Md-aLWQ8AeBxpvzF{D&Fau~9 zWnx&^OelmIE_nfxLr`q6f{4yQdxo?Rjli@oshnp~n^$zIv#Zw3hERF5)l%g(@Ckb9Bf^ZyGb>d4W_$B~t$=lKVH)?QT;9mLS5^ z5me<1dhZsC5&*ROs!daQV1`72t?$pl*r(NEu|hm4XJSQr9G1%k`+`C9WuOpo@L>}; z$|U~4gzBp=UC%TD89;p91SC~v=5oU7u)}nYxP45KV40kNU6;UQ>ylzZ*OtMcwZl|a z&L(Pa-C52|dW0OZMq+1zI1sc{BTV4dLm|@}oROxdMWH;q^#~!rm(ho0CvW zU0HEN7yV+_CKRbGpUO;~X4A@Mu$wx!m}n~@;Y2NFpPBaXGEI9n4I7_>bC*>HBVDh> zo7g(dH%i>fG|uxpYE$jzdvQo|TIvtnSY75=`or5#mW*%&Gahed6z&*Vm$5Y*WEd4> zWJO7JEoK@R=;h#NCD|hMu;YF4sS%liDVN~#sPtV`g$^-P|6=&uhRAdrKNSygSyN(hkdl`(X z5WC}hGf)CDs}s*Eu7<}Iy(5v2*vNZ4pARxCu+`7^Q7Xu3dB(y*l#e9sQr8(0c(@cL zctQoFexoZ?DI{{gfUL)u zWK>AHt&sXg@k_isR{dg?Eb!!#&}}a8tt^oC+ee06H}&>FlA~Z~w2qFXkTF5&!ea3O zOzef`j)K-RO8}^z zvI1Pw4!ImEtg>h`xoY2Xa{V~G#B##A^804-fy!l|jdCJzxqdWRb{e#^)~}4ft7cEB zE=t^6ti*c>^fF7x5;uKO0usN-nmS#A!nhCV!Qs-)nDeb7koWD}V@*cJ)4HeA_k%r zIPETPdb+geO*9Z$8}P#pmvs^V{!1CH12E%@=e`J!;1F=6t(r=k!zi@W4Zem3K@0H) zyN*kAE+h~6rUvMPi%MF{NSlX8DmVeDBJ>exY_0X7#i-q@b-}fwc_!Gd1Pm~!V@D`p zK^OY^rH-AqmP@pr?>lG$3ei11tmAL57bC@?G6XU&*55i5OFa{))CiP))1cJept9JY zcGI9i+NdSksAJgp)Ta@%8y!2ck!-WZ?Xb~|w8=uW$;z_$7}} zCb=aRMB@uPk(2TvuD5--Ab25e(!rXPB*moFg1D%iC1Tc# z0_R5vWzd6XZiq3UNF+<>oxT0|-be5E*K}uDfwZ!~omu?_N$f~C?fH?;gYx(A)OtT} zbQ*3je5Z7}&ajE1h!$^%7ACP)mAllfwJupH??r)JsVuazU7GY-a7&$-jvq#21ipo+ zW4>x1v(be*qjem z>nZlc!1AuW34k|Hw$+3Z%JA zRY;IJQtqp{LGq;E7Z}GtV8YEJB1<4>qc6)}*fFZg|D^nTpHBZPpz5p9E1z+!JaO;Z z(Suw3ogd@7j-w;DV@G69b{r?RDs%}`hwm`DuWrYVM@NpuCgGQLxbW?c9LM$?$5qb8 z5c4LKttW6Xr?B5oZ2L~hTTdQUOdV8=kz$Unjp`i70?Ab;F^!EV$HdNJaqn1gZ%Jp0 zM?O&WU+VB0w~+@;DL2j_9T|3Y_|k%A63~NBG-owDfX(QBTcWd)&u3NN&4^%jZp6%N z8-C)y3*uy-SrDCtjjZ|DDYt#v(&^_2k3QAPe$v96;}r&Rvb!|C!2!s(pAyi%MQ)3V zY3&aAyj%Mj7xWon{j=-cXA$C77vuR*_WH6I5I-|8rV=Di+uB0f;RZL4aWsd+Eyo_| zEH^eQBe%d-+X6hYEFoJcu9yQHS-xe*iOlZMvKXv*PhWNSMH^?)FEj-U|1Yy(L>O57 zpS?r>4Oq;8alx6Tm_+l>lby%|r~jDjppmm^ll=oMeqgcGM-tgk9>8L~dWU5P?J~&} zqhDZgh5kE}(znLH$#5CH<9FLf-H zKhBfxZW=z#pC0JffM0Z6kjmL03o_KflaY=mF8nC1F<5M-UmS>+tF#HKoeIDM=gkEZ z*(iYc@Era(CLBt=TQ>e7C;gMFW1}&bLX$-(2N!Rt}9VRsJMWOxmT}hd+RGgpnpmq1% zcO406&G!SjpPl6g9j9}!BDBk|<-Zr9U9c+ux$TqIx0?a;PmR+mOLin4j#J_kf9>%z zQ0zG#fv-h48RdhyFuIokp<`nt$uX0>V#+_=aTWqlF5?EUFzfr2*;lWU z_at<9Wj@X6OK)#ZqD1wMNDLsJ@yV#rBJpV$8-5ay>zTwCe5xgVGO>hx<$5kLQ3zGV zn|V>bbs-sIi=QP^y^VCP@fFSLLRtL$<;%5qsr8qo;u;229fb{&mSO;j)iXRX^$Uz1?1-0>EZMvY0BW9|l@thLT=_i8 zB2Ui(c$+)4ISjqqT#qG$9DSND40ncF3VI)iPm^ITIV8N=ShtfzVYMAJ zp-JP)rUB%&I^^K)8}sBs?tlHGiiZ4A3X^!B%z@QWblhvRp4rHc-zGQXY#le{J0oda z=BFa?^EQ?|GNJ6VIDQ0W(Q(uO7QPlpk-5E+5??ftozR~hD z3(8&%8q?U>C{C{4u0o+{amyR@JOTTmrv$d%RleGUmYM8&(@CoJ9rO*3SE4j4>_i*G zMb~QbTqb+R8G}mz9>k3}C177#uURAukVYj)rZ*G*$eQOQR5b{YNbA4!&bF;}G{_N1 z`xT%>-2aW#h>DH^1C?I=bPxs>CsTd8l^6dx1fB5rrpviGWqcE>D8}r-nhXC47mWKl zQ`8J8@6!TEY8X6Ku80_d5S0by-7APUDaxn9WLBW2(TWa_B=gqaRShf=5^9@eABg%U zVWp&9w6yuIJCT_#8ENWppU;@(eWWZgOZHowvl4|OfMoKp&UeR@Vr*^)?cy&JMenNh zPYcVQzTyFtJ3Wy-uu>3&f^?QDXH>UU6!kv9z+#83ET_0~qaCHs(^idD^h(>!Yu6uC z#F=qu)>%!S(9L%%q0~?_SD337&i9L;)Kb}3Sjy5Z46&fpQI=L%KQ3Gtvni?H!<849 zFJYf7Q?Fj;skGfL`0^>gxUmWo+tKnSdjUFq-lS{A?Bqim_gcoXnJS6JIbu{dBYM~y<{?(|G^AKZ#@-`pvMW*jXTD{zu!2dF?^?}+ z9dF}mdF38Yc@9Wc5sC#lu2A{dbUE|ZC9w+bB?di+ELjNS-cwe9REXx8~=h7S#?*6^m;N< zts$RqY*$Y7dI}QXP{;_I?7(EW3HJlJ(yrK)twc7}pa=sw7Ke(cYkr+0^D=Is*5<}a zvM6okQdS4~ZAkPRx>dQDwbyD2$4k42d$@;P6iwDhMQBoD2xaFRg2Bq!UU z41B}ij!G(9`gE_RXlo>hV|4wkN_``FA^D^b314hnV-Q62**60ARUE<>1N#P4yC0h+ z?-4QiN$6Miodii^-dDId4m-^3-+ciJ3JE?wLWHQtwrX!U3j)|i%D_naT5SmSuFXHo4 z&BZ-PuN*u=Iylp>2B}NFqf8|(m^k793L1_OAShphL%E|`F)Mx`*oV>X$en9ou;Im0 zZqH&)p9Qrn5V#1oFXkK{B#Yy1MJ8J7--ita+a$n;XOKn z!}!msfIkz7@(J_e(Xd*C|95aeUiy3`3ly*$;m;1~^Q1bVeYB7f2 zN*nJ*VdWlO;XwR9y;NUvW(>g4Y~&H9x-I!62IYJeVpsZ+WFph1SZ3U>{jUYsH%@o8 zY$nplu&+sA*%D1t)C3rsol;U$tdTb`RhJ2+*tm(`nRCuuL8L;W5dLi_GahR zx?cryzp^Fe=gSfw0- =%OO!Cx8`J&8I=Anz0y(N5a|Stg-vv6}xYTYWF+v&D*7>4)8ml@1 z?ajZkB?Bu?K617QpP&8*S8Mv*>F}!0{;)axjgw2q_08qUcXiY8PR9$~?r=#8VCr2j;N}l+$dsRLvZ{ik_Q6AzOam zT`8eU2dqHOBu-2}S2sebX`)(}J(?h66&93qSD+}|Z@)V|Ie56weCpUYh*I;I*kgtL ziWACzrs5nK!noScCC;#*B%4c27g%^z?qgUlyX?gD=20)7KSrHwkt^NtKwcWG-I;d6 zlSh`#Co9v2#EY$Z6nCfMWE}G;jFXc@F{ZG+DrG&LQeY&vPW#2xI+UXQVq5-F+8FSh z@{Qhm+Gi#zHZtyVTI#cCa)^~@?(;8E?$nqTWQu{{=cG^_C(l+TD^p>m(>Nd=w1KBt zk_&KJ(=_D|_`cx+l~xdTiQX*bGz9d;)Z+SiVpO=zKKBkTL7NRPj?*!O5Sw&!fbdaD z;e7HY)n1~>O$_Ej*a(L>CL59WIe;;4v?dyRC_#$tGA)FBaqU_0oNa*9l?{J2F2T#lb^KK<-iWmASagR75SM<2E5 zmRdV=`BJNA&gdEd*-RxgDaDf0990c465x(GZIJ z-eTk+Wc`U~rm9&D?#@nGqr?^bwP>8EA)DiR;?1hnzN+&(No%JI7#ww8XYT5Q$aD1(ThL%PPAJwf_v(>lk0;ITYnauZmfwgcVlQH4SQWhcOJcol5!!a*Uc{AAuU@+{;h&FHTRN9R zjJ9Z~FYy&vZp&BU-=JWlfDmLwy0H*wwWW@FA|14(*JsEILN+LsK0x`BocP>A6 z*w2DVazR)(dR6iQ3Mm(xh)+uLspKakMfr@<`j1Bm9DI46zN>&R*XKz;$sN>KwC;#e zDTi`AKQPsI_=GPanmkGdC-tHsH#n-xgY_T|L!OssxAeVqfkjZT>}Q;r=)>7@)S(~W zPP51vUxdOz?YfQ6Eaw0mE-+E1Ocry9c@5iHv*)`8J*%u7yzj-6DBNVmcF{Q{`36*; zb4nroVrk>5X`hK)wKC_`lG!x+`CeM%O?q)|p@cQUH?n}9 z7?A3cn{H-a`oe}myqVZfpVG^5M%UOl+QOewnUPC*$q;++=2%^~g#kfAYQ1tN4FpA* z_dd}p%*y}gb0fBJrW{Dz5YrD7#cPQs(0A8M%k9%HE=O@hvM`3&GeGOWxH`v7R`bVm zq9gRZA$Z@orKD3Z@vTH|x3y-c^p!*AXDh-Jj}u8s>d!lqkrorKImXa4GB6qx{F?VR zg3&7cjbMOmu%Yi6VWF^p>C>BK%9L>Jw|my(fy+z$xXzlhb0?i^&(pU;)qI0PbTF z?+xo#c%(-y_%6Mur;}*evUUq7{2!hIRk@_$b^J)C;82e=JH9gbArmCYfo6j3h}K2L zih$3;@ZnQ{{6Jlk)9VO8KUNdON`dM;q2t0^c>Cv<2Yof?& zNH@p$fI)sdYw;Rx7TrlZf?9(;U91y9Vo5s?q9=?{Vd)7B)#pXFmjY@$LI~NWgF1&G zA7Ql@X!sBYp6Ut@BLo_RNqTyE!ox`i=m9Gs^cz$hpSZ(9h=OC7XyTxkk!CJIkjpTL zUQ}8JC`l;N@-lK;&}4v0Y~*tQ&eW6K3}6>^a5~_{{7E1$J?MOg6jnAh*c_QXZ``i! zU^t2B$^?SI&W!a@2%AB#v}2YUg`{@zi+ExT`7q$6V>e{!%>glPbcpCDFH7{IG6AwM z8T6&_4N)K|A{mNsYWh4DLS(A$dgAIa#J=0~+9l4& z9`vZ5cWM`ZH3MkY>OVAdjM=`Z_(a7d07GUGq?U=x;^s1?J zAA6u-sd1#DQv`8F+j^>HXnH#wntg4GRV~x01`UEO@CyW_TuH-6LA>C}3X!P-Te7%Y}Bk%W%}1AbODC9xnDRGpMQ* z*zP4?H-vxOl>r526KEzRL;({ufK6BU+mF%>VK5DphT%0lLk$l*nm$nOQjzHdpR_^r zEf0u(`i+qup&wHiereTZTdEG^~0F0R1?EA#+F1F7tQ60IOKv@BCyXT&e~T8ae0mqZg<`6%4^ zU~^eOBFgY|7VcD<=xOqIMNq?25MdP1jfxh09Zi~tfkI~k&jMtBP0_PUq^k%rOG@*n z1s-J*2$j+`9nu-@rD6?B8^Q(0X%xzD=7{1J>DCHObr;~Cs5zGbPlO7IxZi=Nc)}Th zD%Y>gW)b*$-Wh1-*lU_(yYPSACcpE1@f~_0CpSqGY~bZ>UhG(sb6Ei zL1QALE<-wh2S-@Zl^?%0B+Ciw{fH)iKMeX1T@f!-Yyp<3d(FG>y4)08xmarhs13jm z@zqF__>CSPeO?x$)?E$JJ<*qb_6C*F6=y8rM^}tth7VtzP81MpShl6yj#ohPF zJ#qAH5KBnGSO?MMD@wF$4#1ZLwM5)S_O(b8QTWXpgtqyKy5`7SS~Zs4sN87seGq(1 zL&C!{&~Y29u4JtUA)dEZl2K4KA#^H6-&|a#g(9|yK!d7k12$RjtJyxPSu&890jVg{ZlN_g>ooEmH|U{D87$HeEH;|-A^@f9yP9b4yMV0*SmxjP zd+I8ArEIUgfWj$U6JdGQ3t8rW2{SvY%?sV!8~crjp3{M z-gX7wu7vx$IoYJ zL;qwHUk+M7%%4Mdyks>#Tf`q->=?P0{d)NUZIlYh$QcFp?tIa4IES@9Sq!{&#=ebs zz9?H?1Da`P1R+Q9eN$TY>1K0BELiJiaP+4i1w}35Q~n_G6^*=Kgt4&%@1wJg-ry6H z1=3P?C*fh*u45x~5b*x+mq8$v#gJMw1kPvTm$CL;PhrxEMQMW)sLA4=EHxu(HmBu+ zV%mGkqJgBha^@A(`egBkYf83R)b_WLa0q>dvmY^!KZfk0cWIZJ&-Q%=^;%$%@Za+5 ze;lyZM73HU@G&0#r7|4onCN~g2CsThuC7h$;YfL-(q@Rs%-Jub>{CUf+&24bdHFZ8IXb#=>a}VM| zBK5-8op}}O1s*n%jC zXBY+fv_m(RU%HGYPoaM=>z~M?_;FM{=>w{b10meu7m3YsJO}0jTVA@bmMt=-P<1!3 zfb5?V{A8!Ryd(~M%tez8YS#dDWD}rfkuKatwA{&_ps(N^8Q0&Xcg?T$8n4)<_!CQ! zWxRheKn3gV11;1PIq^xy0;&41o_Z{H6oKHX zVQnb$7j=Q1!?~fGORRTyk?WIh<_9Z-5B%MofS&h}F82|O?{}V7$e-r!x%Q#kJZg9qQd510@zc3AR*e8olmOqDV$YAbd3;ag47*4=q|4u=&_r&)2F9AB|5(Dw|S6U9@d-a8vG5#5_nrQb(#@dzO&O2Qwp zEo+j;hXVHlsed?;@5m-%M^r~UUQt5j~G zO5)a<*cXP;g>RdO2&K4#U#nlODHwZ7r&*H!` z>uTGNs|iy{(dwr6iKo9C!fiU+02TTezFjTw6)j|62qXu~EUoCFyYzd#0CFp7gIWYU zdr&JpG0OQ-I}ZgqfoLE-;Fl1_&@X5`hnIL@flkS1`BWIiva5Aa>|`!>7ztFN{wzBl z=#3yoAtQhsDwE@fkE|zY^wYy$cA~)5W8~)zZmr8$wje$n=4dr=PW_`rqTm7)a*jN8 zN2uvncMNL}V8y9DM_s>T(e<+rxkur?-_F?|2Yx}ON3JD&Rk;yp@>*? zuulWFL#nrCouAB;4#!4iNYQgKlZu4`wF>Q~*1E$%nBKR5W161u3BIb^;-oF*j14o9 z6y|y})nK9iZ@0y6JLfoLvmU-QDT; zUhcf@Q-SG_b^Wn1Q(dm^|7U-r1Hz`lKNx*(zHX3nizEN0K3yu87img@t8o7RYU zTZ+Xn_+(cb`@<#sn~ z)(G`jtm_Ed^Ovs5QM=S`W9!GGCnM`C>)N^a9l1ZW0NyIiMd6bRo7*$o0&s(`}9iJ z#OLfx*DM6zUC$zh|6I>1`HA~NxRdp{zFk48yMaS_(@+vc-#L+4(64TcZiadx6W1y5mhMqrmHepG!)k!fAj~|;Oru%-KUCx*L-&ZF- ze1Op&$V_X2ztkxJhR7#^%L*xDA!p1AllH=u*6Riy#-4dWBu?`>ux^9YvX4m5rXD|Ul%zGSe5I}bV!zR*^cMI0vsLFW3fS^P3GVbEu*{1u{0bEgp@e>kjPUq}BsHmWuEFQPnO6|A9W+TMHIc|>_+CCO7 zM|bxUY4Vh8goKw`b6hqubm$kU_V?*mGdZ?MtLr74eeseX`Ocp2jilYrs%H|=HEUP* zR=FIs^{V;&?1Ez59zI=GyB&=shm~)S3QiF7O-i1Rp2pp4zmLMazJ|m$%&DcE!@J}> z$$1qNpd&bu8qz7WLQ3y1wO?=Jf2%Lc`QuFPs&3|n*{M)t2&*;+j2KCB|1E*l=R4X@ zA`7Au&4@s07qdVrg-k@WzF_C|RT+)19ZiYq+~hAw?;055wZaZ5<9yKQsq(>LvCewN z-xY;#&l}Vg>0Omdvud@7@Uf7eyFzm{9z!iW(+A;PA{dPZf&3x8k%!JSZiiBFO@~5J zbQ6vmT+-5IyA3wCmTs6{ScJ(6O*=-3v34p2<8&n-1-_0341^TGW}`Jx^nDR8Zx_%` zJo!SI`%s*Gsb^G}fZ+RHi0>#dGOkx65)Y4kjIY&XB$Hx6V@;Aw0Ublo$B(M#70GXP zqG_dDD-e>VZ6n3dsG0K-gx|WFq&r4pAmg;@wvAxqHf*<#&jZEIt#E2*>09KORcwpu zGDx2Fb0@;)^ECFEuc8Ziw|nU9SeP>aS8IIOGzqi7WS+FlLBVEWG8Z5Rv*yf}*+*fB zPmP<@v=^gr7|lfMEHC5UZ1ly77j#14DGguTAsiptIriNX7QW8g*tZt6s)rgi5-m(h zOm$kp1EF17m8H9cP?xDPD~veM-O5W579dHPO{&I~o&c(=%tn|F(-$4IN5%+)Qa6zdtDHV=QQ z8XiTSp59Osp=UnN;x!8>NnQwESK17gyZ9cn@%=+{xP`#NOH zYQmzPuI0~GK7X`wSgB&)fE9Duhi1SUtvk9A6e{$bXywb35X8BozIlfuKLZUzu?kWN z_5n4Yr3fgp6$L3VzqELr%|Y&#*cZ+r)lQ7$09Vd@@qg5)t3M8aM$DHC%+}GK5L{QSl-N)~SUnpNRcui`9sLI~dJA_o2 zF_~*9;f($;y6Jm5ixPcQ5M<$CbVK6)=E;eEYD%Q(#9%c-?ay?H=Z?I*?F*CfO%27W z`woUTU*^Y~nlwAUA%s;#O)~5^4X7TtzPVZ2RcmhhoNeO5Ta4L@jLCPLX<`_g2m6)~ zIu{;OsS$CE-NvgLHX}MAjlnI<`@44$jvt20zv;t5fwa?_kQyG+tl)i4&_g%GdVbFA zH({WpsdT3D&{}P?26zoWR_kNs;qKD<>;U|;yg}m|a^9&_F5Fq@%SDcj7AsLigt+nx#BVgIO8T#ow9oG?-yv%X zXilot1<#TQ+6=^VeN=-)rH&Fb3E?iIOz#DpW>a5l`(S(Upf*u%;dKILb3>vXdMS}M zus|Jc_bGAT!P0xLg5F9#qL9Q_FFgK?dM81JxE>^_e$pW9rw%Rj4$=_!ElBYDCLAI$ zy5n8;(jKDoMn|=B3(a@oM*h&4?Y2rt@$@}>oQDl%qT|cnDB}wWuW}| z@`dkLbn-GfPA`!G3B9rJhLjf~aKg9Y(lk+qyWjUcQQ~`O0`1W5_n*YW`*U=rwhw#4bEK@_${GPQPmXIL->vLsDo@D ze_fZL4A&!yq>H}HQ)Ngip^0XBcS#h(QKhFHO*Ut@87K6&$Em-V=oD<^w^OayBe&C{ zu8vaDjl!>RFp$Ei9=y;)CYTOQt#7ynTA2TgZ~uEQ^dB0rvb+A@z0kv71ucBe@?@V+f^Spx$F%`8@(X?v9%Q}er3R4t1?3#51DRHkR?B*~NI$;$I ze4PON9f<{;2KIXX&SVaaQz{*7z8??x_TzYJ2+rk7%D(8<8LP8P4VDq^D&?N*HkOzUk1xaR;Wc@} zt+u1hyW8XQu=iA7CUvVtAO8e8`T3d8bUya&28Q~TJ-cvcv0pA$;w)Jwv>LfM>}R*z zyX(P%`h?>uNp#K%dPGcb1Acj-$N35a;kIV)oq3x0;`W1}c58PG8L3EGFpU`7r=}n2 z;3G&?2-WPD6)BiT?D!iGLo7Oz98VVQ*iu%#m%++B80`MK|+#Q8dFsK4Bc~$B36M zvEFc&io=m|>ov91Fnrs1Rv`(dOcr!EQXu=OKqyiNNwC@)q<|wPl!&HF2<^k9!Q~m0 zY3qkj>le~8Dh??b{N{yb4(n0%cGZl#-O?VU9;ObfODP$hW!4^2QmU*=t?`{@wNzA= z9ji-gVVh+qq`|t{K2Ep$LeJI66KlRvlKhbllP8&(1c3*JJH*=53~F~C?goWsNluIv zw&Lr%ObQony%QQ3q8`(aFv+E5v;=@5lw~K`hq1+CJBkwzUg*owVsYDZ*LJ__lboXz zYDpBO$zYPxT!1Q*wn3s=n1~MNfL(;-Ko954<$m68UTDn<`l?@E=o^?B*{?5?_Pt3S zd^5g=Cywg2s9c=EqzH2z~5CVDFR>sCwtEp#my>9`NJ z42wsah2oGXn1>;v0SFDq?q}8`9tSbyM^GmTSwx6s+tEZZSCv@AP&qKcZngh~W!Tk2 zHbv*D{a@^C2kx<4=KtPk{7>xU??z*oQHkYS;UCNJpY;5HW+(R`lYLN@XBE}q^lAbd z7@^-imtVR)t7;xjDNh~9V!+^o$6VaxUEnH8dv_0zNvM1Lwn*pk;9S{*&5_im9#8e_ ze#_RzXSvp0fzN1ln1z3*=l|X22xBJ?y8(>*=KqH_i2>!h@h#_=@Vtn`4e`{7k(#pwQf&8heM@Kb~w}SYEN>mWTqwH z{E-5g7INTB3%Ww_oP&(OYl_0VHx%n<2`O4{(z{OH_Qq)T#Fj3JLL~RymBbhQAY0n;FegA1+$X^zuO7f7u>Scdlkp5QK^b6+ZROE>K z^Nr@;ZKWaG_p(_`M`rB-guD#1o=18AhquyS56eAad z;r_*~oq_6x@h@BHf1w=Uzr2+iEb``tqm>n#{kop0%wnpR3ec;)oPa>vaQHfz__rmh zhrg_dwlc^jRQ+;mOMbmpqwRyawcTylzE?Ol@tq_fPW(?rr?++j@c*%uMqc&S1bq-U znx@04mv`>}RvBIEUF#HU!bFi%>@xUuNXpe~xxw|=VKbI)Vwj6?sZN1&z_I=VZ-mat zm=AkzeTHyI!-=u@t>Xj0{o8=}_ZyAw^9O)Co4((G7De^5nYKtn#aY;6qe}C5RfoQT zSgZE-ah{TIa`WJeZ0NSsE%{F9l+nI zv{Ia)e}kI$Q(X6ZF(UN#at9Vj{fC^8DtC*q>n)@paD$o(9_Cp^;yDZwcBMjORG>wL z-Do)LsE`FqXfQcs$Ot!c0VA8;AR22T2ACKbo3{@C@5RXfC@L7u&b zGOfL`il#jWGno#rzuO!a7mIrcp0P#BP(0}S|7COhpSaimd|Eehg8e1_(gg7EBKmt` ziA>?Q#1f0qV9mOeIo99&8of_t>*y5CnTU}Mhmy9t(|*}_-L|_ec~PYB{jMzE1(<{ybARt;}xSM+nCCdc`Do0|M$;Tmc4J; z+XeO)G1ynzcV0L(uYQ2Ok|uIouO0c#z;LBCV4JvlAZiqxJ^(+zIucMlYLW(=}uNP6Lh;{j;!rcv68_s+pnj2RNiY%*lXm;$c7g0=l z_=gSesvzvel_oIA8PoP5clQmLL{VBi8K-4ax}9c3gKzfGhGP?JinYC!VfT)CT?dd> z3afT=8e&LYYi*@VcKKS$7%O~mwILc<_iab^r4rt59uI-YuEY$6)pq{F-BB|EZFZ+H z!)7mABHiIXs@?u_cl`ZDl!7i^a$r53Rld`iQMt0~%O}9A_ZEePerX{3c#P!RnMG!z zM&2K?!DzhumEAV1>BNYQc|g3-LmV`)(k((i!Ti0YvbrH)3n2}Oe;vdJT?zy>XWeRV zg7aS*!ty+*UWv`9U_{wA#AoHsx;pbQAR;VfI!;*)nUC6{B9}fuPLv@kAQAM@(vJbu zeIK9Lx9MCpuY;9<-D=4z{F= z@4}~E{wbk*J98jqSfQ)|L;`6}RtM7{_JU;|WkalipANBSp)n-p@e_k@Z>p!HGJwD&S zfxZ9QzzyZBO~0zw$>)dZvXjq#L-`*Dh7YOU*(BAs<3pSeHePwoJ6Ib|PNIaTLG@kP z>C*eViz09A`^y|T+0IoyjFfwfon}t@o64uz?KeL4R9e@l)GoRo5%=jp2QR1*@Ae|# zgR<5{&2bg`@ba6AR9LB56m-FedJrs)4N6RmZpq7t#9B-%T?9N_VxX&Jehn?%X$#2{ z8J^$(&q*qF+{iiPq?-JW8Y;}=Zi!u4;MHC4Gr-ZhEL2AWf=si8Cxfy6M$I#w=o&H7 zg*x;-fdY^&bJS9f4gf&nX-cQ3qUGt*CrG_yAlQCAmauHX^TDNF`f)OLB^oi7RmzDI4sgexD1`4e(!BCPej2ek*XpRLvb?4zKYqFp zWTxC8)=^QhOaCSAB|#E`Ih&OGu|Xo#$er81D8iB$ej;+vo#qr+A@%xN2>s06R{N?_ zE``)^9xb%isdT^%vu7!mN}zmx?BFGmR@LCaDfzdu%A$@^sSvjCfE9j6uoCG6x8xD! zAzIWBS{-gPcVQcHrXKDdL6W!5Q|jarM^g847J492(hquo3%Ny;k=lL)=25OQyHtOG z*(uelmxDwJbzx{ZN}B$j3lexV9G}ZD$#1@&97rf`e}m=bZ1J{yGkQwTx_k zH{7%N$CPVE#;D!-t`1x17T-ucbc{c{=8YxGj__h@il7ED=kOBlPGo& zbg~m(-}&7%dO0t)8%E2_@kTT?eTRwmlxppui>-ACf)_25MU|Th!d;UZcIdPg&RMqn zm3>}G)4MnE_(EvGdrt;-ySg14EBU8ci{Q)W+TAq;v`_`Dh!j3|rwzV%H7aNpz%rMH zS0{D(%vR`P<_q^-t?-W7X1JITX~y^*3lIOQ&~=|B8gupD>nw=&F8j>BPM89b9}wrl zIbD$ETZwl!ZsR$0_ z;oG?BQ=vwDqH5xENw*LUC4)kZTauS2`h;GK{=6I;=Cx>xwi4Uwx#^X=hqwlxHsMT; zt53#QC}Wh$m)>(Rj1%&lLI&#umF3MhU*4ywad!y6ubpH~MR*m~aNx}drF1Shm4;o>q=#{M3p!o<>{aJ&eVFCs?^oURp$KdDY;kxXV#+dG_yZZ;RZ^#Y>)_* zq_p7o?IHVpX0uqn)VoA#&k229ssK;|WgigL-vm2r#w~h~Jf3S?F*>=|J+y&>Y1=Fr zXI2ss=j4i#T_-w`KDZ$)C6}sNka>rY2c?NPG}x%z=jp+EhOY=+C)rVNyBE)H#cWgQ zBi=|vBCWfVRDYV{1Z60o@G->JIrd}$(DJll40yF}gqaSFY687aEW)MHUEo4AGIaNe zs99WMwRCy8j?VuQ-(%Bjr2EDA)GP4_V9T6fwhbahz9&_pSANn<1vvb*b?j0E&B3QY zyi36#51JrC-*f($G3fF>nkB0srndWzNMsS_dkiFv0Cw!D zQ2BIpP)5;05|R{n?i9zQ@8Z`Inx4+vihyi7fm@t2%+?633*!6IHK*Cqhb80|P-*>S z8Kot`i1Vxgk+fu`?2>K&M&QHC=I|W!V8(=S78H_WHjz%R95z-ey)6OJr6O6gf<08` zUz8Bv0+JjcvO!%>`%#$_b?+dMcf$)g9*OT5pt(2HTKJ1#>|c-{Ex9$px%3mcB#W99 ztzhC`k)LgHJ4lJWee+te^YP>J@N4p5SJ~r=`9SM@CVWD;|3jWgFkd8?<5|eimA-L8 z!L)Dzo_>L{e2&uRf|ZQ|T#Q0o&jMOV9#gBhT5HDSjzNppJ8en1L6QO^4UK6wnXf>S z>Z>e;Rx#Oh2FpmKp_<|5q19sz8T-~E_g_V&lSQOmrd7b=e5O0aC;2@y6XVUi8k<6h zC!zl{h9;6C9}RB5vSOwhs&I5bNjhc;5wzrLqGUz+eOO|NX-)B{k)f0j*wIWnA%Ma3 zM@e~bsYzZb)>`qWUJE4}i9C(6Cc82%SXng<&j+(|x`|S2SV%8(xu$&igu*ob!V^=XOi9I7B)O9^$1D07X_g-0b_DYXd2f;<7>#R zod^`ewWLV!^7122GRGh_d<|46$%Y`i2B7@gC%X@45!!oJ4z_=}HLne(cE$+RJTV+oY0;($X=1r2eXDhPgg`S6n~C(tlUyRIgd2p^5%wnv-ZV z18WPP@;k)GmaI&Mm@h54w5_qfKnFq13Cs=onXSEb&1GL&t6ZAjU2ARrY7N?ut>bRa zQ2jU=!Yh5+Y~HHbwn~7^jNHr>Q_9p_!X^0uYq*2g90}C-4vDhs6wIBdlOgR^qSOn+ zROyKtjxN-b=vVA3E)o_}9oSH6Y$3)JPwtKDHmj8O`+glXCe%rg_T}BS@7L`-B^`&E zw6o{^^6puN9-){~naUlr6Qc&Xo=jXbyf8p_*HY3j>|CCJFj7xZ_JU}JS zAC9g7KQX#H>wBiSKw@0Mej>fdrh%HXppY!^$Cra#BSz8EgY+1V*hK?a^85?Pp?C|3 zr4e|>eu%QGt(pgntQgAr86;=%w)KX%Y{c}=clK#yD3@-y&0<7K2~w#AmaZQHdKx>t z>~Z`&ECw?1vNy)D9-V6=pSLhsUmbZZY1}UX@ zC=ms(DcKt^K&B?}<;3Rev9)Lvef$JB5BOXQLNC(;TMA8*q^AYm0dTSDI zf@(*Kk-FlE*eF$A-c(lJRP)PmHm|x_?oVf5B+fr7U@T-N3z{ z*|hD+iQ;DfT{EWlXK}jN9#D#!@sc^le0mf!ttA6-ev|DGlcas0gZs46#%=cH=*+4n zxfdY^4n_z3QIgi^b0hgVqgV4GmUEH!=UCHY_tXJ?id6KNdb<>$$OW@N_zg;enuKyKCL9NI%dTjiWGrF|@&^EL zzxvysSo-iZ{hv52ywNDP^4og~$q_FMlcu$U014Q*Mkate+MMG~ zltiH_?+J#|l*X@yM{#=UlVWi?r1CRgLF2{mY!qve)G#NcVt($^NE-hg0C3K~$o1PP>T6ddF3!cja4sqQ(Pv*86AAxO zR$Gdn8dmWq*8a5xKM{m!O_hOPuY%kA_W!QY{3GZ1*Oel{OS!-0*+4ZcBqlc`VqK;nkEb-MBRc(z z|D@4$Ez#lnbKWL)J~ARQ{(1$bV1E}jm;8=LCojuPCgQ#hH_#EYUW+D~)ZhD=5DGNf zoj_4@@={JOzoCFA8-BneM5wCo)oWUYh?HqvB$Xo{tJO-Q762W>qWT{Ft`}Y2Vqaq? z{Ta~F%nGgqAQdpSeA;3lDYWAW=_3ZRW`$?6h1`vKASH2k!tOa0t>)h_UUri-<$^w$ zm3FZU)skBULW>S^4o3n_0Z~Xr3`r| zK4Ha^Q8~u^(){5&$(-AH^PFBF@_ac$*Y0BdljZNL@_1&dtM4Ik51Wi5hTmS+w%sL- zX=im&hnLR@wD)eAfhQE7Ki#9Lel#VO`$wJ)X3fui;*yKaKA#QvgTo3PVS%i(Wt7(!PRv93*wQF zSX8JM%D*lg#B(6%Sk9OSqx6Ixe9BkjaIYRj%*zR+MH7NJtlJ~#dQ9JAYq9el502cp zv4oeyY1udM=6D5?Ico|#t0{(UW>sSPw2FlILq_cHv@=o8MVGB=wI2-kpEd>+71Chm z>vpX&l$ewK<=HGu!Pm!8C{#xp`W(U+Uyw;}EYN%7+ht)bSgDT4qam;G?Q%{>i1~zs zG{Y~2b60+CbPBQY`VjTz0oo}9iThBuRBJroTU8aQ{K24PZHsMe;4xEcPE2bdJ&V1* znn6IORN?1B;~yn@B#KiRiz0$#Eu1>Ujg#f|NDW!H;V0o{O1@o5@8f6GR)H z%xTT5K2Dw}=x{C6eLzO9Z!}X8a8}N-!)4l^VMG>e2exT=r;tfTm&LIsTjb)wVQBH%V2mLwHceQJJeM0~?NY|lyv#>2YF>7yfT6V|{V9D3Puh$EjqS|=-T_{{f~ zINE%2Jygrc>P&k&dfX;zsP9rx>WO;Hojie|U^5qw`bgl>7}r1%vfuix{%K&Zq39 zgAAU!&)cn-G%W3H$NgH=cXggWHJY+4N-}GLlj}Km!)3)Yo+4Uk6zaaw9AwK13+*@u?efN35~Amu!g?X$tH4Lc zfn+(~7`n`?zl^Qb(H8DuNwlru@Lz=)K0Hp+Ra+H~Lw3@>Wklj3Lg5X5QFa@ruMgBF zjGqp4RMO8cp~%KO*kZ9_2$h@oS>*NTNxzzJo?&C0@4D!|UM23md{V%kasSj^m7}<@cb=bL4ze$K5oCW?-oD`K>!L@M1|#R$+wU(>&$quQij5{z{eK zr(YOuchIjcFBo1Ol-r$OJ3`L;U#(-=WUPyd+x1un3VwJA(-@G{*bZ^=4(Y@Si}enbDhYM(5j6t@6Q@F? zJwtf9LbNVJE!4uz(pVY)*^G&Oce;Cp$@1ULm^bXMc|HFJ^Wx2qfnwgX|FPB0Iexbi zrEohpR{EDC{okE}e>u|sJly@?f~2%xU;Kfj{57Hb2i^Jq15CBE`NxEA>p$k+!3af1 z__&=nJA4ymU?_w7$@#Z=vCp(x{=XdVcHXBsl>M6-v)4c5&w24b?=1dT?meN<@y}Lw z-o@9GxSF1_2-n)Rt3e*0%CsZ9+%E0)u{uw_s7n1g2bD0nF-&z{k8#&)OO7osF{9R> zKNhvQ_xkR7nRkb~4+0a)J}hzdBT~l@5*Vij};v{|CC0PE%UFzXJnweAmmo z(+P6?y_cD@g#E|PqLyBZ=zoOlEzO$$wblK1$o_2ZZ}q!>qdQ;By~!0{nyVCfKpY?P9(#ym!CMQ4aEe@;8$_E$-z}rlL0$W^)q)s_lI|zw}1v|8hEgst2<6@~i z%l8s^+H$Mxb>esm4a(f)sm8vO5W#rzNSa3Us2`&#Pg{Dye8*(p z)a`1tizdhT5-mmE&BhOF$uexHrJm~a2$5IT{eO&Q{}+z^5oh@D4+-c|ukPdq(`TSI z?XnD(W%N-$MtH3~kj5D#WVZtzjd`VoU{3B$@pJz?7Ii{ zS)Gq&zxwiPZ}hIm%6lUP)LalPyWiUAeLnCS{2eRYGV+2w$>6~7Zls>3OQgS*jHZ^@ zi1y<7B`b76?Y}YbCbo60yy+hg?33p#&|6Qw<=^Uxr2CCh6r-I3DMYJ>nAapX&xiO| zz6jd~Y*dVoT|3;QPSSqC-_iTQ_u?!#J4fpBqkkM^``dTchiY5J&&{tX?ijLfY+bUS zT+aWeiTIRETJrS4B5oiNAe=JSA5ZV8CD!UG?9pKQRz{D;A9M401G_=7(x62 zqpl|k;0e!@U?RDC)XO@ig3uY!B<1Y>$ngv}(zt$@tZv}*eYct@Dq!=ujv8b#!R z!UYz6mq?Ma8rIL^QM4<6T5viOeuEIle7&Q&l<5LqN~o-FR*q0cPy{$7)%SEpc41$tlo z!Rpfxi~9fc8`k}@zv;u%4o7q=soKHQwH^=wyHd0t)V2o!6`R%k`%1~O^QS1G*}J&CU+Vnvbmw0;N}i$ZZ&J_juAhoFjn~QaZ|&2| z1Pp!Q<>|kDDsce#6o_6~wv<-f-|FX9B7XSh`eJ{h=N*@w_h%e`LTdK*nzbhR zvdZCP%!+ysug0xrC3e2ac4Yf+{-NXE%4Ez7K{;A8v9LQrf=@S7@n?Vu8Lpea?|(pQ z92PuJ$k^^WC0yX7l_gGat}k$iB#n7cBIh0N&6KXf+bwv80?LUcRs|vS;)n8SMJr0C zivAB#f|R@dEGa-cA1t}eLTy*U^gabC0Db)9y>eb~Kyi^SoBwhFb9Of}!a3QNv%wjW zU#3!^j1#V)7~X4_(}_QgU%6d0Z2JLS4Fj`bwvg%|Pl!}X<;LfabqVny7^CFqZE%&G zQfSdZ=_buJaSWxlB3Tk>xAlGr0cWsYg7sUr3OR2lI~9dCp6M832KLhtStSm`V_CNw zTar#_7>}OeZ;wfRh5PJwbv%@w)7S%m(cJBWt)?E-{tmt3zGzil+)PO}TdzHx#|^>{Q6f{nV8XWV!+#Tn>WkcjeVymsm8xsRoN>RD zbx_N$?Rb25V;5x0&cdr0pviEmDoU!UbOBU0;`#QK_TfH?6pyM< z3^#3pnd@yxIO_LW6WfbDhOAsX=x_Oo17{^YEJHQ!V5@jv5!f5hU0x5ZrYr-?)rBsU zzavR)P71WsV<|KTgni8`@~P&9qUr|dzJ0H~OLIO0?qsXb`S3&u>_}bfX{Pd#O4VIr znxmP13-6B$Pri4?1kI?||QBuI~_M|$JBIintS@LC>slBp@HJu(b4{r2KsVQZ);ip|zP@f<^bL1R{E>#v- zbpf0ojvV-KU(XbN43OYVKoz(euBH=0CL?`MAH3;y!VJ1+7=rP(CJW%KL_wgS7*Jo} zL7|nc@QuActoNDK58$q;2|=--1t0X86SD%znu0lcKAIHa63kz64>$E0Ha<1=DvJgZ z+4%&9&prH=>UC~g)e?X85h(yPjTA>i_TV860|2)!{+&$}akmq6$TeBqa%TV4dbvDd zpFqTcJ_c?#3N}iA9WTgp&LAf0hw zEA^wmHn%^t_%Wzx_5QqDeL#y*nhefsQ(QR$gL(rb!ayXoI0B&~#LQcHjcjXq-VF-4 zI6MLfv>@)i(p<(wJq6_otqMbQ2zUdSj@EOC5|x9J8I0NtxLR)6n3q0tc|8^W;neBo z{rmgRME^yU&@{T|&Oe&l18Qpi%sb+l`ATiF%S58LYv1Q%=F%j>SM%f1e!!Q^rBjLs z`6C(kp#k${LuL3!`Smhy+O`$U=VFQ}dwby~4svpl&Ase=N8OTNqbbLm`^3hMVqe{C zFtQ_p*p!bFQrl#@(7QfEiep|#vf>PZIHzGO;i3%Utu0Y@f-&Em6OP!b?{XJc9R4~l zvhnV3vv3AXB))x-BW$@N5g0J#!uPU-V2Q~%?w4B1!;`94x4TxvALsjZ&a1o;nrD65whwd-8hwvu&8n^I8@9-%$ zI;id2gpfZ{tK+!dD|sY+-mgD12{)HmW_z3|011D1`a`nlyGh&-N!?(k)FYW)N3{Ne zt=DG#I18aEBMA*p?*(N##-Sr4c%8ZT5|D>+Ol|Xe6K#7%38Yhu-En{{JiM6ik2->) zA=|QnEU53dXw{(cl-+msM@c&wR|~=CKYOyTKR+Fia9DlAVi9`7JSb1J%mzL}_n@C2 z3Hug7f{Li11@vJPxD&<{yX+){0we>ZO7+%OgxhbWA7I@pq41~!cUnQtFCa|MUU0!e^NJSW0qMQ76Hf=fqGeVOeoZEHx6P za|H`S%nviJ6l#VBhmdRqiaV0aQ&65W0W5w-L|w$j&q0Fgp!B3uP*%+px}`)gfeWps zXghpHnTMq706i_{)FI*OJZ3+2Rmz{R*px#P7qR&08CFzV{v)oG_Wxs z5G@cl!cLOT0ZtT%#fQPsL9tnR0px#6Qs*t?C(e zOv8mpl%DZ%JmOT?;beldsc`zLrYEVjBxxYPA$QRBV-A{R@LoTyqi-?`RkGQj&tr9p z&{SXZyX3A!iroVBUK54Ow7-2zO3q1=TbDk;%NSQ`FApH?Gk@kmPilN`A8&oakU~8^ zq150OrECw%e33M`Ge_SsXUjdxQe+yElN)kO4Z%!eh$l!(PtRCLLwBZw)>7iBGkj0e zXfKIv(Doc}VoFUOn8g*9?fo`y6I>n4S34t61We~VeE@@ajg?e3;8ojPjRi6of@?Pzr|{ajA0}*+Y4V1Q%&eM>B-BGI(>SKAi-3gLTkMiJ z5rx07DrWM60`EnP*I**!Q2|Ka6~8MYGB3E?6XJbHC!_9`=J68mJ%sZYM6MJ3vIT5n z;@j;HiGhO`c5?BLa47V#(Tte-CE%A@Jivvb6KF zM(Ys^ZHdFq=%Na+^E^RH2E+?kPH8`6OZ!BNxZbx4xe6r`+NuFYMHQ>du%qg5Ocrqu zJg~|a#nC8`a3fgb@V-6`X1=7+nSi3K8Zb|f$Xl)`?gtjD05GqUK%+B4=$vj8DPOQC zi%=7pGL6vC6Z@VZ|BU4Es;5#TlkMiApaYntjj{X*Qr^L;Y)KN>zbgAdU#|3r8^9jI zv|7X{sD^(EfqT5%vV$0wfL%Jlr-Kx;0>oaC6k=syX;cZOehq;>)?J+ua}BTNSiu2> zuaprDfK&km6%967o-iurspo+1j^D+PE6k0gjXm z9@uPxUCi~w9E-49kCpN_pyqmT;cqU=r}gHm?=kZ*IiiF=e-?CYHslN_CeY8aJ1U|) zk}G%t*{puMkCLOvyXW{3jKK{S6(BKT!9{0Kcdy1hS%_#i6XF*!vSlM_H-1WwTXDx1 zED77>9Vv5SnE|1;_q-#^OTY+H?mG!jkf>s}oD~5^Q3VG$n8Q|E4!|mmSJ_EGQLSLW z1$KRDO+Eebkp|%2NfQ90we^eS2zNyd+QyP99{d)C{aXO{ZO}*Uux5aM*3T$z02H^F z6HM@mGWr^F0A}IiBDuIG#_lYp^t|^j9sC_kNs26B@sw4-LO!Vnv%P|pT@ouWgVyf} zuQSR>=0+ByWZrj+qVz)U-u`!xDsKt*V`fReX7E(Gka7wbDJ(ZiQP0!nQi>ta$Y!oo z=PDBkHu>Vvy(p<6fGdm7Q7k0K2r?$g68fFXjVs|+k)8#D=^Y}#hhHeJqQVG{s-bJS zj~Pjb@H+{tn;niY0kBSfWC6gHDZ3eLvdSNlFGls4TIeeUh{wmkB4>Y9m=K!IhWWhm#iR74tY|5@7;Mx$y8m+P?uLj=zGIBm0)&e zk?e92L2?70ru>CAg(?!-(mVy4E)J4m3bG6o&@#9KyP|@a zu=w$b>FI8Fop$%*uBkN$a#LYu*ON=ToomaJi@w&~^v$&D?ew>``&HdjKiTN@D`z&2 z=xTxmwC^K#AbeK0(|Z&wrw&uU&gb6pdYHw;JIZ*N$IN<4a~hpN$`j`8-KGF*=D?a+ zAIs_F>=|Swm$oI50WbYaH^}MiT)?HImG=CPnt7ljm%uGE#RZ*TCA|wFPxT(1fEzuM zcLB~jZ}Vn8(QTnbMlexnK2h5mK+3&h{kAy>+=e8qxORdHD~+<5;IBc|dqRsR2|Ml) zzE}Q&DbLe}W}GFl;PP@ad)ol+?S{00S>$==!GsmZJuGAu^7gR2ZaLl^w}mld({;TS z))KSc?!2U>rLbhe{(FQAohwY9tN8j5AuJw?nTLFJD+(d;C`M3Y^~x5Z(Rw?$Oc@Mr zpZp@;c!W~C+}+||FGo}r<>5$EgiWa{qY85G8LQN2v^ReRJ4Pl7nFz>%zuB2@u8T` zBdX#`niUxDr3I1K)f&^y)-!iV^*3URiN{2h-AiYO31Kkg>aCG;R};a} zhBi7@*8SnSM0#k1}Knoi&_AewZA66L{+X59DO_4ynzN558mWH=JmrrUqnwZO22V>U_WU+dDI zIPb0>8rcSRvGAe)MU+(?imA%;Dd+Cf{@CiEFdJ|fj=ewE3l0fUN>2ulD0VP#3%9O2 zY?%g+J>*nN}{2(^Vx`=mgY{uT=#z`x)uK1Ba z9w?-DrlLWi@+rhL)2)mW|I^#=aVcLZ_#-{$F*d;$S|6|_1&&T`gpFsh0R>FXwcx%J zVpl&b3ISYRZ;${=vaJ*N7Hrv_DIO$?i$Y0mQQ-jTYofh(xLD|=VbrDZ%-(4wAFoC7wrrY>PH<|WB(;GMy<++ z0?GO8=22^ka0shTq3OiBay02@#PIyYhAI-O9Lw_f*jh4pNvq0kVRBP5P0)U<@bT1^ zb{2SL^V`DIoyb@UM#O41?WE?Un#^avm}K1&*qx>G-fYI99d_}%p>AZ?guih>jU~H5!JGRT4>2H#cc_xZUR4%ACC^P z@-7Pu|Kad-<+lf{c<-Q}^Bp?yo@W`KT=l?Je-><&xf=S3;svTMTl^KO!iDXHngW6F zv`0@e7nzzo5#A4#6tL!L(9ncW5!Z0EgH>9RqnB(Q>Y;O3_~$ zcHFR95bLMl!|3`VQ0Qw<6;IS_j^SWN;S$|7J5NFQYzhwtDlF$JA`$%JvN)VtHd|vx z<9etkR~zzUaxUE%{G2>qi@c=aF;46BV8{R&2Ry7wPZ6q6a?7q2tO4GRWPEFohzcx` zYvh(C($JU*+m=uneYtBdTFCT{u0&oxmjy7sSYfcM@U%^;MBW&Wrg8Z_l^aKr8;(#S zXnAeg zt4264=naJ=Q$T&buTw&|T)<8mcX_&V2_cQgHagc@GNYY3CN{t&7^T&mT}IBd%U3%b zF1V765_K+U9bg;y30qyRa&5v}ADISp&1U8n9+E`u*5zoz-$h9OL@;ww2PX)#$lxwK z2$ZIP3k7lrZ+p(w=7Ub6m`v2TSrpOiUPy^|u3m$L8uyu}>byo*W=Vx^)q+8@?k~fn zFD@j<@g}nwWq_^6xy2X^>W6X0)4Qsu`;$b2nM^qy%JRc~BBm>r-}x*b?K@pfX^{?{A9OvvnQPMx%%HWhD-uPhgU0=s z5qJtpIHccZs@NLx;x^Zl!3RJsreX`dk6&qOYH*}) zsN1WwYjcGmYqkhpFbm;NfIC>BIgskkLq=<<$OItiy~W~ZDWptdV|^Hs1_f*ejo?EQ z>Y`kAqRhz*6=Rjb$q(`c2qDVyk(*J(?!;^mQngNj{8~YpUdn0A9?GcswD6Lj3^05O z`ClCI>bYFXKCcHMDcwEs_w>mbf2m1587K`AA9=gOLoMhUgWV+gmQRtqDV%Z#=o2;C%RZH#JZ%8W9 zX}mEoeO^|YwJNaM%OK@sm^lhvtQbNy$;^8KVA8A|K(g!y<2ujDa^bx1?Xc)`LIapoQ1;bLg@VursAW2Fg`$}oPsWGh zgh|uy`GPC@Fs)ePKPkbr(>>~#mq7?7YUlX1lHPb?^)<=l=4xX)tSE=of$A**6|o_m z7--&;-SuGb%S{i)`Ct9deU1k>xX4m?9snG*N<+Muo|)puyz9Vygpvm1Yv*}#%6I09 z?sC>JA|T;%=)78wn_-jCpOI?93X}0cb<7SwRCFHuRVS;xCzJ|C%r@G#Dsk>t&0zyC z+vW-qZpK+pTeGcj@@vs?!AVdV@o{zD`~-JE9ox?JJcZ2lW0Y4-SaoI=h5Wi~M%p>! z9ME!;hp8udwfObhFcmx2j|@FPY&g1_N4e03+VNPJEvunyH`gigeI!eZv^*DXgpCBt zeR6}wc3y>q>a3;nS*G=9b%{1}VKU3`YMAvG?T%MZNJ!OysZdQrrV`Ob%svu>|>YVcXB3lB9~R&@YYbwFuzF*?BKzQp?G$vc+J*W?cC_Gj)uY zYB99LBzx^X{I0&jGZFAD@!S0`8ZE8wpPoGlB8~^sqU9IVq!-?e-Hd}iv1+IOM&6hl z@3Skx8FzRs`15arn;V#ui35X{A#Z@YSxg;IhrX#25uWcNFKAjPrN5w&W!L!E!+=ZL z4ELyl*UUn)!VqbUax^pGmq8?k#i!pt+C;hFi+%(l8%WzU$fv|=0#ZOq2>jk@Bya?N zLqM%4ETof5Y;Ki&YYtBS)hS<#kZQ()QQWQ>3c#x4LhKAO`G zNJ9qy6-o9H94Y=4feGT%6>NhwD@LOfa|MJKm;jg`C4QcO7+8Rto#6EV0NMqB8p`sV zqT3Gcom-Oi^#^l<(D~wb^zY4TDUvfh5im9*4?LzQ$RBtL$!~II{q?@CJvQxYmrm z5x+h-fZl}#*&Ef1Nh|+zu`jJu*)yp#-lNk?tA8X72VtsM(5dp$4kFF03iQ5fl`516 zslw&@{gQ|XG9<5P!+bz32_<=NrPW5ORgb*;gYV%WtpNQ$l9)wwxYqL{ zK^CT`hW3N2G6O`T04FDa^w*4WPEFa;#4IfXzwtv-q(27g4YX4Y!jS67!@=Tj1k$e} zg5w|hgaY7nkxMp1(a6>hKS5$#l0a_FGAYe0ahZl*K%?vM2&y3Yg>vf+qJCPFY7IXy zNOPm7|9!P)oH$PGp+*-r!4p75zboRCR_5SO!smvn7B}#rB(?32Bb)O;a{;Z+BRmf> zxK?%K5D&s#PYspUN*sUEb1&kpFTHU;LI!#qzsMwB*YT?(2&0hG{i1ywH2dL1^$_(5x@aE6H$(gz5x~U_z~oAIG`Igt{&;+~ZWt9R z7&TsXgO{y@`rwB<$)W=Ylgr=MC76lY4H{482I6VM3GV}dXMkF&G2$hH0F(%Uj6RG* z591n-*iHXK(3p&fq~>J=z0p{L+C;Qp;!>}EF#wljB5u>H6H^gPx~9r36X^wy1qdhR zi_qti!Jkwkmhn|04z=QgCOIA?(0wF_Rf~6FGokt00YBP^s4D?yG*eX^9Y-{vi9~}? zKlS*_c-qfXReE}Z-4EGsK?3%GS`Kwt`^al`!#Hu7++70|`^Y};n#|!zteO}FOTb9v zbWvJ=aozNTB?8qmcp+F{=N4!nGm}w`6B}e`^v39(NR*Z(+%Rlrng&jlB*11!LCOg_ ztDm|2HnWgs6rP4Hhcg?02X^R@3MN;G*d_i@G|pKan-Vv6W}OX_Gjwi1IK|AmjRH$N zW}e^Xj8s&WB@wyaHz{gP5bQ0QGMppe9<27n4~ zu7Xj?8!^Lu$pN`qup+|o6f21`ZMZ{j_q!NGXTnH`)gz*{g#y$9oDr{9xd*P-9f8Da z7zJzs7AoDKopQkNJe@4Y`DRw6`g~`)2M+9>c_v3OZk~AxQZtwluSW(hMh>tM2wqVF z@RA1Zo7Om-7M^Sm84`0@2Nn zBT9n%V-WDOrL2LO6sI{PGWu1}M26FsK%~0oFNv>Cxt||QEIY&NWL5&zG~&c{_E`~o zl{gw~#jQH6R*7^FBk8DLc_`fT74m&Vlhgc&(HgZV9}<95JMh$b zbBeC0ExCH--OMUu6>zZA+SF*BZVbgN3Si4w+xN5K8UtpS$8jxJ{T#7@SFfavTL1oL z6KTrH{&3wGjEA-*+YoZLR*J9YA475)ZM-pLW*7tC0pS80VGy|(wMVS8=9Ew5Y$cW% zSAo>zaQ1M$#^Cv;mpk+FvyqZS5OTHXab~!-bu#r4jMobE)HaRd$y$lQs=N;H_`W>` z*9N2e$oPZJKo2S76hM{fvPq78WT%B$xS?v5P3(X@pGpGpn4qC(l+{?2Z!`bM>LyPI z(Ist;adlHbcg-{{zDRrib3}6fBlR$Bv@Uby(2G_`Mwa)k?UIG2s(hc+i)q zWa%*Xsp#j70E*Bkit8q$zIsfJMqxsPZ)7tJX>I0C#v#x3Bv-7#CQ`lhTgatE+ywa( zj$-Hy-d!jLWNiKI9bBH55kU43sv82$cbYLE*nUBuovrpHBF(|IaW$iaozEOT$Spz8 z80LK*trt}wLk}<)5D^|Akxj#9PNYgRWeW!2F%dZpigWdP0o_C;q}8)auf7o=bmEN> zzH%h1B+l1DDvw1s*GlOEn!g8y{|Ht7aKHt3Pg{TgdnKl5vuYnwO>f@_#51RGuJGGn zB#P+W2s_YHz4O+$=Kwy1Q`2=pLaCx3xxgRGK#8}4{k;)EyC;pX`0 z1A6S-)p5wxF@NuD5ir@|_Eog)^qKZpGymqSVwDx`L@deDJ-1QO{f&Ls1`<09oc*)z zp1zyZgV?=eo6N6$;9)=aOl%N?!+R+(&ILmZDr*IXg-5o9`1{h3>U#m&( zLKzRSHA|5Kl7~wZHgK#_gT?}lSx2)E4w4N#3c8RWbp{av3pju4Gx*vF8VJ(>boA1{Z3;*QM;=3D^y!^J*j5j9;XhvCeqvlgFN$AA=ROQo zYg5s^gbDb;bAN`vbB$&fdESuh6c+C3!>pg;2O<+%P^0_g=NDlr7zOc8KgbYvzM_A3 zwTSdLaP}AcB$uh{m#ypQL=^yM{}rct83MS9Z1PY2ev+&D3s>J$Fv2hI9pJqqFhB0n zV)%J22i{JwLyZsh9DSra$E%BA&v_lU2oHXXHy;|~KGX!d?S$`LJ%h7w!9SW@&o}b7 z2JW#W@XzgEe?nh3&n0Zn8`f=k=}N?i(|OfeNj5|rG35~-TU{MfMWrx!gUNuXr`{4N{Tnx)C8Bc zZx+}IpbSy`cdkI9oosks_4r(ySj?2E+eiM_ZNAqWU8J&Y@b8XIynTRX$`4EXzfVYF z_lb*J*kALhqT3>_n|xoL%c4KB9~{JW9nBFAHRTz_RZteu@;JbSvEV*vToN9qLq>&A zOj04~=4z-?@Btm0#U+xd8-dHOa#K99(G^FcNc7rq(ylL%g4@Pb9a+#Fi=*4&;%LCA z6@2o{p;$nmC!Tzn(<>7jN6!E_RxR`fdKIVUH z{aDHS0+y)nynO#hTR&S`foPA#f7<$)W^B*DyZyHusxO@?es};>!fPn|YwO3%fNSo9 zRZrx7O^P2fAMF2=h?ek6l~q&wpHBDY!+wc}an7!+hv{qm$exZU5Ebv8(>+^85p6$JZ5vmJpVs*E%UxQ7qQv8_RMvSh*?7OL`Dnuh!TfZr z?aJT{Vf-X*!1KES%onmWeuL<(w8AhTKC54l?qLRk4xl+t{^s{*G zsz1^i9TP#jRrWhv$f}NGE?4s|BA1^v19u|Ysz(p5$6bb1cBcy_|1P2(QW)k9dPPFU z=N?L;wAZxVhwav~)96C_asR)zeh%6%x5^JXZq7BC#rDZ-DBFDRKUh;}yyP~;dDX?3 zMl7Jb$Rfp$VawX(qrJ{fn;HNG+kPC>NF+gLl?Y@5ZIg}_Sny_gWk<7kPLzOSuEJ%@ z%NA^6(r7FXwJEKQ1jFhdt|Iah47cwU)~uE5C-qc$&!!E^C7EVSKNUWk#s7bLJM(ua z^gWK()IrI_m>ByucFx#&?B{4KjTu5wMx9)aYgC6Ym^5l=WC%_6t)v)hjxE_!7{g$Y z8Pn0Vg>>wUBjF5ny6$~?o_l||&;1j=KfRyl`+Q!nSD-R5%WC^o(MhfnIj?o2B_M3G@dXmLm ziKv0`oo=(FDHtPAt-vuLUT8+<%mrtI>9VM>laF9t#>~&uPjmJ1k2!DakaG=PChZpb z{$~iWS(0nG1&}tT{cK{hEwIa7H%9w*?cpa2TWm)ecZ#a#1iyW3uM+?OU_dn|Pr+@;| zmT+?5L{dMs-GJ+KR~#PzkJY9?>)xICE|-Xa1im6fd7g{-!)XHpsJQcKN#>Lh6ruE3 z`*NE?qQ}P()UsZZgx0JKyg>xooT_|5O389mz1yJtm^z;(WPQJIsZ8U zvdM#Jp&qzfeVHtUaHgVph}thC=t5n}k=EZIj%x}B>0AUSco|nZR)+5#;9_Wp!9(5o z2G2U_82$3h(Kxo(BQcc04TdUGy?{)}?ZMWqWIKIS`kdC#)%0s9Fkk0-`S6|zGAgUn z#2l4Af^_Lop6q@#;q&sYI;(L08x*3X8iRB`Nhz_O!u=#>#B*$JOMCb6|9FaffSaV% zXr$VVE9_6HOUkeb^}UH}>5HSS;+eIDsNDlxoN9r&KvD3No9x4*YZO~#(cS^B@mk^5 zt#*@?Bd@0#A}MF)d_^lWa)Pc^o6gBjxTX&PpT@s7t~K@ZcPkpYtHIEX@he7;JSIJ7 zC)>+z@gf&!%qHx82>uC534ma=igU_u-c$Az?P9eXbACuhgau&%(KnF9#J$4kpiAqP(pSDy`!yviSkLo#`fr)lWxt3iKD=0Rj;CXopRg83>6v@;Wxs(+#i5zLuT}2ifZy%_o{&6 zXNzgSNuw#c@mTYPS`3oJscEidDn!`5x$VFd2=G#n_{Az<3Ic+bRx7mGII<&Fa@bJjU5vm&xCH+s!gLpA((`?eOh3rT%a2fUor2 zzsF2`UCn}q6sEJ~hhwI5!a2V8E$}>QGY>)U?Y`)dzlpo{>(TYHiE5bmnJD3&D|uh^ z$e(dnm!O?H&Y4EzgY45~PGQq0Y-(t1@Y4>Jsp7I7zLn#8RMI5>Pi;p(K+G0C9h$M| z&xJ*nGE0^Uv5q}NezqAAP#Z3HIJ(lZ>;!AB1 zpOU3^$%QVDeJ+#eZQ?RbqYFy1oXt7u(5=br1~+nXSKan^_FTY3f4o80l?fbi>usi+ z>UzN?=q!_UipIGClp#^Q%-*$B|1|URTs7SzLX%@#1BO;LUrH$DP<^|oo$NgWdl2)= z`bg+B7k3RW-Z>TgkByCEp?JNo26n&gY)m!UxX0)^*`e&hyL4;bjg&NZ{DtY9R9@W7 z#9b6FH2=Z2$83>L2kyh`M&M>pMejCxuEsF>`urU@Xh24)^JV?d{m{1F#dLV2X&6l* zIJ_hg(b#|;xoW<(#`1{}G#kYv=q$cXI2(f;jdt+Zn2IpKBWDU0(3|ri-c}AD1`bDj za;IA`xBl>XvV&U7JhJnVH|rosOPxTqJK*iva%epN7BIXU5Fz@*q-8n5$xarf#CML(?e&yP+?#bG)kUJ&$&`tMgB6dvnZi`i$tUDTwn+VM?(XgjDDJMs-L1Gg3wL*Sr!DTT#a&z6-QD%4=bU@*KD+z>*7H5d zm&`;alVs*iR+zl3I6Mpv31K0rrAt%ioPH?D2wh^6WRHKUn_2u%Pm%$kBHS&ZqD1o3x+VEqN%~=N+ zWpa(1-Pq@(Qekv|1zDHGizdSdiRU%^wr4*R$5AK|cp}P^2fYCn*xn3=fM`GlNR7+N z`qVEBtwr)`2r{S~h+XUxmiF3sUp#z|C)*NF`G|wr)+tXjzDf7WAG7Nt?UL-t9Ku;6 z0VZjOmR}!t)tZxrTJlBV@HkWw2iw`>DoI(?4>d{l zUyf5HccsDeDK+9zi$;?u445d>NYjRCCn8lAAw3(Iy*r2~yyLF|?Q1DD(y{Tmc6t;S z$uFslUpy6J*OXTUjL#OPJFjWK(B2J0F#Q-_1@mMod5|WVrvCUCmiYzggFgsd*foU)5(=-xHUb3seg|&%fTqSUlu?y8(81^%`V5fwLtq4<=t7wX6JLkn@dH4E z5EFs*`id|T+WCQeAx#26NdJ(Mhmh(Lt3p@y)zL@f06_>a%KexLw%0{&2fqyA`h#>5 z{;^A%5pFd=0ovaV2|HhaE0*}nhXsLXB=E~%uv|te7^y(TTqg;Lp}e9=i|-ILK{UB5 z^6*Y*T%cJ26#`k4;NPKe0#^lc4A4IN7gzCFAxs2fGom5{8Lb2DxH4h)dV4HEWuI9q+@Np&G@LtT5JHWSWCo@qR>Ux{AfUNJfd`K9D3Q;~U~ zks$~Sm<+%T0C_=n0h8ibwW%W-_!%?#C(CpAmTePpowGcjpaCUS~<`Va6b}xGTc;j(Mih~9Z z6$Kq-73GWr#adwoXST^Q#tO~?Ob<%;V41MIRg_0Vg^B1cD*Jj|q+NKeP^}D0laVe+ zpGWZ3MLwjSr9QKMvkt>t#Ug9=@N1sgE(;rdM1!A8ojm%Rn zug;QMMx{=fPNkRHQ!RoHr2wUpX@YFRII2!vMg1w>N>B^8GvE+G=9}zY=6IGa&&&LE zh8+vN;|Ln+>O{Z{B^)}-{aEF#1SI)B%CKaGh72!CKDD*A(lHX416P2Hmj%L zT>hs6jcbQT$j7R#+b~8m^ z>%St7L7TvR@>^i5b*V+%#n`>rwH(bDg`%sYpT~H>sK{?c(3Rn8M z6knCS+`tmk($Bf*1|E05|Cg9qZO>Q74<^A+a8r?o*mqWv4WE~ImNb_LxYKn~S7=%( zTGc+um{N=_v($R+vU^}Y(LJ@_#^ABw3*o79)^W7i*STzSsdBB_lW;?FmD^dkxSv>U zjk>NLc&-I)qMX+B7me+dmS&Xp){i?+j{T(XD<3`~2pA6iQf8#>GSKwYTxrL@^E%Y? zOL*6QbPG{VYvS`nKsI7N!PmZ5e9&~zYEX1gIq)d(8E{MRkN|D} zWQh6?M*hM9?2v0lN43qzIJb78T7xyQuz7`(`;+05rUtVH@m0xo96V&6j`v#&Cbgoq z86*M_+=h<52@(;5%YzAyRgNTk%Hu$S9i)1e65e!_cA`i9>nE(vRCuNsLwci~YHNE7 z`yqQ)d&13^E$OXRR1*q1>89lG8C0LGWV^}x$WNqk(r_7FkCr>Wq-^JJR{$}tFveP$ z^<2GYpJ!lyV%TBe$^9to{f77Xp*w6{*-=b!p;)E3M;pTx_l|rbr7?(o@NP5Z@@b}R zT59IQbo(^>H$)gu2xEU@Vrg|^&n)E3YT7Mf6OrB5&!VcHs$Oh-+~iMz5=x2GEwM(i zwN&4ftVkJ9T=(3!ZN~7E1Ep>yi4S;#FVD7lfvdnIAR%TyJx_;(QJmS- zP2X(99K-1Z;^>?CNB57el1qvOMYJimbVdwI?Rc8mEp668L*d=%UXX&2P^u_uCKb=d zNiQYSDrc$#l{VBr0d!QyFAV#wizL5DB&XV0vn^e`VqSIcy#_SD)i2F?)9#|{(N_bg zX&-8$TTc%W5%?3|a@BJhI*bC2g0pa|aYb=k*&eL8Jsr0&9+Nle&l(u! z-HS$>t>)M^*&Z5BFRLzhPrfd(+q@|fe{a${P}9&WQmbz`>_J$K*5dYZojsXeQ>i(+ zis>diJ40ApQMcCBX@F{_w4JzWxA$1`F??38m2=e_>Zp7YeQHG%!Ech^QdM%4KU)vh zY*N+bcB6Wj9P4=v$vCn)a+#Ysl#cc#y(9%hf5kiD!f-D;;n;FpnK0p3W0l7V$Ia{S zi|Uc_|9ZOHyE~3bOu4AZqlF{8n6>OPysx}tUOt06jx>Rmt&lm!&pl0JgU^-XUD0SQ zxKwcUaqmn!)iH0&aKCRP1q_g7Yub?0e(e146Fr8OvVysSO~P-H z!m?`DI^{X@Vj{g)HvXy6(Hb6A-ohwN&h70Xa}gAb3Xn_DeMtwI0U!cnn7-B3 zRQ;G;va-WBfVi)moU*+n#53f(1wt39gdp0mAbR95eftPOn@75Z^H3mlyRxGirAl{SC|o`yXm>{ao<>iG!xU=Ya?+2}?@8he}2c#>O^|X0}c!oJF7B6F%BW zXgGp^V37ZQK_wN*&Ot!H=FOGWoz!JMa~auMGZ=iaH8f^$v$p$P4hWAM*L&33*vWv% z&DzSwk;{#jdN5yiNV&v6u`vE$q8U&1~4}cd*Zs%lfYeV$ATmwT}XD40~lHV2m@AL0=8oQbQUrjcS|LN9y2LZox089*w zfPZ3hGB^4Eu>H>YH`~AZ_3!Fs-Cb`Z9;e&=-J`@g~Z5A$C$|IYZYIyL^UPL5CiRpnoD{=)gY4_u1Ij<#0Lzh$Um zWA4Pq%metRgE3J)QK5_}ebo@9oH?j;bW&qqRJVHTRIn^?eL8=h77nxl(Lx?h`ZP@B)}ReD3~ical2`cJmW`gXGr$J@YHdS;c0xu+S=GZ zaNe8BiNbU{Kqq*l+=4Vda0YgqJ8$WXKaH__OSeP4S~(s~h@Gv)V%~3K#ocUs`9L)L zCj6pSV{#DG&|L>m;sCz8=@PMqXOeX{&{kf_Y+h3XqiA!6oa4fTg@o`pwI8#52s$h? znSbJP=!#S%IFJks=0Kl2Fuc$>OC*zx83FIoY_elFJt$&g8Z-B|N`(MRN0as(d^^@D zjqoA)>{O(mQd&|NV-2kXLxxkRNH0?|GQ>f6sOV6FB6Ah7VnU(C4GfSkFE10JLAgjs z;2s`=o=4`|s;U@80z-&n_8uUE(lL<i+Q^7tcN5Mi(0u zp`$S6M#3xTm=YLFcF;N)3f=elQ8WJ9p6p4pYK(F${tMk;>L4w9`}BlA;9!iny`uy1 zb7drEp3H^w!H&A)(`(ZV?N&S%K79KW9i^9|kS+9?^KP=VE!IVpyywdR%|PYm5r3n$ z=M@Km)I|C6vL`;`>2f@0rcC7fXU)C)K#9KO=njFaP4jiKs|`LcU~mtQ;c@E<>{i;$ z%v{%wV--CW^OuA{)FkmzhGU* zhgDa;yEQr)6Yp_leFFA+MeC5)g9rE{52&W!oXY}$9&JS+#)Mec=@ey%y`X73s&e>2 z7=+p6;K$$2060%*^>hGba@eU5aENRxARBtxlyLC-xz#h51PgWn=CgXkzXR!c=WaY7 z-z>W7%(I;elME}hUoP-lRUfBH&pd`f@|~KP%K|bAoQANFn?HZS*r3fvY^w3sAClJP zp_OOe4q?V@jMZHqnqv_5{06)*)&2Q2}1V2xk zO9n~kw0SQFF+7*v=W-e)i1rgL?ueRg|JU-?UoCa!M+{c;nT6r18Obu&JDk?z%*V^^ zh$^MM`M{ZA3I5n14Oms;Fkro2kR+tzfOmnn$GQdvK*n6b8JoPfA*?d%;ev zwTqfoZFF&FA!!$S5(2c#;LeG*bA`<}8BkM#?P#u?9nIRMc{;kL~%}BUm5vCX2l$OkqgP*1k5=MEX}w5?fpS z%10h>MKBppsZI}1$Fr2dnHyO3I!J9)-IhTVP5Q@IMx3}LNuUr{a7?Tp$Y&e|%+-cx0z(`_KYZ8#RP(EQL6 zyV_Ke#N+|GHyh16I65xM9<7qb?Z1R@+uo+lU2iK%fme19liW?WRP$1E&YX1;->gzE zMP5fF`}C{E$PCg_FzYs!OPrAaW)*Gvf*`t#mfjk=NYUnnYCupu z9sEJ@L3eb=4agdKk~USK-#NpsN<^j5>MviO>Ofb>O~|qIpQHeZ?Nl;=dbAmw-r3`b&+Ir zC)Ed9M_RYrXA;|piqHTO%DPq7dj#WGQS;>2mtJb$T+DSRqa6j^QuqP;z0E37ZTitE zn0Q2h*k*M6lO4!yogz2CyDXZzMoVE`0ltkb$Rxu=%r6j|keResnA~l-#1F~mmGsjAFo2`y6 z5iFXu7HbinQa5ZM6wH|vf9%1Qj&qws1~|YO)BI>8A7~ncw4Ak7;S}2j+ks?m zY-`gee3IBsxNo9Kl}Xdut{5HFHeAqLllISu)KiETc|{+yJS-zmr-Z%nFQVE~GL>2- z7}lBEF1>LYm%=5h{IDakp&~g%ojStQ81V8g%eF?gI7~VPP70MBtTe6C*`#wY;9V%* z)}_C42V$!e8t2#W0#fdc=d<`g(yDBLfM1Zh|A8|Fe?if1UvDFA9gi`@im50?FzS@QCT zAfjeBhw^S%4|v%dNHz4P%Pxl|s5^B;4jlhfG$6gagplQGb=`6rO@4AYMSODI@GC`4 z*FCIA{gMnnvPfA^*Yi#Lx}^!>yz;uXg;>2cJl=-MC5^(+j}fc;l9AW%q^0l!udJM3)Lx zrE@i0sBPDs?+C2aa-DXz-i6UGH@{JI!j6ywk2eR;__&o^%jTTGLrVcIu04!AQe zxOT4a;SpE_;WNDmOy%C?cyD^bGcKz&wXW75_$ht^7LYSfDeF2RXYS1_ zV=(bfsmSnhJ^PTudXevdZ6Ac;0g89o4MMjfX z7P@RfqK5&FrmNp@FX)#h+`Z{u@b*{NB(!o}u-jkt3AEPUY|rVr1)|I0*$AHd11`Y4 z8t;h}`O=DxC+Qp+jOZsbITzd3jLRNpo=tNbl}%rMoZl4CQ?Z`-c1ilIXn)Ql+@luu zAddFn>@6R5zPh5V3^5FLOi10O!v+iXCDw<=`mX>F+fQC0w|9}8Z^jxMtpJ8yUz#iN zl6-EMMyEnZl}&G0)yW}eXIASrE!svspQvSLyU|MH&2r#rzUWEa?0YCzv@3VH_a8#$ zU;z`1tk|QDoy_>DK}Hi_)JX`IKaU?_cz-86s%iDNMm)1Y_}>noxOlz70&D%) zQw?=V;}mrL@`R{=_|qItIxR0x{OOw0&)_RA!NoyH?P`-V6wTI1LX+;m{>lFAj`Ftp z5Y}F3%eMmGra2ws!sBL^X@0rrk>n(1n`}HNsaNO0o0`3l;j2p8N#57HA$tw3WshY` zhf}?;$IXegU;fr2EHLyCf$vSnVMq*wiV3!NgLf?=f}Dwr*>Q1xGjfD^XxiR=&So<$ z?J^`xT>(0G zUD+)zGjNjZXTN{C#uc!6px0_J?2puVq>uG%ki6XKDOzc97Hn;>PPEzUM6s4lWRyI; z+Q}BqYBe6#y_;}7O<}WSeO${Im99#x%W=32t7B1BYtc@BIdeXxe&_vmJCVUoIH&7@K3kzv36rYT z-#+ki(|5&<=R+tTWqqP zS#6@=!K=2e&WTRF3hCx(PFPhnS+gI-a<+GOOiR8}m-l$N8TI4GU)LJkF2}w3ebUO@ z)@vR3IBZtAH=}8vh>?n%7B11}n+#A(l#3&y@wszN#&9%OUn*%j zr{P6Nd3o_2cSlu9l_s)R7RIGgc|9r`s!b;d9*ZtcmR$9R;*G;46DXoqXeR3QYC z+MEYX>s=opq};#xi0UIq$8^@!pvnBVB^l0dE3j+T%RIYK$Ad>wa_DCgLe_V>gT6wY zR;-+k;=L&!-n_j!37}2q3xQnuhZEj+AnF%SOZ@}Q<3`BG&7Zqr(pCkXJ#t(tPM;A12+wb_UC7Kfxy|U}-Smc(g_@Cy2L zKJ0Q&Oc#yt!e_Y5I_6fqPTx!^DXVWcA75Htw<$(7Jhpnc)`(}5TVr`0{K~#hw|28- zM@;&z=+yq!p|rbv#c(UqU;p!xeZ{kN`fjuqu>Y`Fe{`LVsq3aOVOm3PGdwhOvF!TR zlYQSin>|v|q*^)hiO_r7Ue3TEFC;uGgds0|twu)f#p@~S?%IVWAsaM6_JYNFVa4&l z7~zG`^Ss(nyVD+X;v7}(O1XS$@#>5+$C=Qy^N)SN4i9NPBsHsDjR+I_eJKIQ)Gw__!yrzj}A7gep z;86D!pgnqj|IuP9Ji;8-=V>|!y(e8$x9IHU5rsO4=W;YFp-3vNpED^%~L z=nk?HrB6&oC1I2}ArM5F3z+~pdbV71vwSY6J20nz>n4Tp#~8cL-jQ&M%@gY%6Cqrf zNF5DY;p^oUEThj5P7cT^jS>{UR3cp%-aZ*MrBBdu2Kuox6da<`gxKjXDZ{)IEc-*r zLznqvLB>Vr(OIo_FHwzoDkB)NmMg8Uf`a{G<@a@Q-`0;E8M=Az`1;%B zjDD$9lCJD7Z&R@_pxZF`v}^Qyxa*tKi&5!2nUPx)(f(E9WKTEg-xCbq?+f~ZL_jd^ zXlna&!8FGYV=SYTd!y-&awF&M4n*e$Cy(ik!0p_mjsMi+nBT5zZ`$nxc$@@dl*kA0 zhw}nC`BE`Fo7NYC&o9n6=-+Og%*#qA9MA#wjfrFo5x+|MwgPo|Z#?f#SH7#zBCj-6 z+6=`PsW;ky^Sz$yz!Ch+u}NksiIo(5U|0g>%PC=aygrHA9ZSzgUtuFJ`udeR+hMud z$V1s!tJUR%?pv8HZ%pfY1C#4UcF1c0Wsds?&IQi>)$&rB>P-jgVv{JGlJyoRi?1)H zfA0F>zNmo#D&fYoi>*GxK>vc&M6dLMHMB=G)@A}h(XWClIMDF+x44iVKKPJO7ANrz zD2Lt;@z_|vLw!ws68S-1y_z*@T5jApo^P$WXiB2R$mls*HqD?<&8AXx9HyCkD0AAb zpLD$*fb?5bFi;hRd|2b{j?|^ktip( zH1QU(&>?@y2`e~(8hnpN`Z1cxPQZso>|R zY;iOD|H#q;GJjM8qL&~`i;xLA1bQDnL)BCuN}XIp8x)ZdtG5ihbG@{(Ly%QdS!C*9 zsvVciu201&q4nYG(Nx-O>HDU7#A_Ibd^ElO@oc-t}7ME+^3#BuukaDcL@_je0&J4E|f;&WqRMSIBk+W?oRu* z{ON{LNbPW6#Odkk4DX9;rr1C z;-53v@F)20m@Arh6|Z+)mp;JrK_*aoRSu_7b;Ng&>KfK32v8bM(E%%T8{Yogt$F{- z1w%Tg);BOP_^#Bti(LAJ2<9|Kvnz&)T`*^r(yWd@EOV|(k}}x+EqZv&`*RK(vK;RV zUjMR7ZEy)@>F2eMZ_~;ca>hr_*JpETIiDWmef9~;B@?{+a{XSupTqS{_aVyPBZ^Uq zp*-(zO{l~jEqFjzbZ)3>yPhPu=cxN{x2h1x9eAlaFoh3G>eXRI|yOaI!YdZb3oPsD^LhP z#*^c}@}#HSAjn{#_Ze%p zOe3Q0*^uYyx&Q})!G;?F($>GC*_D) zgKHpVF=VeE@Z9I?F}k6;YmNhPc%-@_7Mh+_(;PPuj|28 zC%b&MHh+od1(uVH&1;f-jM^udFGsWG*T*l2eBD8qg9PRAEjleMGf#R8JP!i(wQ6OB ziHUJ!oyJcBXOs%Z#IQSX|kCm3k2 zTh;n#lxP%AQ}nSagouXyO5vKqeV=#jZD$p|?c5G(j6=hs#ZWc9dT-|FsQFQAoyyN4B;=L6Yb(?Xo^Cbc+#?IhCU@q<_SJa zLH9MYwfrgpk?MbVf*fRE&q%eT=X=}R2D5F(${!Fk8oB{Zv!8tWjwFUdv@s#&(ZuHH ztGYivWznLMe}2{G@!lI)+WKP|UUwDponqRD84N+Uv;El;#qG9jreC3W?J>DQL)1A? z`}%zX3GPokrb`bO6kd*sCPiJZL^=AxvYZ;iTYo<956lJ&Y#>r#@^rf$u3KT>Q?JBA z#aoHyHkGy>=8u;A2EP!*x}N+Pf@QzKYFk-d{~)Iu_yZC9y>$p7$wPj=B{bgI-kj5j z@QQ<`Ep#dE{U_3{5MMFD#Mslzywwx#yL*P`Y(WlB#Cq^Q1j-2U+6|r9M8pg&uKi2O zTc(}}@BiN+`RNMY?Cx%`df#7V3g8L~$OGENDu0Ko{smsyF@ovBraBT+&6nvy34h`I zL)rA9mEpiFKxr8mx?jQ5=372NQX(9JejFxV`#@V7y|at1zjw;=Vxr#1vueTg7Xy4< z9SNGO8c*8GrSe_qiA4HWr4SL}+%V21FhWcLc7?~%fZ_$=uHw*#Z&i~>Kg)D?i26o5 zBk^(n4xIeP*&xKaN_~Myy+n8)f0ZOB(iC_O1;xhd_lhkMRHMWm5B@1xzXEXq9VA$o zOd`CS!}p7)5`$A~*5rR^|L-x4#sSqsLU=e;la*anSTlqCN21{nUmE=%k>05?JC>K% zL3aFIbXr}1s@?C#D&v7EcV+HV5XdnxGuOUYu)&Wa!f~_wMK=F|QP)$Ep)sUW)Z2xc z?n+(8EIMGw(c1q6Ro)?2zjsH*%v7;P+}|z~WwuIiCA@UO;t#+7_v%g+KWIBufbToNh!Wlt;NLCOIU;L^ z&>7i7U~w&SM*sRWFuZ#N^i4--8PMwI=kKykHvU^Z&-BPtw5Cr1@~XRRX^VteZzt6> z`qP4!pt~QOQ6-~LJqy~h3U@|&Phvp`jjs^3&WO>PdRDJG`zEq&{$A88G(>Ez=vU0< zg_j#jsmt()2-fp#pVz!-So746@HYz<2r8qOKHy-)M*YhdxyNrXu<(MdY-0=N;(8H2 zdp4_WkXL&E0XsX!&CL=Ea>cm{omM8(aqaD$ojmuO!}%6x++;e9@WMi!`3@r}7YcG> zT3T3@66IU?(3>N6{i#jzLTWUXQdLfO|FXirtsv)^VqHvjRep)JuE+CX3y!MzUpYYUp4Wu;rwV8{OSo!UI_UthVg3{_%Ur{o z1%OtJB-*}Q(TH6i1C}>-nJdVRK>(G=bVd74z7W@#%*?lm-t!G%;?7s|zVIY0HY;ep z*KNnKY*tIQ4+zIGtL+|ncOTm)OHC2$tQNpr*Btq8Pi3Z<^?Y9FgW>TbAz?8No8KIt zj~a~rYjN>&Ad)9(N!p^IeH;+-#SLj=Zo*=gEqq?7-U^%V@baK$rj&a{2mf&0({#rd zD8hqTFnC|dCuU)hUa74C_|&+HHoVR6dB>?*satA1Gc$8B?W5b*y2U48Vv@WYR)ay+ z>22z+o#Rm*3uoR4O&o~a`_PIw}5oRPELA30ZO$S_mrwW7b}c!To4F-xxCowYsj z!C|}59L`omN4!rWjoMu^eEwG!WcD=&C|Mq3G%-DQ_}&P5N=os8blQPdBLKNE;n#^& z$)Jg5-S^{z$uG2tb>e8P3$=UGREZ;wrpt%Iul{evV5*E&c|ri3j*X*OaPN{urEj%X>QBAyDXAhCBy! z;>38rhzWwxsXtzk5WO7GaFlD+{|t_NyA^N2{Cart2#;H3_gdL>w+a=Ps;+dUTB#8s z$B+GO%V4cTS=;^Lrs-_8mFbI}p3~7HsOzddt}LN*b@JHQNS`=iN0baM`w{RLO;T)j zvfuR!wwZh<1_>!Clj$i>rsuR>VPWBVrUL1Aj-B<$Phvv-sTs>bpq!XTi?tK&{+N26 z8s^X+KhD}yJ>@iR}Ff zj0}$py*%E0hmQK-z@Dp65ZsgnlZhp&$zod})kYi9x-}HH7C`LKVfp!Bww@M;{m7rG zaV30yeimy01V4Y9)#fMkk5x#}6tQZDAulE-Cb#r(LuMWQ9FJ3StA!eP*Hvc#my=n< zl1=-8ZJuW}cP>Mypx_UjK%?DdW@t}Rqz+oF5EJw3E!#Xh4we8sNbQ$y)gFv=$U5<8Jr{AYS$heR_{`Qy0ZjXyx=`us~Bm94y4~muQay6 zs`!XW`}^6&OK@rvYj9kL#jlby=C2ZqK7XBvc#*#9xFYB151*HZU5?cS?kYK=)af4_ zR;Kk}{oZX1GnU?O*`AS4Z{xH5@Aha9W>IEJfumbJ`y0{N$`~ zd5N|Bo^RI2^UX7jh$HC3&ZB5H-?Uf5H;!E|xZ72jfR||SUTX#7uG)4#fMzod@JX-8 z>OY7G4SkDM=~wqKj`Hy_FuuZq)Z841x&O%W7}uy9oK>BEl{HdgWl+fP?h&42l{0k_PSpERFY#*dA;R+9kTVl`Pl{zg}~8?jqP43V$!_R zKVmm<(zu?awmNBdt)U@HH5$RtlB>+Sm+ATus$bn0FFzI^KB|bO3iYpQ_4)xi6kTwe z`vJ8ym@IDL6=620Q}FIFegD?fxaGBZ3aRtq@e_;1Y*O-sNr%HVxv-en*KFxthYRi2 zdqT{^2l9f-d`!(m8a>l2FXD7o>+pxGy`y^Y#5r=6yo{~EnTcL@Js&}5?;1%*` z%Om5IsM#YUn@*_Gwlz3hHm6t`JqP008UWDn0LA$DjEhYLG~pxl*ZvRi!-RptT)L+z zGEQo`_Ql@xT0&~W?2sht-<)2%Kwq4UZN=`MwsDR% zSYmCsu~pamfi+5MzFJA#=B#+bvPBzHuGZtsLw@CbZ7uFO3%1^42T~d#ciy2(rahH6 zuJ(mpe@-9*8Zxz?y@pH{IhvM}20OeKAg+ZFtZ)lQQZs-30FURJ_Q}-fgYby$LQ7N} z8uw;{R>e15L%sGrJD5%?0|%Yg?fWw}wt#ml*8>I?7OR#YQ5#dRbQj($OC>v?hG=A9 zp6oCj4o(u~P#0mvvC-y1Hq~nXAI|i5#0BWGjE#?ber*C8BUp#m6nA{+P{l zDHR5n+YRD<3b~%oUbqRK{OtzS%JvvE%fDKH3USr&NV2GbYH=yVt9O1O8f-p(ikFCR zI8E5w^R95?Od)fl(n@$AR1(3^ zY4K|dz7EZd>>m!$`gbI|B*t%5SbSh>ySovQ49u-my7Ahay3x{e#-THsOD;%rg8J_K*Ghj+RwtmDW{zV2))yzO(myYSl~ z{@cwF9KW8SNxuq7-CR$gQ0}w94)_j!x= zXBvQ^>M9b4JA{=tKCi0kG!hj6%;)Z*2!nCqO+{Wll=Y}FPdtUKH|L`RS!3~ezi+*egy(uyK@S@Uqs>j)7Oz$p6qO3*P5Bcyz;S=A-~ zx()r$4EHM#dPj-%y}{|YDKV8y=%x`FN3skZ>i)d9^sXZBNXd6FirLEdKc17F$%Z6F2?;agWuJ>tD1QI4!=sDtoO+)aDmMOAGgM(@&5>)Pms>b^&GDvPjViXoI6?P zkvM1|euAlLYe%Mjmw>~cY$t;rP*|}Eg7fPkIyd#XdR{o-|2#Ke)JX-_V0VjoqHZ~x z1L~J=h!|e%#q^!!4XZ9vL^@lJnAVhZyJOA0l1Hi`9^#Rf5?gf{iQ^Ue8GcQt#CHfM z%JYtvzjHlRfPta_S*@SnBAzW-=KacDGUrbqGP;_AZj5-mdkki>?8>FW$yVb1EV6dQ zy>+wEk30FF<}0ED-)!DY3D_SWVo9cb+WMn?aECoSc^;(;ks2q4r6)Fq2{APv1YEuG zM(Gj6$KGDk4Yk$pL-5qzJe(rIgxBwhbEOd0fO&Cw&|!A|X~25~M3|2zx>)|g(cY|b zhw+0yR8k{h1boHCtVrVbOw&Hyz88vS9knf zC{AuebDQ4;DA;V*0+d4TRB2Q9X`rYJ`ykKJhWV-k(!xM6@h~Xxz^MlL$zs9kjybR1 zlGStDwm?PXsmw{U2-GCexP(&0(*re`HnFjJhd!dIeVZkBj)WfIz4pZaN-$B8sj zykEz)Jw-LvT#5_&*b_gVNp0nStm|VqG|_6t``< z&4tXpAxgaHyFQ*IV!~W?@<+qR552H50sTCKs#Tu%8^*RRkFyD z(!nGeir!)2OAY>``%mYMiq}g+dLKaJNJTne(KR%;1Nf)78%enQ=uI}^=x))Be8iIV zvKX{3Mz}@|7$Hv+d8r2n2Sr}o>#03Ll2O`<8ua-n$>PEM%U&boPs`=5!qe33to&_= zE=A^HKOzbX+7NWSn2=bI&k9uXtt2%YC(Ks%%ZY^CmQOYqaii_+Ai<=R2-I@|X+GC_ zEwNdPLZdfv)mxVM>hSeS9RfV`kRXfOTW^VIxkJ=vFUoyC8oyr?{JB{a#c!;&Zm27g zM;F+=vwM?K<-CM&&6k(q?JlsWq##+HSJlq%%&&M`lqZ{&9vT_WWkLSc>S>#YEIuIt zs!v%}kqzRZ`C-1np0-3SMm(uR#k)54EE*jFExMAY zLJoqIzY?VO+t@GrnL1#?R=x;93IE9Eksd>+k^AsA_Tcze%E4Lg%BOLT+FFA5GsJT-ozJy)ieov9WDzxWUFYH@0ot&W&x` zH@0ot#+%RgS8ttv?>#kjo~dVgdb)c!hx%<)M>mdS(|8ja{_Q0yhJ5~m|G1IU;1Xc3 zTJhB$@tAIO@DLdk$qn_Ca9tu~JAtERmP}f6DqqY|D8xE&5UOq%iT`dwc!c1N&Nl+J zj$SOJ*l--idj*rq@_hV4#$le+a%1fOc1szWcEWcWI;(84Z1VLoMfT61 z;#(x~eS|A`cS1@qFaEGq+Tg?2N{)A|>!g5umu zq%D+Y>)~I?YLC9Hx_c=v1&zUpij%u<3d?|jJ@=cR#{7?dbG}abr`oyH&EHJleF{b( z`Ju4*SExM_B$tDf1x|JAnQ_r(x#CDcW~jc|cEyAm(o-~F=^B0rz13&8wcCip+BR=%fs*>`eYV10@jX8C<-qLIDK5Y^ z@KTkHRFdZUA3JS?oC>v4zLs=*9tH2$oA>;u4SUwS{Ae;I&J^GNsS+&rWo;L5)m z0->LVzCt={5y<`=n*3Y%<&v!l$zg-+lm2VWDql0eXXA6|@}aI#a)EnvaYb z2;(a^)LR>U*1NUF8>SN@zM^W+CS4~<4VRaZLDqRU=ZT+#vz_TlZ_(2u5kssD+R55u z)Yr!uls({yNoEhn+m|ZTB(@GBR_bb^I4~G*muPv7VC`sS$Bd~S?nR|>xLMxC<87nF zC9E3ny;gPE%YyNEkwGP1zM-Yk&d9Pc07l;_BJv6>Va8fwdGtrlZKV(C_6d?v$Mp_`$SE|QHwq;*Q%sX^g$ zpcc=Al?VwtZ?LhKj#eqIw66sdJ@qhiUfG|^#psa04GbqT9@s^fUKK*;@XC8H9`SPK ztcFY0NKQ@6i();l_f+FL5LrP1C3HV$1M*U4mhX!~aC+_A7F?(YjV2i^xc>rmgh{Sg z6AwuV{UIRfw|=fmmJha|gr4!hc){mWjYb4>g@uK4=m3EaBsLehublt0X+ zNr{x@N-_EK^#{PU$0Ui4SgLV~LQ_6{5h-5mGcZb170Liq-{D^1i=D#;&&1m6whuqISLLB1E!sFv)!#@yfMDr%BVzD3PKpI8X2KQ~%QEq2C5Iy>ALRI4$gxJi3&kw!HSAttJN4N)^WA#a zt)QX^+rFffsx|0fq-8c|#t`v*ANP`iwwV&!`%ysKM1DYXY~B2#@6yB4U@iR{f@7EE zvhTb1r;o7cG?vNG+DGn3oR{7{yizt^At_N%-M&I5E>cbogAVO?OvnFa0ZcP$sIwc+ z6lNS|JJV2X;cl8W=iMT<-ejem|7VeT}Z8jxNLo(F?8M% zV9erI5^VfHML~6wCHR)`$IN$@Iue#2LI*n9yt~ahQsd2F@fHxCn0S~)y}f3@m@ZZj zw>e%7@FN;zl|EkwFx<@78`jz%n9rB0<1d*1GIg_KQmZrN$}UtsRi}>pd8X74+0@9q z;r0Ee@TfD6-F(?@Veqle*He$@?fx4_T8;Erl_aR)!>sa`azMjj z&=RX$ZBH}{2s{6STy3@r18ZRCeL2TfYxCr*6yvEi2jblG<(6xFdS_nKtjbR#82cQ} zh2Jcw3T)pLe@1XAIZ_XaGThROCiZMH~tm> zNu(j{V!0I!lu|L6_SGrTYUF;r*vOx9J#4Lgj)PV9JWy-PCp#Vc^Qvg-5!CXLq7uc| zo-h+{NY2cTVL0UNE8CSC>Q!o%%4NvE+Gr&MCSe= z{+3XtC1-+udyWzH(T0Hwm5#d+(H9C3A>G|FSwSIR4}_j~8w{ZaK4HuR7{~$Vksr@? zyR7$T8xT&X3lw52sRK;+>k)=Gz2aLrq2YkYAx3K0y!(q>e+I7?z!HCt|BKXgfxh;@ zQpLnVR$9xOALdI~2$nQ}pO6i8SFYKbE;`Akl?W*~-Rac+*p1VheGmI_VQsHV#Ql_i zzPMZm{^s6gOxXfzEm7**4LKLy=tg2D9a>-m7n{7BfNDEo!k9%`II zkQE24CAvHK4EYk)a3PMDoH){b4^5uHodcC7^SyH!i9a~6Uub!~y;JI4mMX7}Z2juE z?RvBkZo?Q_DhW%Q`?u2-qDx*4-P?c-C)fUu7wma|uW?DBKxiIMJ`G-OILB#LHTI$ZvV5c6+ij4|OZ$8f0WTN@B^ zOVWE4!Qf4V=mEua&Vj8ZVl zso`)fvgFigPA7ew9#)VzN^lf}g(fghb|ZPs8r>v9vDw)%Pen!gW@1blN(hiY%}RvG z?7W?kAr))e46;*!LP zK$h}5D*Wmw=(FtR*PdxNfof}u>M@}HV_iLaUOy#elc zIiKF=j!2EWbNcG=lC(4vbm4ZN`-6A40EF|Q!Qp1o18_1Lu6zsM>CFd|4E6Zb*a62T3fM8L2(6?s`k3PXH%Wg^|tyR z>X)&W{f^mrjLPwf2W8jSrHMwSY20px7Z*r>em{t4!wJTyPzUz`Qe zqf4-yi^2y*a&>q2WDVg6dluUlwx`{^v+RBWdMv-(0FT@$-*Tm4QMHP;<1CMnjRsC7 z;KY))h@T5=cFyg$s9#Z=r?HS(1>kSW7s+c(qzXY(in~VF%pXci?d#d7zsoQ;)BY8P z#hXJh$!P^$)pA4ipXlNxcz-NRZLEvQ=XJq<#M!H#ee{|4V4#cBVIK)z;03bdsTXrr zYF=EZ)@2K%x{wr_;p>S{=R2sT&1FD21rRW1?L`3adI_NAAxU|QweCKG`DM4YshpA( zr3SkYm98BM_V$=V9Q3&p&|V&N7#SC!+>5HZ-n{jO(Y}IcAfYV`CpK4=FHhG6Th+O% z^)6ZXZ~ld2j)7aWl4zHJ!Zn;oXSma>y7QC&vg1mi*n%#{M9ck8||P)&-HcUSP6S4(Jv!c z9!|;j_0+>s=Bwoe zfiL1M4Q09jnD%G0R+9ekzWvS|bYefEIs*MNlCk(2RvR84+<4*(qsm-TjU)hid9!g= zd*~x$QV#Te5u*A1(RW`%$5$9X|!2DU0aB4GsR7Eg%+{F)7(WBED1G861}oMd|=z8%8Y7_bhuWy zgV(>X+=3b&EwHJE1gJ#d)Y+)D8+Th`JW@K|5Sp~8B9Q1}C8CXY+WsJzVwWqE!H+c) z2+nCRm7q$&f#3O$UZZu+e6supNna=T{VlODZ)9=!e}p;V&OETI8Y6Fk`d)2wqTE82 ztitpW2ilSxDlpPYjN(Yj#JHk;v-qv+0n>2J>#o?R?3O`Yolp9tl_H8o6S=pu5CKpR zgBe$z(Oq6`xtdc16}3oSrMwH3A5=;82*&~?gm;v*G~%GyZtn<=$Fu4H-l*gf?*N%z zGt%Hvi@k3jiNA5gzZ~u2&Et(`DAh$O&e?bp*s*Xj8%26&EnuL;$Y-_FS@YiL*rcJh zC1#MY9o$#}%8Y+9hQ6zS^!8>0orJ5+dAB@WtsiVvZ7tI(x$GxMV+-%c{GO6;RgRDt zuvU@B^Y%f>=GeQ+T7Edi@rrLL*R8yXcT^SR%>)wmSYR8xI*0so5zYDKU6)*TXi}T% z`7mNhO_%re=ef8aJM5m>is?cVUl7&ol+W%U1}`4OQ5m=HAm&JC+U-vzKd4cKAMe8sXl&c3AGaa+{hZZ=)K`X9b`p zi=V92VoQd*h`I*H5)`KoCjtw~h0=)zFn@^3X@#2G#%jOzER>c6f5q^9uwzUB!ez9n zhEWp>;VgFAGzt4l=4A8wko%7kobe+>v6ibT(02~-mXvmp!(?@)`j%a~21JhlGEa-0 z4T~KSPUVOB>g6)W!s8)`7v&gH8V@*U%b6@TTrvbqnNOf;W@dPIFwqAvT&@>Uh&Me} z#kGW0dkc)L#mc8F8kz&An7Z|lch8{7m}GPjaF`4Om4<`*6XDIAOWfBQOkD@5gm$kV ze`HT`VM9!O*t5MY;oUQ*70)tQZzy;_`ec{8J`HCX_BO!m%sP*EDU@nVpmKdb-una7 zTCTD!T=~#S;nQyhajOjvX4T6C?=Ls9!hZ{7c`TSKlol8}zl=U$+1=`isFVfwWjd}q z%&p)pu`rn)3;yI}HXF5Ex7%9@Ez<&9;i4%)oLfkXVAbTP8VZo@2x*ksJRlJl_u5=f zTd-T0h}jciHaclm)$v;3>GnXG;@6r!mPl`P?W@%szIomoP;YsvDtE1JAsfp?=+ic& zAKKQZ$S2|nf?cIniYV^`hDN9tK?6KfV_*cPdeBphnJA@yUADjBH0=9JA3O&KGDeMV zlGAE8g*zC<8c-%%mCnikqu$$jvk^J6?yK*qZAFJOoxtU8K|~juEH;4om~8zkP4PD^ zkdT6|Z#RuF&s>NE5`J{9w!y~-GTcY}fC7y3svQ%m%G*tXaYcjz=Y5q1vicMq;{% zv&xm7%@AE^u~vnbIq;$T(x3yJj$)+C_g!=dF2p44Q3#L8OrY$tp#}y!__4wtHFyTz;b0}zp65kxntow}c7uU3s~FpHC0_l;4!Oh#+}fG(NfrM-jf=uODD=ih ze#}(zz9Urir?f>ppYx-6QC5dhZ7xZ7j-Vw%CSQ z>DIUsE!{*4TB*U_o3dp~)`=EUz&N4&V8s)!)cSTFaTS-`r5n_BQjbx#K+V9S9pq5! z3sYq0_+~!N?VZIBh0AUUG>4>pxe2MZeM%jB-UroyY2PW*)G-1drOjkH{nbd{WVV&Q z#OpXUihMgS8Y$(Jc-4w1oj^JnhJH~uRwd{q2DsTbIZ67hl#}>xG8RDo87_bH4tA97 z0mA=cL`=}~Wx4LQwy+MC7)i%7cfA)_Iz0YPkVKH!NhTn5_uoNIY3%fqSl#J{Lh756FzW zKOX1RFv@N<8~Y@eRPW8RabWFufOj@s)i}w7W^4f%?m)NDF|v%l%smw) z`)xr9Z&)opM|!V1SD$FmPdiTV2oSwa807yCeBF3z1M8 z6Aox0*>pO>&)o9j>ITf1jQNLLqe}2NUy8xzTe4fNhMHvVy)Sjx;jN_%J5Y>!@wLUP zqT5>F>>7^1$}Av08eM(JaI_R3&PIH!yt}2$d$8xfY~Ld+83l&!^4@|xKD-=d zAGT22cj&k*tZ;tyjnzauwD@dY9#7}8xrJTlcxDYXZ@tJ;fAn%b?1PNXX&^gbgWX1w z-WZ8L8=(H@$@unx`Od{T=n%+9;=nh=HQoMrpg=5BfffFx4PuyQkBm$(?jpj8UPF={ zV(_{8Q3629MgHl;e`kF}cOEMl-7k7A#A<;Qpeerin3Nz&p+A=kKTGUXj7KSmM`s=X z{O9Lz?zi4Mk=|VQp-gPIQ~SmBsVw+-xdSKr%bavmC(RE-S!hOtR*dpFxt93) zjrjV>%YlnFu%0LVH|Oi)sp~+>`wn+dT`)QNX$QoC8U$49u)qgoyrx_|-p=eq{8}KD zh(v=>v+nSP2xS?{*oUN&N ze^~XOY;q#lX)OrYnG(X|vkR$ii0YlsH1x>+^W>d{S72Zx?xOgU#it znGsjzZA<*XkeH=*W1#gALoABP zq;3y^edkEMfy4>8%)w72HoGLVjXs1@X!QDtswVooECZ?1DQvbIgD*Mq~>`oTrRzhn)$|r@A**8^P|&mc!F}rQCQOWTTB=;KL-I+}f^c&;32(>avs>QgqZu^{2Q6EWV5@yLmf zXX@eDD>X$5E68*_4}|Bd1fUaqvdbd)6*8nJ`YCc{)b$7>gMz%s*%Fh zt|RhTh>mb507ub9jZ0(Uf{=HJ*VmFFPRbE-q#{P!Tq${_;_v#y{t}SVhp#0V$5AAD z9JLNbjA|81?!2mUvBNVZkuG@Ic}Vi(EZ%q3yOn=gVtS(r0}(CmW&l&KkD0-*2p>U5+BzyEJA{{|%)VxBYbUq36gNHR6OOc`XX65j<(k*U^<3>)cRM0!3q4VYQUw!8@3XO zgmxC>PyFDFD#ECLSyTOH#q_(Mk&2YG2l7NHehi5qKNXId8=~UAg6jyFi?$7%B-R=| zsyV7dx5&bc90%Iq1v;^gvRF`%YwZ$4Oo{bd9?O(gPnn(t@4kam6i5~urzx!~CPoS# zj3BgYUg1WhZ#!nk<>aToG8Zi5G5XXf6G0o)s8KA)wksT_4m%Y}Li?=h2!h3j%KV8u z{9#Lp{=PUNRCPXzbljhVof@R3qy?&ezQw5yBkVj4v&Tye?e0o3>}~-$&+cA29DCbM8@)BKF8etO)M7!o5W_LKaKw<^7+cwvaYS}c|X%SU2iqS1RLhE#l%zT$J%8b}HZDb%8#1*@g9TdxFd(D3Jy zP|Gj**UVoM-cl*K4N>+T{QG@Gvq3TqJF$km=?Mp#7U%S3`2xtL-xGs%%>vB`B4PY5bePpFp(op7cN zU^Q0l5vM;$A(Tr)N3wh7Kh#f|Q<^v+zE>+8?OpQe17$n`68Yyn)pb(#Fi1)b7pxlL zM~9z$c8p)adykq`f#S3{oW8WZ?2K=tUZeoIMEPpwN{f{UfE!Z zjJrkhBc`yO=a$E1DauWZj%mSSK^`mFp<4fzonFnhDh%BWhmM0nzE%~Ogpnex0rtcg zI}y7R@Zv)9grO5T;GScNnm1+ z2m6`V1H0L0Xp}vsBQUcf!{dat;e~s{{UmC1Da;L^vaVQpn_IAQ-JbTw;&h~Z($Wc| zhFRYlG686{6L=qdmL&wwe8d<=pdhRrYcJ0vbA54jUR*f%6WIq-w%)!gTP*6Il;NxK zACW#f8S1Q5zac-=!}pPL=azXKT4cd{7X45tVURNuIsI-OLoXZ!_F4Mko zg*zcuP=;D*G*3_cZZP!Cl-Y2Px6vN$w4P!fo>q1B_t0;)T9N6JgHYA>`dQU>OY$@Q z_F2)U%)^=1j&}QLMM#uNb+lvOH71L2hsEz!3cc<>oqNd-@Ich#Pg?q-Y0=9BcJ7edFrnh8Adp(WkFG}R;G6t$-to*;QzIvC!^@UWyns%43#6RSbnB3Skx2I$c%MmV z&En-EMczKbKDAZsZe|9x>@fvvM~+Y zrlyzOlF{nnfr7{_qm!^OJDkL&%KFvPP4aXLGQBLl<~c+7$wNoE_>5K^F0AU39<`jx9>n(HN-5pJq#ri&z5 zh@w&Oo*&D%B7{PWoPF{3<$dIR)aADHlx^a+h~4FKWoa^*seZ}DVloMTOoLzDiRfhx z>)d`Q5tH3%+~Z(#B7=wXJIamnv!tK>T@D*dsf4I9J&QD}x*OB~LuC3v^~C8dU*Rq@ zx(y(`;(zdpbh1I|{) zg51>BQ|rJfqwLP>1vqs3Qewwh{J?SglP25Z6KD;iEOgfgEv0!fe*lTi^C~s(14B#I zMP-uvxvuXIP9M{gGn`?AsM@wznaR)j}4}LkfPd)!}(&aKz3zRzM{4@k| zkCqVOmYzHBEf5EeYO&TY%eioHZ5k0*KfJ0BIt3j=yMzm?+rI=clT9C!7FuDS zqTZj6nmW7Eja@e6(#rj)=eVbGE9%`9N;`9Xrr~^yX1Kp{!>?C;7HPC8_vtiS!1uf` zPT4g#gMfW+gvXT;SOZCS%iVa*wrHlR)#_6)Og{p<*CoE~paHO3xVEj1M`xG8Oj%)} zBea<8RSaKmFC1=m+dRjLaQkPqdv?y}mRTX3I-^Ucl%0egkP+nF2AJN-(jliTbjk7j z4Ejq???u{1y&c%*=uWq?EPBHwI4XU2)Rr0#`!YCD+a;y$(;0+xKw6pbzZvnn=JmvF zpFqVPMWO)89;)Q39~ht99P~vgwB7GO0P}fXVjos3s{fp%-PHUS!G8YU6a_f2$ zzR5u5iHHePdd}2Or^B&Re3~hrCZT^*Z{nDLS$?~Yg3<&_#Fp{DSqHs?&OJ^{1&%U{ z@hKCi^Xr!eLmyVYFSF5Tf=3vnmixTWNL;!;actj0P5OuJ2O%~83_~W%Xf`LO(j?)G z7sR?LBPw*s27OBb(=LNxo}e0`*VLt0kv~6d#^h#gIpn%r!9c9 zx*ohwRe~{cdBacLWL)DGcRrsQpdzl)tL?W;em*##;xFw!nKV`ASl_s- z*oKC^;u41ar6`AF7LKvrOI7s!shgBmq4a*)V~QY~e!1hxyvx3Q|DLgx z*0%@z{aOm0L<^7m*e5wD$+XjyoR6vTffT;T; zAyp|J9^I5E@7^vkmo!pkoQ?qiVwWa+93HS2dzLvKVJo zimW()@dMZQrF3>64!Bi1oIg{H5mVMKPpXe5B~z#&{T?-`H0ly7h7c}&7%}Rxsk7IO zM|Eprc^BI$z{fcXoZhmLcAF%hsw(x_u1FST-o}7Y=J`7B^LrI|r|ED!zEk(@vXK3- zdfi8xafg4W;y`5AsW~YCB z8Vd>2d|!&f#8+Jpfeofkh46&0!43Oa|At+7og>;^&VrrC3y+AY1aBw1wQ^i86loy( zK$JqSTJtkt@h*5aAmDOVYLVoAZ+c%ab#mvxJAZUNJErn-ZU1z8c|cy36~MWHpA1wE z*yhtzrXEWM?!xHj1LTRW)>{c)`LPfqMISp+I1$AH2rc2F{W`EBlxdQLJ*)%DjJPrn zJhZr7JivLvAquD}sQ7KaI@`*}-e0~A;Ti|G!?@?^S#~(ioy6xz2p4Q~r>8e$5vR-B z9ZhJ|>FdCwUD+K2(F3W5n}8VJ2sfjOU3Pgx2?2 zxPlenkp-W1DBull*I;)4o%=Z7>VOd1&60GIDHBmm;FA9~61SRl*#FfbEpx|MKZ=zz zK6rhbyQtYg86ZR=3#kUq{vglNUE{LtuiLr?X0IBqF zC%ueAsEsn}W8%Uh6886AB<%6jGGWT?5b%U_RW29vkL{mXrFFgoq-@++rH>5lpd6s& zZyiK;oo{ln|N5nRuT6r;;^3X_xUlDs@p5jP^aYhM!9uZ~bn5S6q<&P1WRuqh5JxRH zHHJ!M3LYhK2I&2e&LeZ^aj9CjmR$`;$3OS>%hhuw*C+u4s|V>*{PYjfzp){qck`0q z$NmJJ+_jtwxEs=2NC)2P{9@MHhR$tjkY^wy6HW{=8AK8v+MvYYSqAAn-Gq8OK~PAk z!tagAfmb7KFJ0<4pMBrOn5fMMQ{3}C+8unWzwJqMbw2m>otx3dGv4j(P-KfJKY7U| z_@f_fBBch!Z5Ta|`gEs#7RsEOj9JT!pQfe5IObjr#5XGtCE&}4Ow~J$)ESpWJ%#Ss zF#9rf^)7P)NzSs9???Fagt)7o@{UHkGhK7zzN3Zb>^$0NRTj{Ykzn@z0ZN&@WdHtAQ$zsc3mh3X}?ptVKk^5FdH|GZ8l0 zA4-N~)?8n?oo=5alk^bAL;?$xvDq%VH&XG4r*WQkSJSipnF6qwJo4+g>M{5X%(Fvs z+hCPuzksjI^`>vRTh{%Tpg)VQ@pM$qJ?+F}CtvseVf|k5wR42uHA9a1h~uHeLBz4O z^S!DFXu>x|y2nfWtt>W>z<)j!9I_B+C6;alm91Xl4#i!&Wdyt|Tg3D}i>Sz$0UQmp zTdji|lF@+XvzG;@W40G={r-80cTP#4g3QVA-2YWH@}s0>aQe`3e2Pgdlil}{>U5wB z&OM)*v867~RKFLrj7^TOaC;O#mmZ%1$Oa$9*u@V105zWI3VdTd{ZN(RK>c!O+4)%QPmgtY`rqLhYS^XoptxL1};XYY8f=r;nIC zJ2&v`(ORW)$jJKV81l^n^^tuZf7dZ-jqKqK+5JtDgmqYHLF(&58nl|J6$4?SsH8La zTxj(>`q`+xMAe_%O@t9;J7@(?YtUr=0S&*CnaAVMp<*yxa>AVB0@Ye{hdxcxBLsGu zy9a7KjeU7~~1l|5OQ_+;$8;SumpnpD3QBEV&)cf33p3QdRbfOO2 zU(2~Skv6_SQreI1 z-wPeH1?4vpCG!nLy&M z+`#z4msTy?gYH!P5Wq%dMl_OSIU0@_v*=DJul5lkj~cR$y7c$`4U*8;FsNoqz&u@6 zgpOBJoC}IE6#PqZ>aEYTHJVx+m^&B(YDcjw#^#}eaw;7ZfgvBv5NOsC*9yKTydaV8 zRCEIhEA8mV7--6vaB3_~BnzN*FxNGF`4#K%q&~A+5%lZe&pfyhvYZdBF_ozs@ruas2JW&2zLWAxOz;@`?kE34)P__&SF}fZ zlT?|?<8h6-DT)X~>;Om4t)#h*;mjZn_{7v>q5-R+sUUQb^Y@gOdb!iSfgbI~EW8_i z-aszTaG`Z)$s@4uc})Sq$?oshARxt;V_f>9h|skn=g^laTtTiV=) zjy*+((u0WP-*{?U4d8Hx#QAB%Ox-gKuo)-$PSW6{@~Jzbzt`xvG{jO7!a|3tcJqx} zpGEJOEBl5LYUcX-w~In9sW}aXtcd5Wzbz+VT6@<}lL&|L!AFZhaj|!xkOUZ*t(?6Z z6#3Oj$d&a$YYB!4?S2x=#-yG)vbMrY&I)Kn`^`f^kWv{cS*VR}d39#Q$b8CEzuH>J z{jCmGS<(lOvuZ4j>exdMSzI5D0MX9s0e`XRv&Z}IBTceR@%HjB%KZ7UnMe$xeS6JT z`eGs8ii>@Vdp>i0CuH$b@#cEx@C%^Brw)2K5y5Lk4Ed1<14mkYqaBnSqa_lD`X~b- z9AbhBJne}?UC$B56OlTm6!o?geEG7x9{<==``*xkDwh{cz2KWvPA>UjGeRTV7YP4Y z!yK4{8C|Jd!A-5erNBn-_z@aaQKsQr?JvmKeeoBWzq+{Rx2#_eJU1k$3&+TKKMv`X zoV?&(4C%(;aJEXYc_M5IChE|F+!LCL`Agm&SEFNyVhhdqiuh>uiSZ!>>tbBhR$v>Ugv%sa{w?^<25FFvMO#EZmv+zm>?kZUzcS>Us-_uD4kQv4x-wTe z7|3rt{evywC`fzP%JrN%S9Y6fo2o_%cKH%xh@0beqI)c|J>n8kV5sf0HE7_iOozL6Xq(patFtjYkpk zn&wb`)U~_#M>IWW1e)Kq=zig$ z4cee-ig*p~U=Xz?IO*~Hq^QTL2kdwGy3n8(4QuGSu*EpNv%cPTG!=DOWI?_kKhi)@ zBb5B^hBBGnF*sc_`Qah_QZ!p527E=dBI$$JK1`SHrtR@Fj1s-037^dUzRtK6`~AU2 zT3`*$pj2W4>tCXhULpFaFc8We@R|$0gH%3+lZ&$pD%%1%L6@GE*SpA?4VAx(lot@$E7HuHMRM5r-7@d=!22 zLxhmW*m7ZHFFkkCaW0+hpe$(ut1FSZTJDlK1THTP&DD}7;#gwvv`Y#qbY9wF^;Z`B zX{K^e^)NO-#xm26fUfkB-$B%b8riSC0mxXHM?g^S=k9FK5LAfxC|f0YR?3b>ekR4j9>jV!381Z>(Um;N-U7xmh1~Ncc z-!8BO4|0bFsn2r$HjEHunadOZFT0?dGp$azkL!QcT1A7N@;w;N{%fvOj#SmKye%uw z7wP#^7AuXU@aex_{P!4PLG&cYNsxM`kSbc!>6ntc$CLKTd>ctZAjl}B;)Wznbon5n zDPfOYd!KX8`@N{^_&PqAf;~jBTdXo*bb(}F@_PXmOxW1sD=)y z&;D>6*lyc$1L5i?SXgr-9-`lYH&_-S04n=lO(u=pQq7l%hl1W!J$7@=3lS|1d(5Y& z=_66WZ(eF!-~a%#7x$Y5QplKgTnM8$pL-{W}-Hx@*2~PO_i3ilt+{ZsU1= zmgO(2jfUCA{o`aYS2I05UNgLu;mr(Z0I+yr=$3JO!o(XhIOs;=Xb>CEgPDKEgEjKx z7@n|;v+Xr#`lQgo;WcO_<(IZvVAfgr7NuU zKcG_$hHolV8Wn+fPWQEvY4g!mYOb?~Uq&ahL2|0=^jvmsd~~G$MqvB#(sH9i&+JS7 zl?Vvsixl-wV@HtZsPm)(%(7;zW=6nxxqi7CzKTQ}&$yFT7?@0ecZjgt>{#otRzhG| zt8~3J@PdqI-PAWon_N9MbYL94=3fN|6tW5Er#bY)157htURZh0&Fsv28$3NVuvMxK zV)(V6XIuhMC-z?R-6}dvTj0i`Sky2EP3D1TyR@|DS^{Gx59ILuz-@Kxdrfz8;kIcD zvvV`EpDNQF4hO@(G@EZE6~`=2e#+Uq3;j8#jl#9C#li?O*0<*8@Is3|J8D0Wf>DL2 zv07^y8;r^@8f!{bD%avqXSx5rvzv!IqVZkY+<+KJuFq{{mUFbzZ)6iK0=rz3%P6!%0~vsAZcZSZ{gS62WgrSS zb_0x{bdw&Ij8ehqJ_J0}+1@Ziv!#)J--qFc1o@kmC6KW(@=va$Pa9v+HfNO!&e8T> zWYXT+q>zGn>Nz)_`1&vLCh7Q}7`Pmk(I*CPRSqv`-&=WE5O{%+3?5YYP3XWHkq9vC znEo!>-^xf_+pTcy#)m?s8l{;sKiKtKf{cT)7YyO>FCbrB{?~rL8!(s<2x?&@dOi|* zjd^DG1s}2bxcLeS`L$m*s5m18XSC9DUqT-McQd9VI2==zwm+K82bUb65v39* zh&YMnq6X{_kvx4f!_oyk10sz!W8=HhZYEPuvbai8xcMj;-&{ zsHZDO6oeej+v>p0xB+qn{-*l>NAn>9!t75KK|*RGO$czrz<4MgPg{mEr6P^&jsP!~ z-uL=$og5JUOrkpxgB*GfNba(0M4kr|DK^c44Egae`s($@3GXj(!);Dy_pboU>$wUq zO4plc#`9PvK5fcKE^nM?=#Jj#v?To#?QWkZv}-g@PO2R0P)(-V>3CWCisM8|jAItU z%wzY8|Mp(rwZwx>6$Ijx^P*vPMS@ms16`QyjV5We?tnq8V+k6mxHeb%i_h+OgdhaT zeQv>V(DhHx3FCQvc>wx2+oQo1k67;KG2R(lxOx*-zK`()%4|FM5XE=@r9_{-8~xV9 zCFz?23=H5zkdYZJEwYR?PDHak?c}KK$0g6)oXra=Us~|wEkxIT_Y7}jEu+WL+{D!& zOLVlpWAIefCbo_3xtYG%!2%~5ij@cr;O0L93VNzP|X8Ijn>Z}YFE@9J!C=lNdx+6fIO z)0Ja(AyhTpEdOs==tbM^$n1;5cI<>Px z?Ij#_wT&C<{%3S0$<{e_2I&x6W;L(3H=Sa;3qXZ%e=&iJH?>?{mJ~|10?S#sm@K{{bsO)V`u~Fa4>7F`P^qUCx|2B`eHY zd&X=3w39F82%|t`Lwav(&v6HiL7GJ#c6z~-A6z~+-j}&m3DrKm^bh*yrEsncidZDXx=F6|0xfJv7o&tw11x!G* zG0yRBW1qFM`M_#OgCTC1`)+Cc(^J4x;NYNu3Sb-Nb1atb2|Gchc-U!k$CPxSY0qZzXVIiiTO-o<0e4+qP{A*Iy!cWgf}{nu!d5p=h@M*F0Nr}lJdMbqZYe=xdzJ$`q$ zjvUw9w&4s`I_6E{n)dt{07))7+@PFTs3OF$ zy>+{0;`XitJH$`i_r|$+CZfyUz}}O*hJ&?1w0`tw&f@gnJt<@l@)%zGiteeQV0|*R z_-Hu$vC%3s&WAF8M!G$n1Bj!I>3xYG+l4qq`-xiy<2c`C%?gw6yHMF?TH+eck1inR z-7U`@fo?dH)6d_I_?=%42>GX92qp*j72!Ow4^rD2?##?l_H&$vWD<{*()gE?`=aodh;#?<6)GMg8&U6k(RZd0Jj4D11#Tj)^oLxUf+tPySiv%>7ky1-g*B zx61e5Pn5-re^0^0r3+>pHgV^Vc}RmK-0AV_ym|89fB(hH$s{XQ{3RcL^s$Wl>KmdI zy7ZP~8JON>;-dMZe#@8WsZEpIJeq_wTC--2n!ROR%rUK|w}8kqTCR&H-wBH=APW{O zMF03l{Vs@Tem5@qzN@r};thwjYuCzGUwtqyD;oMt$2&$lknL$qt4Pq!#Os_j{Qnjt@;~dCnkUY zy*k7zwLAu6mwhDxozj{EQY()W{Md0{%b$O)h_t6+lKk8yPRU8No@@u=6m1Vn76VNf z$Fi3!S&GYAQ&uX9Gt+L|$ocUf1;KbXO(H)MBuvXd_FXr>CiH(i1v~`~YYK#8-kBR% z;pqGkB|?}l8sYt(0((FKet-CVq$6*zdGqG@w=$XMW;{1`_>Ekb3n2}63 znItwA3Co+`XU&=;f2~{@lmi~0X=cruEi3-|D=drfn1^}!qd&TZ$#@I1bOyl6rQdK{ zy?Tv21Kiev5jD4L*&p)sfER%8MhzmveQ@?Ve-d1EnK)re~hCeGj?Ldids+l z+4*j|<#u`EspsU+<$p3r>lVcw;6fMFEvUC!Cd(td*>mP9E$Js7Y0)AC8h>H>plq(9 zCDV}697MO>ey=S4{dY~xbe5L)kPsKw%bpGWZH_$n(4$yj3EI+NTUyP4Kgr=i zzp{yz@j?3q>aE)&eTn(lrnU*lw zPDY0xCry&R{hkGpllxDATe2|5e8HGYE{kE-hXa^#Ix75(Q5m*2@J~+xPl1Dr0-O)* z7sZU>iCk*w6Q%WGo&sr6fPIOA6Ymaw;e~?Cj?vAVH(z?)dZ)DS&{bNuxk^6$^fUd&+Ba7d9maox9WW9UOe*i2 z*j2e-xZ=6FiMWM1jAWy>yoo_Jb*U%VvD!>!3aPxP1hzbyNZ}9_Ht}ZDHC(VqtDNGCy=o%Y000oq-beh7B8~LWS~S+1&XmT<91%{`liH%q}r? zVFu;l!ZdUm!Zdsg?iZuS$md^tsbvyKv0}wk_^Md(1ck{?IOP2|_M--Ae*t1Nyj?6 zX^9KN0-6Makm^^2V|bFGrTg{QdGf-GuR^d7`a=Hv`8BL=-8vf2vaFp94?Yb?O%(r= z8ci5Z$ETHVxbSK5aWL90XP#MGhzrZfkt2K9o=o%4x^*&t{zAM30-LpY0MpdRf{!1= z_;YDNzx4|~&2R6CaAdh#w{4YyFFhk$u@Xc_OIC@}a+ihW5gzHzG%Ul~Nb|NmO@y^Xe4UDaNm9ndGFjm2AeY$pnTbnCGDHEGgR z?Oui>pTx!b5z}#O6F%opnx7^vmWE+@^5l`cdGkuXeECprPG;F_NBEp$xCq4`-x=ne zr+}xx!9fAe5$>3D=ZsxpXmcm?c;_jwHxyuBnm>PmTykkU`R3d2tKN)(5{@f(DYSES_e zWt7>Y-Zo*9xtTEG2USa)`|GcA^wCGlQJ@oXC*#I=*6qU&KbDnXevdouI51tgRrq@5 z*%#%HWy`Unv`Px(FMzlrDul7qel+qEnTIkhJPqir~LvZ zF0T|SR8Z5B@%r|=pD+j-gVu!=7w%3DAMp_w$DfobB>o16YL;Wieg%4sQanqQI$p9v zsF^lxx(s}IkSvAp$sN1nk1r_&3m&5a80(ogZytrgx{dsJlzjEoH(Gb%?c!?qlO}W% zC;liSJ{+k#j)l;t@`C|2no+guqmMqpF4j0%kHJq^WMaw4Ge6Y}Nzc>k)YhFimcw1S zkI}zALq9kc@Ys&qwr`WuPOGKNI?H4me=ux>O#5Xztb`UsTOFl1jvhTmlF$c9C&J={ zG#-7dbm>xIx$K){pmX9k26W1Wg$dS`?^&~C)xN;I>(_6PDZk8ZYFCL6brl(uDa1r{?C-U_-->RQN2UlX(hw3hZMFa4b@zgk#;tCkCc2 z7jk??$7s}VqE|G0AEW8P9RU=W2~DXVgBfR{tV6~SOV8wUWky+^T_`@=A;2>3dq5x8%!gYXushmE6+nE-+GSl;NpbwF(&5ak_d; zTwi(R^0q4gU7!^Hog165PTipCn)$+kdX$&)7+n4sL4 z7?X5jq#(e~L&1YHBXOnb7S%3^8}(gp=yr>oefC+BC36-qbu* zdfa@s6e?U$Mt$}Lwr@MCdK!frmPv+gBes9ZEYS@fJX9WdsE^|D-GqtK;*$3A7X(Px zS$lr-&3LI=r80Ik{zjU=q+-PiDqJ!x)2#Y?o$iLx|JrMBf?2GrZNL?c%iDHU0hMv2 z%X8SZcaN{xS4Nrnmx7V)*y(yz zN#qJhm+N}UQ+@j@L(BeX_y*#JK$sXT=Qq1rcL&(7iWNOgceF?|3UXbp>8`LSAU)n^ zfIRu+(<+$qV?{@Sb-XVK2XCTcwOAG zqh8TKRkRapG*Kp;`FWm@f;e{|={T9RXnwIQShz_26h50byNE0NH41El`eg%E)s0oyh%>3UM+-4!Tym)`$+9t zH9@bfI1{-->YUvQ>Ic7}4`+qYyB!nn(b`YgUnqRB|K8m5P6+eAs1S12S!c-G@4Oe5 z$8j=d+<2){xw3}M!}zU#PCc~a+vx%?j`v(SbLn^(ihe>1nsi*O zs8#QBeP(EYCjER~~)rNv$*c;|V7;#7AgyT!0c4ZaL=GV|-EA zt5oS6UF6^xVjsTwmOJG9^UqVEaK?;Tm`i#=Kn^qtY|Ln3>G;FBiL~Gt;X5?~s7f+( z)-0W~x1&zR>@j{%9fm;0xxIi*da+*o@!ftIhpdOZrxfsQlT0~&FGvq{_DqgW_07Je zVct|z`Up>fv?;*vV7s=L>jL81wd=SJppM!tbmX`1z3Fn@JYavNBM-lR!$w{Brhn$l z+1Ld`0Z{C4a$><571NLd);tzdK>krdg z9<0oAR)~RV(kxhgj#vlZQAR%0}`?22|*$8eS<3RWCNY+!z)7(gGiIv)(MS6LM#tFd)j=8fXlr=Cr=N*E z-TzsA=N|}OvC=2hjLn%dSHrNQ7HfLZC1E@cBgU}15L>!*X&81(&)Z{zUVB6RpM5qu zmalN-*!%?x)Q?@77|sX9j254L_C@TPYrDlD=xIF8%^-cH*!b}i)Q>YKsK-Y!Fz@Q; zAFQ0|J8?U%TS-Ujn}tEiczLgpd>~e`4(zX+wwIrWjT-!nDNu>P}tN&-$^g zv8u2Bl`B`qKKkh6unk6z{3O=B`z_jDOaN7`SiSm9VmK$L>2JQ}_80`V7z8`@W7jO! z@#^bhtdBXv8%$x)-qUAj6a?xR1gzM*?+sBu7}{7{wC~1Eo74|RGFGxojTj7{7^v8| zufC3T?s9$DSNrto8@r@+yBLHCO|x*}qFAQ96=FCmrG5zHTBh4qUwCm~tVXT+N>BE^ zT*p+_c1TLv61)C}n>0NbaLo^aELQid3-q1+kF@#_^rU0odFrYDu}+<@Q$O3PMA=i( zCzc^@N37|^tx>;z8pl5qC;l%*{YQ@;gE91N7>^yKSc_IyC|(?MENke{VPQPmf?;6v zHSG1*-_mhu#*4Q0)-Wz-E^*1%1b4in?mxTS5f!JA#RjGbv*ykDc{0jqP_n|Iy3l}cZGL6op z)3eXL7<=)hVE!BZ<(L%lI5!r48!@*2 zj$u(G2K7*lqrZ8J%VJ~3j8(ro7YDgh|I7N)alYVudE-sD#(Ld)ckKD+Uy2PF@LcSc zo_EH2+}H~=|2!NsmM3+nJIAm;lMdF`c22S9A%scTd*affmBqQRGpY_51$R$ql974# zwyi?k0`?^I9!W2oHf;ib@hAA7HJJC-#h`%_!$Oq)u$v#___QCto$OnQe%8N_B-;79 zW()<$KV8)9vhX`=r9Ac2)3K+)8`H6G(k)-UT+>dC^PkMvcpc9s*$mzPT~ zZK+AoSQ4bQoT9r&T%|98tx$7Z?JWYeA*%4vQKgXQ!?>C}b?OQ|kFtH;9GqVZR(^TN z{(|$*#ct0rnx5s*aTm*VEa#Y`U`;YkK&@YVReHjoE1yxsAC?7`{1_diZB6iM~CWI zzf7Nw)$t{&uEpH}u8bEdR0zmafKh<~(&5Usx+Bw!J3ev8^HrolR;;emae;(*aF-Mx z4jJ_Jr}Evn!FryB@ztwWm8bhXraMsd(-C(%svh2S)2&hsD=2h4Bh$V6^?G)SyF5?! ze^W+%g!5+c^DtC}yzj1VGWv@#!7dc?%*1X%6{xooCRIsiVD;t7c5PJklQ7GaDJ@Su zbc61;(oglT4p&_RHN4a5Rmb{Wf8DjZi*h1%Q*&k$?B=Wl9oc`g%G+gDbZpeGe@>XcF6vOOVr{fru#;1! zY-t((!8dC=)p<3yP;qS`jZCc7Cs2+gZ#*W@9`S_zDP*J#6&TUX%TDQIgJC!S;$~swb=I&Lq ziyINVI<|{D2e1u48#P>BeCZWA|Gaad?odj1FRd^0jNut|PsIvcKF!bYHkWsh@~8`4 z38++JF+uw!{p_!GPp>KeK^2vbDy3PnW>&*2U~IJC;bVf`#V@7fRaa`=A^e5?mwB-G zBUiRaYK}N(g_&KtpJ0TjOD$6C8wA3BMufP5VxX+i5znF~t zJrrJg|8RcgxTH1E2OfMB=U@v0&#R>f=E8h=^J+h!$}V>*A>6Cw(EIMaOKHu#ZaeL& zOrE0*Mt?B=ZA|Yf->%}>-h{O$@GLLOpmk8HqEgM1?L}uW?a45UV@T@V^0<7VyJH z8n<61zvEmy=4|V$=)M@+mLqu5pZvv08Fx7Pf-eqh24a}8j6JR>s7L157(IhSl|4G@ zFq6Ri;F;r@8x2cJX8g(Uolvg0e)Raxk3Q9sPCuhMn3?t3h#w7q8;s1U^3cOis{ZIp z17A_NY;5M?&)h69+tsR8(nISEV?BBPqFS}eiZ8>klOxw$i$j1dItZB`GD`)Ht)z5e zytCWe z^2{6^RToJ!8a1Js9v$gLSXAevSv~DhsKRG}JN~~b3DxlH=jJ=hO9U`ey z_e`A8`BBf_jl_ALrOTE{{{hc}Aq$L_P`EOtfag$-D{}@c-Mk8+W2xdm<|_%pCIMQ zwjqph{s7H zcs$F{)8Ru^NptKYV9&$;NL6RzX>$?#@!x;1QT1D%g&PgLd2X=vrOg!t^Jm9m2gjf} z#SQ(~aAdfeqmL)R?zS%CkVYIwtPdAVc*c{C;l+vu3qBO?2!~_4+R0_K4^oYpj)FDM z4`R0tDx}M0z%$Qbp(3veOnpF8s&#+%`Ik^b{!eODEundm|M2sbx+4y(J5?}y+;}Tg zDo>SLZs{Q>ophqA3=?1WZH@(=|6^Q@Q%)A_km*=vUh4y?mEzKeZ8!+3%v|)axtaNx zhV8*8)i>GCqi`9|F#Z^C{frBSgaz#c88T#;qQNv4Z+J1Cm0@8lk9pa?qrV)hXY~3# z{jActckjob+Wwj*<(M9cerzzg(1V@so#3&ZL)@J2gW<#S64i}`Fr4i`xJ=Kq=2&hB z*8&7`Y_?{(~ZTb0R zSxo0T($-YG`}cniD((+rOvS&mDBh*L)yH7DerpSZ?c!@;hsx8f7jcgItsV?dZXpZx zPfvk;O@W}FMf+NA@GqP*>1)i>3t&9xbc!4W_ex%xkQ8ew@74k>GUc zHValMH*DA}Uw=16n!xfIKT!M@;IUhd3=c?|G7kU|9vx%IcybrS9Lpi`bK@)(Kkjtg zQTS@?C&4+3xD`E`sh{}$STHj%;|xdUxqG+krR%lVfZ?5o9juGMcvjFAePg1Tj*U+9 z<7d}PW+-Wjo@Tb|ofU+!gA5ru9IK#(eGd{ltYoqrs0qPLgL{d>1=l->E?arr~+2_3MMPX1Q|Z#`&a03=Vf7$b{~| z2Z{_LiO8~8e>#5H*x5UG?kJr)U8Tk#>YaP38k)EeyM|;qjp<~^U-0`Xx$(wsD!4H} znMA_iZY60|q)>i^4;2UOXtY*iA+`%d;}HV~zNRbwtao9o8sB#7Ez;v=XFVIzZ8rN_gjW3KC z@riWn)-@DbxHI=3n3uv3w2s61p`}ZgL71qhf*JEJT(k&%B`|)#d)T0A8wzpke-ug> zPG^?n7A^WcoCrvdsZ(btb41~v?q4vGJqyC^wwo9^{My6V4QZi$i?qM{o=0@N7J;Ff_eOpvk3PIf8EV4j`MWPi|0ECh4i-Yl z2-P{QHg<&S$iolaCs5y&4p(=VsXu+KeetKCXULs*^ki0b?7yFn`ceA_4XDsjuzvr& zujP@4?+eFm+siMLGG$8ZgiEH6eVS+T{s*HRuMB!0=jVP-c zBRbqAtOWt#p$G0!gEbABbdbN7{j7}Fk3UY8Zr5LH*|qMW2QQp*GU@J15K6cPn<1p> zdFP%jH}<$e6L20PGfd{v;@R%je;LO7_My;3_(R$lgUj|GGV~+tNZp8bqxHq?djAP6 zDONb4ytd{4CeKi&(mpUe>o$GnavgucLO?$0bah9agE%(1h_DH?pfL}qS;8>Lw>YEq z8LqmhfW;f06I-g|*YHX6i8|Vp-XDuJ4eHmEHf=6VGYiMY6<1t_1(hW2*SFnzbC8~W z*?>hLuq`>4Q=sJihmSwjTMeb~+@sNuPn+*EWx>iQ{?Rcnzg(P%a<=J@4PomZUV1qyy`M6 z_Vc@IT4dB#p}~!g9j^=pE*hYsWpXZ{(;e>pGnl(~DmGRT~uxuZhHl#CHq-Ef`> z%=YJD$FNCGf#Q$(DFBQa`!yK;#Tu0v>XciMKdd(?iq}%haV&sL>i7whg%;)LXekb7hSX{zKP+6mUa|C- z@Pqd4`0oVgZxmLws#T?W<+3t#$S`HfS>GXezxB4eq0SeWv)_naD&lS*G5hG#XvI@~ zpOK=+9gDcEYK)>{<+Id~gAKsd%hw|==u%XX{N}qKaTs&1;>k2@>-7+9$<*C*M_0M+ z&IeTJ;;JTvfC?2(!0sA%21Jcwka4H02jTgHp>GR~VvsSX5s7ooZHAqiuazFR-FgGm z@>=RHCe{7E{q{Q*3fo-PTJzI7UbU(xsntOSP!K&AhEm8_PM|f=Zai2&zOgMBDKA(HGubhJ&BxBym zHf`M+?4oI+_#d`^;4;a-|0U__E`=_fjgx!s?X6>k6BgU=!{MW`TLHlq#9_OU0b##g z0S5lfH{XF^mZYo5ylbs)_0oc~Nvb}|6{R=dd>h3q3z-+H_1$&X{jvs3Xm<2>!kIZ^ zg)&QQ=VJ>W6V{RV1$|)|4AZ=$I~l81{S5;wFUk3hsv})VwZeD%?f0nh7zzc%anz{K zr0aDzs@h&Ys0l7yvMQ)5{!X7h1FFMapzan3bBv%>#s9$=1qBj1mUTV^pSUCDw4aRT*=TE5cwYs#ujQaF*%|bfQpF2t3 zg#|*4|9 zCVV$R2K4V6F4P2grNqz0RkaO(1JySdE?5k;?N<6uYqeBK=FUIP8|stq3}YNGmcOj^ zrMO3Kp6>Xv9)y*evpHko!iAvgA98m6COTh{A!i(a-1Xty#WtcE;OyCR(6?X!2(T?b zH;ygR3)GCU>}wDv(oU$bqppr=!sCKlF=!?*E$i^{Cu7t&4$jf)q80JvkAfWMIEJ$f`*Bf?I8o4;H}5xH zP%#|r$-D2Kd39uX-yG8h`2)j3JfzO?U@+ZXC*sKYL*uZ}z`B!$q@~f2@JO@u>jM>7 zrlpY2`IGYs-O{B2Q^fo@_p12f9EP?J$2oClpC?SVAJcG-AYB+n$GL~)a7T)2w6kZ= z)tz_>Uv$LjCw$+3{&_0$FVOjmZD?bO^zL@?e*=xj{O#zf83&nC2X442}DCGBhOK&@|)=TDQIgM`$ii=AAG; z4`-({D2Yb~r%2&IRfZL|$!m8i&y`?K%&wz~STHdL4b!E|ReI*(igsP}ObF9{{)j*G(79YKw1~8Sg~BF>c=pi#aN38y+Wlk73R-VrpYnK zRndTNd=5F2DBfRQ}Z{M~h%&DKILRy(J zrE!+2wKQmO4y-?3F4bx`mVQqUP-`**_ciG7)YC8NN0`Fft1l10&fdomU@npi8n=*} z?|2;6Y}zPO$HBAupN)DS6;~~22K|gP8q0-fi#zUm02VBZ5~Q|K#flZ=s&>s_S+bte zt3gv-v^V4loaL&nX=>G~i8FKcpypXs&r{hhmwos_oF^OElyZhlDbo;c&2=F+rD1GL%28sDOMGqnGcQntzk(ysm0 z(zsPuRqw1(<790!erzjOK1tJB`CRpW>Z$&E_N;atSfZQs6I8N#>4%-nEmvti8uq#j z9rlT~Q~ib)E2GQZKJK8gU1`#tg59-Udq4#;7&~TZ^OREpIi~)mhFZWK5ejX{f@O;i&YC(@!gcKTB4)G$(_StfqGQ z>8Ht?uRH;!?ks7JIiysndKd%Q#(!SjlYQd3#6#BS8;5v>OGJ~WM zcl&0{_)?yHdZ6~{vl}!=yHwQs|Con@0PDit{Ca5HDyKG53yeKMJ38LE_T-Zft98e- z>NS#!o41j>9(WqNFc<2g#YrcfguBVQWA3VhK6wRpmqtnDYNy*&qcGC?V{nnrn3f>BZ z2Td0rQsch*28$#2>$tRU_LpPE;*!sM^xI}I`D7ozw0$q^5a*ZE>R+kX5OD0h^wO)S z-#40+{gP^!6bgAc`{W;glJ^G>hXu>N8pcGtQsUUMr^{t+uZ6I7T4)`UakFtnzzyAd zp}l(R*+nk&&{==wSbgxp$E8lS60o-WEY!fC4{6G4Jt|gjAh!Vb8nqi?;ps!o%N<=? zv~lUo>qm+dIaPYxbf+}LLewY7Pe;LsmV}9mISO1Cx9p$-5*KnFee5ap?N|ip2Nn#_fq$) zMso5Qt>n(zy6B=Gap9OFAOGRdSLB^{N8oJq#o)y*kXK)QT^e0*o}$aXZ16G?{{sq} zRuC60UK(4tXvrR1lmemDVbuv%<^BPjWXmP^(5R&`d@w9o3@d9feE35PXN+z76=z=I;^naxmnZULmc9u0r+G2XvuH>{Dm4% zJZLEq%(W&XO^A={aN%wYtB9!A9L>XW3Ey>C`P6zZht(r1$LdJfq#sr-!z?(gueA8% zk3T|MFcLdAYU$5lFpT)Z1Ual7&V?1fg6?*MydT7zSoe!x(4I?H7sifO$fnTA+P^V=C&{_O!$Z=11{nJF*;eSb1gq*AXLO*47EOsW`vcq0 zb!?x-zyGf7z&^?HNjo<`>9%m;qOkvwM%ek#pIQB6+Y~8rN^I=7uM|At($Rva+lQhw zWjU+^`@ZXFy_0XW~CL!9qYnz!+b1@;}OP8)RO9N=$G!;GrXct;)nn0?!4vi*(8*|hhW!x>JTdI#>sX~lN!KbVuE2=ZtX(hG@cd@l=4|U%Uwxh2q>gWb zeBi;}>i_P$@0Ct4@S=WNlcf9Ni_x*mV9An>{e*crp6N*I%VAyjZCI|PGrZJ;KVaZv z=QnB|(t+u_Ue_Zwc<@k7GGxdHFDsje4O~V)mcXE$)f47SQdNe;lM&IaTO^H%gN(_Taw~g_2e_v3NI7W z>T>5UH)uYN*HdfPSNyP`pkWa9)M~DMLu}k>ptk z`D0&U-4gw*583k|uC_<*Af^EO7Wq2%O?4R7Hn!>K{6QWNJKWk285Zqx{N6$3TP=vk zr-c+SnCEbHsv|%t6NJQ>f{j>(4bJRf65lNc0;w7YRXJS8ofLCS!?Fq$DyTn(TNou~ z{^*Fya#)w+StnXUbDc@VeDZ=f{>&LHu0+#uhvCdKPfwvvMHMw}aaO7nSZX93gUOwZ zN+$*3%x`Cd2$yGqqR#Ts07AKPWx{CFab-TzBT5rmP2*Uqjm4Ojl7?ZZtTqYLR*woGz8tz8J4 zj_M><4-McSMqzW&`a&3v7aB7#g9br((4Pp8xbv)7)KL|(&!cw$kJ1`NoXzn)T0VD} z=&b&1_q5vH4wM>9s@)h3EsSci(J;4PxOuEx?xdD07pOHF9QVncLjKG}@uvEt?Zz<; zjkUOreVx0QuH!DikfHsd<{Ru5T7P3Z+E|FTx3x9l@SeKVa3(BXu$;(Qok=5?PNWgl zQeBsnv{|0*cQ7&)r@A%q60!wPVozg1*Dcp!sv1!DJXO9yiBv6LpE^HyV@S z&vmS$o1f&doEkHb`_j!(|PuH)s= z_z=P}WS}-iBSfTE&6=l%$=KhZuoZ`qKy?dI)@SC;hnU7j)SX%lAPPX2xDbBO z2C$loe$TlG3^a_dd@hea{*-WsmX6OsgC4;y+)$`upQS4I5UlhY!1kw>!s~C`A6h6q z_uTqw0H-Lv1zTXKiRWOgO$ZOgVwW0ciGc{u$Zdqds7{@(4Cit7E2@d#eRl`3xpBsf znexK(ufqcIG~G4b5z8U1S~ZuGsy3Ae?!Oy2!Q!nPEp4IFO^c{>T{?Hbv4Q7R6_EXt z^U-=32(o#d<+yV(H9v|SR|x8uGj$%HGiMHXkvwwB$tNp3o@34(=Pht0i*)aCC1_Iz zwA>-bgGadgjvm+{8-d;8i>&SRec8}dKN>a|3CaD-;?wiAKAE1hK8>eS6 z=xoAq(^}(Md5QdFR?dS7YlFf3{P;I%d_frIew_jxMjJ#pJRmWmKfUi(jthtH=A!RL2NH=mF+bCA9<(_6`C}aCL;EoenMeL?p0sjy z^(1WUq(R*?5H6V?cZ%tm!4OB3wmt@f@nPd7_BY9>P=i@P_L)p zLq~eCz2156BQ@|um1UmKoA%2bsdS<(7*IvI2vP_1vNmLXgUfTbbQJXHXjEtk&YQKp zA~1|X94TOPv2YlS5Mec0X-T1jjsh4~p0Tizl18?;$a82r_YIr_+Y*#Zy5+!P9xoI( zM?6_(P8b6+hZSzTu2WS-o{OY0rIk=gl&wp&d|lYcRtO6L$qN*DAaqe^vhrCMzFRvQ z4cKlB=XberqjRBVJXtPm(paz~Chab75emp`13O>L^W#7MI7P3#p;|Akl`h2Pt-;0V zqKj?E9Frd^kc)8+^Dmssttsc>sKBt{BjlXr^<>JlnQ~Q!c3Qo#zguMwk>^f$voYBz zt`*}%HzysyRPtVB~Dpxda_3GjLxW07`slN zJW_T_>((|onTAHwM*UH|cJjNh@ty+jNLi7jJ9(pJr+~Fn>L4J^JgJoL=5gOsDPo@m zrzk5G+^nz^X~RH!!7~AI+&n>aq>zZ0&{F2vIe{A=ZF@H^VR;U^_PWbFJELG(_vq=C zw?_ctnOr!0=iHju?fkJxPMczais$_A$VqzJ6b$rdvdkn$g|x*1o@S0@q!Se^|Z!{rzFl4 z%1G0CXP<>Lkp1=gi7C@&NUvMEhjntT5R=}mS~Z0b)n5At4PSBhJv$a|37)%@SGB(s zJ7U9iN3(IG^RR1tg3OpT55`nR0oO{QwuI3vMEnqXu{j|%lo_wokI+2L^yy5S8Vn!q zDd1AT9bfKyYH4%;yOD?ad$JJ@tVES4nyk{48nH5x9#*EVz(MWF{25uMhwUlgDd12b z;5D6qgYflGz%dZ&mfGU{{&kMX?V8E2BhFpDFTOyeDP zorl4)vY3ucG#$-!$8cfa!r@3)fDk{*IgsG-`Y(+7&cOwbM9o$gkg$t>24&0Q(GB7zyHE_y}lX0Rgq zknZrA`eY(HGb~V9O%@Qyz*`;oq>xC*ch-+8bmpp7sR9eOKdO2;jqz}&jhB$mo%5?E zVV+!2XAb$<+_~2^ zFj3yTDZ?t9aDq&m@(W=91!E&cRh5|6NPO|dm)e#TOmpz+m9Vk_&2r`DE?UsGY(JbG zGjG_xSf1shy77r8R)7WAht=Bd2`JZGHf@Ul)>&uPl^0)r4{FglbceJ=iQ;O_cG|RG zEVQzkbM_g*JuQb*1$|vS1v~|Ig90w2xEtB_Ytlmj$2dVUf}si6uidA( z?X=XYRZ~rPe+M)6<_u3-o`oR>W$rADX=sj~0uap$(-|!F;E$!{x!c!Ye@D)5SP#2p z!Ga!zH#**-_3_9ddJO^9=&tN=iQIB?4_xo?D69ZJr+38BB473D!TCO($6B&Zw z5*SvH3op7A2U3y7NwQ9&6sy4VI@q`n~O4*ankXK%P z9ankWg?j-TEA5z{=eb4<9~;tzVNu7+wXbY{iCU~3IB<~eq+N1pOQ{IBw1D~k;GqH| zBe)_aCbSw$XDWO~Q=Yq`+|!~}TeZSit8QZmbz8%;i!EC=(|aG=0M0enc88ESRkp92 zqxVX3$M3UGhpF{a7q`zxjR?a?KdNzm`|YQC-tCDe`oSvi^LplvX7nlaQ8n|&AI1Rx zH znw$m=>PwfaTSH*2t`}$DhAS|rV#qShaYUU}R2*Fsu7kS-cbDJ}gS%UBx8N4sVQ_bM z2*KUmAwY0M0qIpAHp(jhGz%HJ zMVxPBRdPuy(C96&27(HZ?9#-AtD`=%fb7FQ-k|JZzSq&bL@{lo{zG1YI@F((NjRXt zDFOQF*L<`Axh7%H3@}OL$D#&(#f!*;BE*y*r`RTpYMz7ZW@ZHS$TMvFElRR zCoxI*{1S=owVy@jVy&+kDUx89>1P%>o+-rCC?d}Xm2vZ9+X?<`Kk!~8GV1Y^F<8-aFpH4vEI$r|o=V0o`N5`qbk{ zX*oyX5{JHk!i`J`r}qvKKkS7}2g(g=s8M}w;?-JsX1V87^Omk>vkrY$(6YuS3msX= zO62^T^ebK`_w5+lT?N5vwlllAi&kJZWl?c&cpWpei)S{E)m^}G8VnY`=}A(l)l#AJ z@$S6<7d(K^8Y!|^`RlpT95)I8_~vGH6db}=f!Mc$Olc`pKg&lYl&pAxrp(~H!qjc? zntqL|i4r^=6KoX}4DH>r3P1Xb70&IQ!@@o$iAIG7%BCE@f_O(^DtF3tzOh>Cxg#Oy zlu@l*eHu7;O45}JP`V`8RWLYTX`JhUPAD-p$P5w~xV22)E@!t*Gjk)w*iFMg-=Renj*zrXR*7DYNNE!SO`|%J1PV493xOXyh zwwWS*dVu7-weqLgZOiB9e{>js@>K9FN%U5+ZNz%}N6T#!oaYH@T)B^Le(}dHl~Rkfmh{vOTI{Wwu|66G;wat zZmhRaz}G)D?9fO1dj9K1BZLwmCrDek%TGXLyfKxExw88o5G4n^{g+S{_PTi4op_=V zyE$lx+Xo5{rMDx&A>FJ)IzBTxq9d(%UAn+{p{Qk`&OWYmu1-6kSgjv)OMM@3S#d1C zZ52{_*XkOtz-C?^xb2ouNkAZ*tbOX%;_=G*ui)Hj@{A6N3+rFlGQy|2P!nhm?OrJM zBQVB8$$q5RNpu(XX;?j>bxp@yQhDQgv({nR$yGihNpeMRTRSj%7s<|Vqg&gjOMZ&m z8+Qzn^2Ixi);(Hy<}+x+)&#I3F_p93rpaOq0uT<{x5ZZqOGF7`f^py3QC1>8e?PIr zOk8m-g`nrE!vvaNF(AFG7k|&Bnk`^rS`wq0@H z8ND6MBX|YaALU7-4q8GUz?lCp3xI3)L!yl2U;ueO2f%>cBF3p2iiqnP{#G zhYxS6HXg8fy<2E6F{ho-t)BQ!Tf``qF}Y1zfxZq zt$XF?9S9EK|1J-vCcFpZDm$aD^)h6jtjrWEM~IYzy&4kRjdU@m@`CgK-cSrkG+ua( zD7J$kNG31VR5(NSHva~x>dz~MZEN0OW(!7}zK-nFYp)~cWPA%$VtAdZU8}b9xYlj2 z*9q22KDU95;8Av73o7E4b9flm6zJGz*W?X`ArMf9fEHsZhNTU6mtW<8eyg{{Qx+k2 zZQy_p4c1Wj6J^5|xcwvr)Ib42I1aYp$!WT8X1u_MeV;;gq4Auly?i;=BW-XH0ELY!e z9f7j|7TdBn)gNM6-zV;Ml{O6+`S+I#2akJc_^)OlhKjE-0Gc#$Ne%KTAFUD$re?i` z>wBwpL6H;~Y2f}5Huy|cMfRBX_PquRbR)Ck?{cEahq^6`43ZBObwA$^TKtA^E@L#| zuj-T5q8|uxT_G4FH<5AoO5R#sNXg(*tkLf`eL{5yMd73E?Mob)soS$l$47`X0Noh; zSO#98`}*I3rc6@!z0nDcOQ6vWUW>|G3lFoShPD$z(28sd{s&0p+wkQ^7X$|efdO+c z{wA|!CNa5GXbY>}i^3aRI~i86JhQ#Fw)Ze5X58pGor9c?$lFSh4_c&1Cr{7CNQmu) zXnO4OR%21Vv3hB>$mmvlZ?e(aFMu!n!uS+H{gTFZW?%ZGKQnIrj}`>t1(CxSOc87~ zsezk=Yeal2XuSHF{{D%~H@$!u(rl39vAxxO+;anI$PMVIiHsR4AEJ*rHh~@$$o4bPm4ATv^r7 z+XYYv{QV!t3AE}E7)rO;?KcO@K7uDr{%^tAqKPAdx1Zqn7{bXDi;5Y5Vpgd$z%rk_ zOFEtXkEhj!QNvB%h)0ouu;wvvLoJhvQ?xHda4Px_f%T9D`W7k~xU)glgeRKwl$ZC? zj^qSBaR2-7-=Ul@RMVFQSa5A!Te9#J6m6fo2BDoK8KKa|v0nr5jjrP@Pcn z7YXgr35NklF5edNlrKprH~&t+_YGCICCgI}Kn)tG4n~y|_FERv%9;SaEk1_N^)n&e z2}>$DafDFH+k5$cHx^0{rQ7?Boc60}k^A+25nA20m!@w!q4O!R;N5wfm$2yIBI=)X#~!6l#eypFS9b; z-MdlTjvC=;!G+jN86Y#nuop85hCl>;@j4T@*e^xRBgYEnPl*eRowGvOTH^7WQOCoJyM7%n$4nRAd9m zvlyR4-1Pl|>oqL1=dxz3+814CVKhhW#E>TW`$V&xB8WSR#dpx_a9pw}^mt~brRKz+ zaI0J|YOCXpVdTD~e0!4w*g!V4&vh}CXE$rM{r%ZAaI|@v#+!^vVIK=GkOygTY4?yEmRWiSz(^gh87}TqsVv6$%i9C_TV@ zxilh+c!zIX!NChB4vgdx6+QR-`|mH$oHu-fmw=R56s(og4T;K#g$P!kb*yH+smrRHmQYvZ)M-m~6*a?+ig4^~>Eza=FPc+8Rs?!uDuoVw0>DY(9VBM^7v15sGE60+L*W{lnL- zW~+JH=l91ii|h_k@!Uv?9hIDR8}z4()hMqQ0{+<&wKTu|0#B7+*3$Oe@RWYbDz5D5 zevJQPxq(IsTj#;#Vy*giF;DD!taS*8=QH6>WVL9!TqiyX{|xZ1&?O4k)V-NK+e8#p zeyMN_uCQr3)7pPZ7&=!9#HlTsOrr^eK}nX+#&;NtTXEOHR4ts zfbZiBGLlmqTzqG#PVNu#Hc!hO{9*x6>-d=5Q2Qd~!nSSc;Kne;i|kfBu)bah0R2R? zx3{P4TxhRl2kv}tu<&>Nyv*#Rk2U2+hJV+20S7fS|D{NmOGqE1xQ-m6hKdmm3>gha zr+zNIz*0~2e49c+Jj8sb3Vh;Bi`vRrtlOtEojqX4Sm4icSRXx$IC|XChZ*Ghx!DC# zXTKc_9|)Ad>B;afC!k`?t*SF34&yNBN-PDwJ=G2xt+||XNd?PrY(EC&+HKvS2(DTF z5){1H=Q1@!GcYhnXK{-8{{8pt4MbIVziV?-@#tpdTN1>@MrX0T+?&&(52Z*@gX6`T zNANgL+YHQ?%M4h-i5s1fpay#Cb@DCio1|mM?LP5$DsO86Z?1hK$VYo1$T&~>(gtF8 zsHsFfzp6sJQF|8^xqmEoSQ3K&4KQk3TE8=cJ588Elg~C@&L^jTu{ETahM2KYwqbXQ zQh|PIj{uIkn+BH1EDwb2c}&HDI8w;wA+J9iQ|S%aEQ%>202`p5#iKHL3!(!!%T=vvuk&5 zjmY+KK!}@OP<5Co02H=EvZrh`ut8kHdEzqex!Ccdn zYYhdxKMMm)Z`Z|%i=D3LZBh7w(rqr6l>A-~$(>%0G%<*Z*RAAoP|PxginZ}xn|UfZ z2VTAoLMHfb&oh+i0#02-mWtgy{t)FDa?l|$Wq*4`CBE&-LC#KNL;|T5a~34>iTgFF zPIJ|wE%DNT3jh=Sqd8)GjvV6V!H|beducQ(nO_c1y9fs_il_n2kBcXgnitIS?@#O= z>2)^iZK5$m+$RC%edCGOa{PMnZ~A=my*;K$PKT4DzXxQKrT3b93o*HJM$AqO2gEml zfqS6Z3B=~=sO-snDRPnmv5?4@nsfN`K=nF?Iz$ZB0x}`mX|CR<=D2Ce=09b3I zA96ENRqGT-uZ6fK#kl(tN>;BdByHj;q)DXldR=5WpH8o;0SC*~Zh6D8Cnb$C?}`YZ zWBL{A^WxutIE$V13c5V$Zgf7VMBU+%<{68pBlbLj2u<@h$)}WRBYP*4j%jsib?GhG zzql`E&Ep_Nh>O{tZ-z;GlMtPJKM1fi*N$A$n!9H614vK#b*cOppP zFdf0j7`sEU_BPKpm~O1MQK%1P>hiAVm;bOyjo6o!jUy4}>!TV^^UPpBIQ~*4zl`+p z#BOTdM$!XkbQ`AX^~h@0}pvqb;3CRfs{KW-u6){p$_(@Xuo;n zIG#AG$u}w(WP+Ip-oqu0n}Kc={7c4KN6Ct#NNlG4BWVNaOjc55ZZ$vX_)F;BDB%!N z(HB+b<8}m9?2zi|g1mNbPHQRwdnHZ^S{&YDDoRL-}zZqWijat_HcLs6GL1H=w!SG zug8mFu1%Ak+II&Eo3!unm%V|Tdmz9Z8nuEACe<)W-5BWdJS)edY$#`Lrw*nN6I^7| zn7ddFqR^@2KutKO(JgO|R)`bAVZU)r3#8&Hq<6&d7L(4m`z3q!ap&&_Vu=-h48;`E zp@MkBiCRwTVW}DfCiI4yiL$yqNC>1MV?>0j>EI{n_2#uG%mow*SvX!YB9`170iY&d ze2wopAZxxnq&`wT5xDR>=b-HUOx3ChsW-h=M>WmO9$|3V8478?NBg5Flcw&tVhiJx zPezMS_xtPcazOEc$@_~u8k-q=_^pdggONyKWEAd`XIA@-H!jyo|oT*LQ~^ zsi%L7-y0|JyBVr{cuh?a3Iat=Ga&EH+Gklhe(e81n~Q}zd|YpLQ(CMq+m??b>GHl; zlhe@cs(CB$w?{=(DUzyc5M?-RbHO(mU#YA!9%8%>sQFYIOH1HUqiyha+C&~zG&(<; z-j#XP*EcX$>XH3Mk@i68O}DPw4HUg4kEWJQQ8lWKDu8(4pIOJ9atqrcr4WxWkwdQB zgL;qrO5Vndl5zR`h_s;CQ``L z_f9Dkoe|Un9#9o4nsJGr$ECv~l_m}NUJu~we{x9Fo7_w=g{Uf;~}9&8Uu z`Mivs5ePsazTJ#cTCR7YxMvuTKOs)tNML4-&R&_B_6IpuweT2s`i6q~+P(LoO^;f-P1i%t6DZgK3q8W-<45kSkh?&ct}~z9sbBW9>e1e+lskT9pwjNJ}Qo~ zl*BSMIy$G3=+@mq`GmmG7#Vivkln$Uc+t>@@YK}QjKqOhY?X&gLCD@~f7Ut}6vC9I zb6}i{HJ0?%R&V?Tvs{(7Y=lWTJ5$w&+xd)su(Y*@Uf7M-a;tUo9-X$V4CVwy7k0H& z8~bpfZ6=lobneOFs@p~D6~Fa@?(;>vgmR-cOT`xbhfWgcPw(B5dRDtO0LfQM(jSRBUP7OS*Nlm-+DV+AR{HgEu z4(0J&Ub4x^U3AJE^IFlH+05^))!(LG9#2Pb(0=weN8857^Y!Q}{FuLaNdB(5T9SZB zcMSLVO<;QBNlUdqMvmFKSk2~yFyG)Fiz!DzQI6%#Ii}8n%@U={R1wH%*U#QZTD@uo zcAMN^E}aMT>8>n|{K8?)m69@kD%<7lF(>9QvscP$*Q@+YC2Ga(eOEA7rKL5J%y5pz zQ{l4YyY;K#a!GW@a|o<*J=7lctGiuQ03Ghrf-UdpqUIXF;U;UYLP-g#m_esWrVwwO zLh@h^wN6yX{SE%zq5ZAJK1B9QK1l|PC>|!CW-$l~Gg>m8C?r{Hx;g=IqZj;RrcRBG z9$YsW)J-Xh^N_M!k1d69hXS8Sql^(;x@|>I0caeb3)A z6R2XC7^WY83`XUFe}Y@+9ZuxXa@nmV6pgP+-OLXDE%%+Fnh+0i1qX5T1VyX4s%p2#tYCNs<*}{U&yUl zwdQqyMh%y>q_{vfRo!w!24W&hs?Zk(!pyNgmlN6s@okgY5ZC&{&a{TDiRB6lQPV^G zW_44I9-dN+470BVDG;GIu%{nC62Qoputc+#E!-IYON&W|Tzk)P0U{D2^$m!f_ z@i;}ce*z*0Kvn$wm=jxVz9iw=((L+?3_d9WeUV=7(q6#o7>)q%G~wa0K&VOfKHRm z>{DD5At8^e%UXwrY`51V?$#I4^2@h8-}6g+o`>_*%bVN#&aD#l&Y0c3VHHq^2wd_M zSg*oqAf}CEUqLznokr#Kl~Vp74;sbrkzdMRuJ3-4@FFR{Q=-tt-X-(Zi!BHxbfequXvBPf?e2*0LMMr zv!w>hNC_j}M(fRG7Uw0Y_l@pPk{bq)=IfDh<)t+reFa6XF(eOyhgP-XAdSx>11Jjk za7TAu;To#h&c~>ZxTK;CR2tlS;acz-_@l{; z+MxF_DpzC~lb=XSuF3v|v{*D?zihN#feTAlZEs08z0n}b@TtNZe)!m0GW z8gAqt_+J(7;ggBka~S16;}fFBZZ1uwsj4EOyyJ0{F$un*s(Bl&7|Vsn^zG4qeQD08C4XMfq5l%pfcWf(JwZ&y1Kd_>My79fmAVHz9{|3sYdDh(Sa9g=6R|Ste^e|C6NqHTy!O`+Gc^Y&t9Dd_lOfcR3bP4S2V|Fz~>nA$DGI z{*6*$uW*Hf`3f)Ro04~Ww_$A(y%s_FIcWnj4xd{6boC_)vx=8L=DiN{Xd4wvez1}Y zL*BHi)xcmsvmQ_BO6JY}sD*aM!!$cHdjllR_f`}e)0VNYhk~3Fv zAINU=UE^8;y=^nkHZ1JnVy>3Z(e=m(gD)*`MH$vyJLi|MCH!%DkzYY50e9Ug@v)z2 zA)K~_1#uP~xq@+6gXM0?L(ocfJUMiEEB0f^^n8hu{OoK&OV+h@>6$A;Lf;Kc=|=d94I2uw6u6DF8UAl1E9)7%fyNsmbdQ3j!%n6|(Rm462TD zs8ZrDj^d4Xpl*i&Qmf5wD1tm#9M*eXqzi!;ig(RnU;Ab4xBNnx5sA5_)fw>e&d07m zMB=|QxjUul-@4&8Ed)uHM2rcbRx;tWeVgp)EDEKn33;1BTNTboz>VyZvHmQrX)~8acAZvAosg?=y zUGkEqPl7QzW8u^JI&l?^)et0fb@eLE$`yXQsOTPisG#kM`}0F4Tn!&?-YTbd;|0n2id(SS(w9cv z?c=b5^?li9!%?9h+=z57LIzzcOyg)eM!*-mw|8z(bshTh>sXEJo3|LNsnoW}ju$q} z5?Q{Y6Pc7|1|Rc-XBvX92M-w(dBsu-BxLbsu4fruFw#%C!{cy|n?fa0B;`6zv~9Cd zeWBQ>;_zAjz|aDN?%o;SD>3PuKRPQ7R`kntrfR^1K&4+o)k}$>4fBslRq(|eQmiw` zvHS!|*@`HvTX$GYORF=sJY(*^Z%)LRgz0aRvAIUE(unVaGKugId>s(7QYS+y?;Twc zB@m?PoEHw;T__8|F+mb$C!HP^HKbQP3sTu&y~_k`@7!tDs{5RNaxa3UFcP) zslKq!ax&zJ7ZU$R(T#Y_CNF?n?J1xrf>JFnI*NZ?cJCdsm{I`YU2gS=@&Ue%Zvq{I z&~s)xz5cK_PEuXX@$n}IyWm10^j>vf`X{RA)m>IqO_iNG5 zUC18TU(z#7j}Yhn{7%&Z5QUe&9MCp-i=2NHJCmT z{}V8vZ4D@kw_6bEVCo&UCzB3uki~+uie!m^m}1V&C;( zA0zBp!E=_{-eT*|U6W&|zbt+;IX=4hD@f ztl2ySrKG6vYhG81A{oN=F=KNaUiZoBu?ng9{l%pj|~Jn#d&rh zS^564inEoqv)7&%pBxY@`;SPji*TsN)0~)KYIXdB`!S+gs~s!!fdP`KOT1-DCg;c1 z);24K*%QC-(eGox5YV50C%0S$EGm%}x2e8MgT#+gg90dZ_y!(8fXj2b_A?EGEDn)m zH8kUkkGaC%%rRMzQ=c>+KJX)RJ^`>QxUS5%Txn?qBc8+3=y|E-|y_B+N&^K(8-&D;^QO zChD1G8{OLa4|bNhEU`Zuq&zYoZ^k|}-qT83td|wVr3mjOP}0e)>CQHrSbbyU17Hr= zh_AALO9a4-6&T?B9TlbD&3sIEN2C*|Z1Lu4Ymq0FxOfJu^(*1ozlisI+5EGSem&Eu z!-Okf^JRokHGO)jr*$~j67fS+gxB@%2+q?|SAgaU6}a~|UNww40CF|irC^ukx1|bo zFjm0pSyo>PG)dNqJZo>>uYr8d?YYufz)h zG=JaVZC3fY%8K7+BC8mj-!fhsNd@S7JCzqudJ)pl;4&+NIprP}z|9>Kfcr@4;pHU_ zieTdVjuG`#bTYyBtMxl0tiBTqqmp=Au^R^%9e}aM=JKhGBjX;Iap1{hYbO_q-wwh% zjV{=>!A$qa=L%GguzE=!ma{{q#SWxA&wExH#)r} zf!w~!;xNpOkRMJhN5Q5$aDh&Ta`S=AC2->@4Ac(@7ZB@3QxAs%RQVtoB$14Ak+YFj zq^P9SE@q8gq}SU~(!n&BW--ZBK)f0LTy;MCpaA^HjQarz;sL+Yix|NdNBJ0HUjL5z zk~mpDr)x@sjWb5?1S-s2ptc?S#F>Ev!bBVDp)TU@aqdSW%)W3rI*{iAeLCAQncUrx z(tQsSRscBbXz3+Rz5B1&d57s>V=SSv-8|O8_@>Dp!U2qc7gj=SI-u{x9Ha_PK4-Po zY=|eSqY1 z<_#|XSv;d#pV^gb+kds3I~-=Gwc^R)iQd5;I>a=OZ~@&U5j>XAxNiNsBJA(tqSDcA%cw435XsoH52IXS@+(ba2YgV zx`H1$ z&j{jG%>Hu)oa1~C&Q_~7LC|ZO3R4C)P&*{DhY5;~CnesraM#j-E`@2%^Colb4OJI` z+3A1)*mY2Go;Zu5{Lg>th4LDD-dK}#-eF=nayNZ_sbC&$rxTev zJ3Eu8nt!fWg=So#!diLrxSo}*kl5MT4J*jgXR*{GLYe`4-|ju*5Z;#;0n&9$aUb~e z&6xV&Gd$CX&gEbZbyD~oBDlw&7RaVtU&%+NbX>@6$ zpYE3*qFDe>VJJWbRW84my1Na-u3ne7IM0{dvq1f$&ExPCV!M&AU1C1&Qg~%7_V8Xzes4yAk zIRmkDrxX)w7T4YTlOWr1o1Ky@F_X?(8#^CNx2rin&f)lmgXCOoW|PG53KGN0?XQ?> zrM8lcQS7Wggk%jm`d#H;fh}=^N}eEk7TxW{ zibKA^-aU*$CS50Ep_+u(^`iIK=6p^p{J@OEiX*iGaBe$xWYl)}O)Si?N`l&cLmGqk zK?4nGXbpcT`HDv6#Sle}=6E9?%kW~}M;TP%TlmHfwbIxgoW!7kG-hB$iSyi7%4rIj zQ4=rSj0OS#-gR!xsecFT(F!0B#YJF_lrhg#OCqGfNu>T<_Z;bZ4>f(Rg92zd#2yS8 zFHdH1SD(kzX&~eB|D;tweIwEi!9g`-vLYa_x!L0!)N1bP%1{~4=~f12vCTDxmRvl} z*VcW9qW-op2p8Vp73O`RtZZCO0yD$y_ zt25Le56l3$Q{Mi5%e*fb8IWB#DeMH5^k%L=wpCl2k7SN}N0v+IDE)=o!h2I63}xIT ziTqZ7zR;+2VJT4Y6(hd)fOVR}#jqAGL?N<{+MEcjnBZl!#(&&klm)cV8JS@rJ!;>_ zb@{-Qkq8@Ij)m)?3SFG~=mC~Q68;=1=^lDllF&X6T zK3`|-PA zB2LjtgNZ?>`Fx>M{&<#qTmrY*vDF6EkIir@tMYEh`FeLKu}@s~RL_>cFxt3#&oYp` zwxEXBQ_SElly)goT?$60X<2hC?flO`m{V5^CmE%j627Y6;Az-a55~N@Lp9!LHi`dj zfq0+!E0NzrW&UQ5mkf%u!`vZHB) zwav^0O_rmyB&o;oNFb|siBoSFu)yG=zrb*u-vk5Id@QT-^>ap8l;33q5q5+UlZ9-e!@Rh5gxKq_Iy=7)CV&Okf+q6%~dM3S)WxF@B zlZ&*d7DDgd@?tFEcKIN?Dw*M^HlE(A5-~{2N?U1Gsi+^!J-wX1_SI8GF-toIjS9LA zasC!Gdd8mQUmyD5+|4Lv1x9sfDlWtuQyvO@FYWS0T;fE;hd49$t$zIya&^h@D|=NC z7Q&$hr^9plTNaFxG#>jJB-E(sx+9xqpM9!&1wn(}9)4tU30a{mmS4hFLe3hW>zz>N zL-71I&I@-tlRHRtE0wYQr#FZCQ0CN2Jv|T%bpV2_MC<1I8mxYseY=;&kO%DgC$)mB z$sY^wKkg=CqM^u@z%^shan(E#D0`C^ATGN*J96Mrl^M?(Ti-jSfPjM@RKD1FAV~|E zqA;z)Z?TcJ@Aa++h%tUc8_1yjBQCoI&VwC)U+oDY2ScOKISDg`e1eqKLPe1rY&x7m z5+bkXUD|C`Wmx>(1bv34Lk&6UcXaW3R@PR_nF4j_fDa1Jj405zLMwKdnw}>EBEkRA z$I#@LrX4)~^xFlQu@(w3_ixTxK9hhb(qI~%3*KEB{zm7qKsR_6J1g9heKI1;DpO?P zo?$!BIf370Cn?8>PQ5LBSQymB(p6d9d6phu%y7VM`XCvLwjjsYCvydv@<`UG27ENt zw^b2Lo>`s@>vI7PB1{X&;Nt`iGSL)-xGFRKi&HuF2561A6?CiF2l*A~meF|hUG?Xs z``a6&Go%i}A@hKZOlOer$O3An)N;F2r8t@Bo5}Qb*Eb>@Fp;@_cErlGIxC89;_}V? zQ4RKWggY?ewRW*AW`ic|Mxl<#7_W+Nu<@KNL)1X;HENj8P{W*3!rxd)FaUy(W70-_ zMA?W_H21}f;m8L2y(6XThntx|U4<+@n)rONloG&QPz+Tr3^I{(-=B>>v0vsynxYvd zo#`+rE6g!&G1+~@yWi=|jzS^{0l`YE{s@@r66qO#=}M}bo3SmPk#j6bf((M~8wtHS zp+{5XM;jUB(xrVvr-n*uqmXC0A6PC1*th4VlxF)o6AB!5wHs`T8@`vTyJ+Y(eV+3+ zH|mla&d5rRZ-XRZ^I7q3&GA*y#v4IC2tF|fh#jBNUgH*=OTIl)u<4`1nv8|$4Wpdc_Q+1P6al$oF-99pwHy$>L`ap+=3KJ z0R)@b)i2cg#mGn&$?1huzf-BH9BSEv4utr9cd)^?Zzlt7DpOIHZar`gGI@T^6Kzu! zEJTC6Oj8K2wO<)=hyD~2j|v;5Hyq>|@r8lq zT^jWJ;pYwWOnAddu=+Gq+xu2~nf@Uuc>D9-O_FjK>JP3aSh)4jvz>7d&%yM_{#_}X zOgTvHG7r%hM%bS^#rHY3Tz^AX@x25x0!E-`EMFavODCZQDqUWox{<7RybC#MHyB>3 zSh|_C`l71~y+52S)1C9&^$65Z^0a7wMY#Q^isQiJ; z&dgoPBASGdAkv@C5>|0UUFP&v0vFum%g6qnjzwS|;9pnz|GfMdFvZFC4J`IOUa#{! zpY3+OXt`s$uohYu-0-KCctm*!4VhM*V169y?-aPJZ)@Ja<@9}Qczc+W$ho=SGv8_r zjc=vemGl46)03xMX+_!D97T5nav>bbV;nVkoN)2{B)mP`8EPMqOSt(X#%6c%x?1Cq z*kHM+lJd?j3Wbs49~ICDyx3>oKUBF5MIHalSxYD!bw*iU9XZhlKH4cVR{}o)VdC1`#&HbS)oygbXODO{g zZ{0}GerMFT2b+3A@4DwF+05CQx+DO>n#-8d;TTD7;;0z)H9@4X1?JcFK|fw-8?Z4# z@`p!3Oo)$YTdFZW{`uZ+X2t8zN?_TKt-Zf+?>8KWAIRzlK3|1! ziFx1+ULZw#oSlo#GGHD8(%Q6c4b#HSbEpik5mQD{a{O)k{7Ct~PIW2-nclEDq%Wv! zEVR(KeZ`Yo*4=mPC*01cYdaiZe!RPLa{DNBvV$2^(|xIIN`IN!?5SOt3__3D8LrgR z#Cp8ZneA45t~`E1?y;NtI%)(m9DQTk_tkkvB$9$`ftr9??0kEB2qI3@9}NbKg#s7s z5*LE5SChu4_+uXwVdZ5bFoFxb2Xv?W1O}~Cn9~JZ8u~^Pskzb|%za4+cEOdY4hC42 z>ecT6lvZ-6CWv2J)NiiM>l2yNl92OxU8!j21a_LwrFu_pq&# z$cyvdma&|7$=O82t4Vm-O*KYupDecL8bs%{%aOX%b_1Q(lK^INAzT9HsG4W@ z1{Fl7Nl7;MN#Z^ddVRhwSZpN~*-^fRDnIcz<^G8kmHJ}$Ji(8zheP%_5!{`#oqR_xwP6+5v$HZ^+&Yi%!PYcnD{17bS`GYSOs6~Dde~-hR;C?)ol%W> zvmrT%n-8>lY65X`x4r8K__i!|{?H^KYP*vE#ZUVa>o4vdN7cf$P0^50YrhWn*aprY zQLk~WUucxx>Zj7=EnoV*s^kJjx6`vyA9|w!4u#%vAzCpJJGY4FuK7Q$9w&%1inEnw zHmJ(h_5V(Mnu1AIM?*KP5Zjo6#42Ki+9uwSogH&f<+ zTXjd3;{i<}u#0L=&nu7aafE=Q!SAlYsRgfXkJ;7@K$&g_80)6!PExZ=MzTEA5(ahJM7GbGqj zyjtaC5{cyvOONxRZN}2Bmv%jrS|+E1GM^5fIo+w&fGapP9EO}oZ}==dEU^-^~ zBo1q{-pHG6XXBXdaioE=8wAICQac5&G}*<2%zaqn8e_{F3gb zXk^E5x|%uQ=e2tb_kkY|ek81EhQ=cO7Dyb&eAr<6%cp~yLvil!4Nx!#aoE8hoUl=O zV`I(ybPApJ(rA)kHTj-w!y~GOn|q;?ouC~zbaJiL@ox)Uz4PUdA7^ZAedA5%y!Om+ zjNC(AeDJ0kj0OWltx~jpEQF5(*YFVfpS_7l9X?4|U?96+7spF_g3UNws|vMBg@ zSARMOoy;Z^-$NC5iTaNd=*(T$Zc{{q7eSS?Bg(^6rPw5zMC;D+;fA$YJSZ>h)_g9& z183SP=F-JlWQ*B3&ly9QB^mczsL-!jtqlekSp2HBZ8Nt_CYhO)g7N0ZYdzj!$n8nUX zANnj{MIEr>#+wxYEDs?@>Jrb`#Y6|GMpXO{=@pO*sUrF&dxXgiY2EZV(nUje0^A7% z`jBQ0?ExqpJhG`(J@??Zo7xnjik=)&2MqwEIgj6Tmj0nrATKx-R?`=W*;{7+!Ev7B zWQe;hFiw!Zr58-bT#aNjjivL-6N%?S3j{d|qPw6xBcwB^LS$4jDBXTbXLW&|$(gmY zLe|0(4FpMTRK_uxb`OTDLAvt9;7E0$Ux<0vt&>0Z{?-C&%gNZ)r)y#z5UQHKA?dE6 z65;f}GVFQ`OnI$;$HeRcDdkE+nQZ&?I2-1UK;mSOgaj@i>y~2T10r;nxfB9EcfZ(A zQt~t=CcCZo&M}vWakhQ)`|(_1sH{5&VD9fj?7t+E4(@^6 z!^7jai_WUsf>H9|li5)wNrbvS!BAd zo6Z!JdY&+lQ}kmZF8?w@AgZVz+-$OisS;X_KtG5%9oTBLQXdj%B4tHzLuj&EmK(=7 z9Mg%C9h5yfZk7|Xoo~Cx&$}Oi(}lfCCMq@q(k0WSE_xC6?*?fvcFA-<$w}T$)*6SL zmKIldO_K#1X0)Q?^mBj;B6S+K3mZ>y2>x#s*Ld(3NbL^0Z55iKuS5~Et<^l9#T-y%&CnAE z2^|Uv>yL*;n23E!c=bWp{)W$swE#O9gMLQ|yg`ul$a(4*@ZZoF8utwLm`8wRYjI!Q z9_@XL?`to!RD@(yU1Iv*=slVL@HGreQFnu*8+)5%?Lv#Nwbkj5tdG?6-% z#JKNxCDCkAahn&rnp2#~iax(RUMz)A^aa9@4ul=XS2xqol7k>--}E6(AaYdA-Yh}e ztcQ%eK^#r!P)Mh_By4akj><|Vfry|4S-|OqF})1|6UhHu2Rx9DD!T>y-q1rPIu33A z|L5n)90w0Pt1-kS}gvI_@6o8wn58Hdg87l@P^&Az>ekhGeBx1i9Dm>k~yw#1zP zt=C=w8Uax{X9h9TQK?!@`z2{US*2N9t_FEgF~7z2M6nyWR2Khgr}t?=3_OWbKSMsvZX)MIynsvG4B20A6F-rt7Nf=W19OStTE!Ie&GyLg%r<^Kh3j4KN|3sZfInJBqgzfooZv8~$4oFL~A1xeHt?ww+%J(33RR7B_bWVs1=8bhtjPPXV zpBrqxo{bX>UZnFZ;C?lvBmK3By$S=UU!fRsK(SOI+<+KJt2f&CL7$vQXY~KK(*qu? z!j4;VoxXPFF!h^XvKCAh+~r+O9$l~h#{zic+Ox|jP7j@fxZ58gbvm0*I$bD}SfENQ zknelN@xI;`SP+xv5)tj`fkv8_I58T=xqT$;tGJong~y&X?=NV+Pl;Nk+7k?d&D9|D zZZg}@^w+IY9uMRw5UZ(GC>Va4Z8zfyg}f6co-UM**N7+Uoq2QwrpU3ir1pLDjBQyI zVtk6Cijc69uv}tt-C?v_OI8tYlUb7CNmdU;@I`tn#$$t(%(59wu;`r(Jty5CzAW(%fB(Ww?0c@c1DWf{Bjjbe_l z;QDU|2Mq@4_?wD)#!~@&;=;CF$2)HsDz`o-(7_!-Xk#+I7hlToMl0ea*awYxm zuFq=%Z%a|II8edgwv@O7Kj&J8U*p>R6U^U8?!Z-Yj-S(^p7ZMJXZ#n`Bh3fMj}sIY zu~1Z3@$qAMNAAYTsJ3pV4kK=xrOtTAi&^<-#iqfPKrjldXhHa(N^Up%KLN_RCrdUt z_m>+&AO9G1!cAYcJ1NsPZfcDt$;l8P7|pv}ZIW8ZBiyvxoV6yt@_IBG1OuU~4*G11 zU;;i=M5cGy7$uoSzVM>6yWAhj2%H7}VU6|IURyKo5pcWa3>`oP44##zFxG1pwMPhD ztT3n0D^L^+hKY`%8ZTGtDP!#yF3+EG^bwrKKkPxYqWug7fQyT5Nb z9I#ni!K&8Zp4@n|e|}bnfk;C@qhP52x1KI80At)s#h~X05fFir1^;!3hnf*i4?AT; zl*c#6*{5^RZ%6+7I_Eo$DN)PQnqtZv6Nms;c9s6B4NzH%!27;al>de&l*r=shzhDs zmN@e zSZf=xAV=Ap+)B&4O>Ux`ud%7c--JNUPwKYWH+f3P>`V%{dyblAc8uPi#o52}row8_ zAko7S@aktco=@Xc>qu1b1~?Kf&ymZrdT)38-7mWk)3l79WQDG=$;z`7(=ZK>Q?C~b z_YAQ2=5POJ%i22td~fi@*!c@Vu;`<&FN;sxJpm^uk7WKW3@e^@;>(xU(wp$nXp}z* z=`hKpOm_+w2O(g-54M-Z3?nU$QSHw}H{VxfMHm2U@)8Rg62UG5E4IF>mOiD=t|alW zhp8+RGFn6+bSv2Th2`p!VL~vtjjt<}%v0?M6hd$HHkq7e#oLDsQY?I@FA)CP^UWps z%Ij7UA!Rk!An*Ft-Qm`QP}f=Wf1ec~s3Qa`o47>|8h@qkf$YTqC;kZLyK2na7LLUF zp!Ag|{v9dxe7&Ou-vw1oM_)wVH^3tUIO9a;?r=Sm%#BLyM*ZHJQjUry{_L}@=MMC- zP<;OkO&sc8hI+VQ+d7s%g-n8b=KBar>KzM<5Es)ly1_aTHV z5$|v~Y9xR}#lorPNAA_cVc?TaL8;I9SQWoM-;(i}1JPdC-~%~Vrg@wAPcbCx2ZG++ ze3DAeWA`)Kk|XR>(a^N7{(nzDKov7gWBYnHS=K>k+7V{`z;<;h3(NcNfZ1KKTA+%& zfLafWNQuE)bk^w8{+v8bPSJ_JCjBgFS;$M3h&F7+&gV)9Wh`XZe zft)9l?$6WaT;ZDk5h2>@@goGRz-04&X#KL{+t%=NVnVBQeGLD30Ejf~;P*8&{#qN-m~CXIY08`3)@QWBUKz;Zp#snn6~DjE0C5UhLhsA4W{u8SlS8 z^fMQ0o2tzS@1`mNB;t?|nrr;O^9>t(31kFy2DkDMwX-8Qmn!Eu%rb)FWAXpH7~p#{ zTs}4{eEX7P;gbBH%ZR|c?vAa0fL4^(7M69@9Gq8J!ncQlEcn{V3Jk~e*rpn_vl%S& z{{NeLlYTdYvL;@@M9xq<*tn^il$8h2Q((O2(Dls^cvI6IMDjU%BEYGB`g>}VR_FUaP7E&)NQOK|Xisb(1=`{8RdqN`3bB^)JVH@W1=K(_&rEZvpD5 zEmm#tYLYD74%*T+~HgR={Ryr&F-$h-)z*LHc z8_GU@A*4*8clhzG0qpprD3Bfi?cO3F_#$8sl6+++$W+0sjK;ls!iGTmi}^Ww1JXsA$IG15B=w0D#M-C z|J3Zy+zh&}E!a@&76&t1@p6Y*)1QFTC6qz;aLHvtl5CTlYLE}3;tV;8sM(O&PZket zp3=1=65CZ(ni~-`>30@RZ+tfCNU_&LJTqTCd=~T&KGgd!ADQHXL|^ z*|)M#tKebKC}PgC2)%*K=Bp|gJsVl8kpJy7^!n~dx}vY-;-=Qzo47`5Y zlr?EB`tU)DwFRqeiG&1qN^>u+K7YJ1USHyrd>a&E7X(KlGgBY~@7>HCR*dkat9Lbr zmi5lMeJ=NIAHE)mFRt=)yFaes2F$4esUp-nSlz+C1kkAo_FaX{YN)W@~xd*eZtXhw{J!s zz`IP1#ZZ5S*cb5!50z&?p09~<0e|r57Qe)3Ol9NqeeOqBz>NF#b?9$s!pDv?V`R6_ z_9{FMcPYSeRVoFlYE@##AZE;Ms(=lYQpH*k(O2_Eja~VcH`45V&)&eq@?^!s*Yi!wNy!E9#wM_)7^2U%w) z=01?eG5cJk1vAD@E%n-Qk*-Ikb2nMsX5bFX32vyX6V}Le6W=@Oe0}w!{K$ zy)6y~)GE?pZ`FEz6!1^?MFeC4K&>sFPxg;wt_gd_`N`;N^JCRUic^to_N`l>k3^%s zrmGi2~cxGd@=zJBW_V`p!jQ&y4|% z3{tgf-S59N)o7y!@9LV2xr0r_vSlz$0K{CL6*91~tFFLIB}89czNCK&`8+W^)i2(Y zRigju+rZzO5%iZW$h#@iQ1bqB&o@IsyLEss!pkK*Y~eFGP#$OfXeDgZYAnk#jgYZG|mmzg%@bzog6KxH_d`Q9%V%d@_Z+;C44iuLm#`X@0nUiM9USj;fbuC}Z%9@=82)4%Uun`Q8JJT#Vm+XRhHH(i$aDtg^-YCr&D>tE z75_O2_oh;rb;zXBez@K4+wb%jn5bW^w-D3c6#Qv$kK}fLR$~HazFUw!kde?19kk;(OWXa=b|^z>QCE;zl=Q4m09_z<@n5>+l(v`A!RZ5_*}+O> za4vxzjCeYpA%>2XRifCF;5Zv-rzk-o>w1AlC5zxq4Y9j7`8v}7MlL`nS6vl%WAL6M z5MaJ#%q<&Loq{<;F}TCd|Bvqj5P)1r>>3iN^U3?g-W(s>;BBcB_UgG0GG3=b^*vA6 z4zk)|4MGquN_^aWLcAZ#Vl6t7(ciILgQ4*5YK$43_TAU(6T$vP<=joU?+3J)gQSyL z`BNwWowE74eChibRNLe^PN;9O$u)&@08Xo zYTzu|$%bhP{=nQqxa0w%(e!;tcx<^1xY8c=Ii)50-&&S*UtVze?pW+z>PZ^hyAD2- zd2K>3KqfEzok)@w*+B;({ykimA#cTZz_8LwYd!UYh0RATIoU7JRD%!* zS`iS7z@v9UKiwXbGwJQpgn~n+MCf8kjkDQo#ND78OEh2akT_SUQGGDck^?&H-qETi zo3n3d069DJxB{VfBqknC)vI*imSx)ZXKtJQ3#`h4ftVB@WP&$fHAv_WMLizn>B3Hy z!b(M!I7Ru%PHGoy_uYs$gB!r(lv98D@b@(tjs5yZs5;GIHW-Tf2NLl(ANA)%4$zvV z8<0#$u0NSI^@^OndA>mn>hnuX13R1$pH4^yqi;aY6$+7W#`9Ev`mY@rM@miNQi+$A z%qUL8JxI>I8`fOC8|K8Yg*WZ<@z6M^r^zhOBz@T~Oe!W^jX+tx-9t$>jMhtF0h{_zTh@Qoia^r-RnBmh7GLDT^Ty(9!;Hb4h6 z&Qw0%oC{UfQA(845W5S!ua7gOzQAw0N60i)9yzGz*Y;^-u252zvs03#wB)m?zKMM`~laxXtL~KmsVT?y)~4T-X50k$-3@Ul4PV9^d6gTgdFM zy;`m1F7?ho$7}tD5yvy=8^?t-pl?dN>P+_nq@0DezeS zsJJ{`@~pJH5d|h1TjEe^)CETEjlJR9U4tA~7w zkQ^evnc(d-xzfhwFfN)N^~LerEj7DaEbA!0^OB}zo~xsm|JLmOkcLLDrPvAtgRj(? zEHr8~c?Z;+uBk54q*vY#+4)9!1%NI!TCEkT{7VDCR3Zxs4m9U8bybEV_mK%y%7SkI zPKm4^sY_iZX+}K0>y%kA@Ncc-iG2$^-Y>ItezWu&0zU5wIHdxoMlL(uckyij#z*8P zJRfzsM$D6l7k2E~q1DZPxQ|OPBtI|+6}&BhYZ60Df3M^^lkrfIQ@X2+Z=h zUA}s}@H!tL24jXbOhWc#r>7n8pD5;QCj0s9dLLOYCY}6(&V}=4SVwy?HAbJStGDrWzD8ByqOtndogzNTA7*y{tqh8msf3MK+1>j z;&Z$rN+y#=#nbAtXcwz@!SxV(vG&8(=u@Tc?k1F4v1mMDzEq)g5C-hdYwXVEZxtRP z_Gyj)m}D3UFCDn|@N=K|**b?#Dw|L4`}>_YHlNi$_>(m;9M+2R02Xq8xgP;zwx%N` zZd8973&sae-D7n9jCS%!k&T^4*(;6}P#L^;Sw>>$8fZfHJ@1#*DOHPdWSHc0Qgicl znJu49Ij%flP*(|O+tsyQw;IWwU_* zLR{pj+K?4N$n_gLo#~)#r2nRGA6PI7Rc1&dDV&vP6lyZ74Q3>y5@?A4tYl<*$6&vA zzyh|-dxJ`$MvwzjNG8!TI_snR?>dwaiiY`o3C(=N|dJtqw>%xO;wp%Hf910Mf?4aqOLoHJ@+gc=MQNWNz){C^6^OuUDndj0w+#PI`@0BOqTuN49!0V)~J82 zHdT^{$1Mv7&;(FE1%+c4`h5McfA8l=V68}?P>~x|rJ(-t0UnJ`t#Sej2T@oePb`tH zB26NlHV>W~)jO>|PwvB8EZ6f`^jNF9m5Y2!C_d!;kg$Uo9rVrIL2Rt+-Ci6ZN`0F+ z0ZEDLOrT1X5CbmD-GdEkeLVD?(eL(#?9#ipY2TUYLfIChv}LfzeWg?auxnIG^8yDW#~k09vKM zEFLmU2vKCIYAc3P(PY?PnA%By@?M$>2(r%Ye|S_`k9{HFvd)XhY8GQElqESBOZrCa zG&FD@^LRAzhsfcO7Bc=`>^s?gTxI53fM0mNlOCZ)opU~mnSyK=!d^MyvwE!|@F`;w zIh;((2`2`icFCI^oZ|k^H?bi(kuoDn2{xnkZuWbNJll;R_1%R^F}eJbnh5y3h~t-6 z$I$`>(r1Hln5(S2o`d5pSkzg^po6Use+1?*4UfAkr=<=ST2ZR%j3*$@UtTXB9#m&L zwH(BQK-QYWyWT-_>Em{jdY9{pyUxG?MO>vp@#XY%VPb2}0r155xgP88FXn`>#Wq8R zy?Jate`2$^XC=_2$geh8fkb+JpNMAZ5jR|cO=E?Otw^1fRNUruuBbwDZo2f6ThxSg z=quWYWBvna7Je^s=XyP@cfpJ|$6o2FT3P^LSd>|*43iM{25RFTM<^62wo_*6Jm9SM zfRx%Y-HoOxB&xqP9m6>{(f*uffr2lxaO9;i;#h{BE$sKlmmHCzJ6jAh=TH4!=gT!l zz;eEAP{k`0r^_*in*@6r9C%5Y(v ziUkx&UQ7;)+%&BlJy>soRLT@EKS=2Vrzyg!_Q+*Qt~c{VeblRMTQk`06yCu9VF-pG zMzXgRDnvThI)D-LODz;?|&4cQN>6~B+(T4V@*V^$Y9SF$423Y7{H&Cz1$uy z{xVia@J#DN#N)_)12DRJZY}n_m;OBI?$j5-fQw$KO)^4^T*WZ_Dfos%;DoTvNcZ~Y21bVoY7*o8bd{+{PedvM7cdRY`?G#)(USI+&#hH?^JR#ADxhR<>N!QSswG7I$z5##s+$)le#CfMAL73Sv4y3EG( zF&k}9t*5;UyLBd$;tC8;gBvXlxc+?z$(#v?_8UG}u*T)3mK*h&X>3*W91coD+ToIE zf$@~89Lxr+&-Z?bqYUVjn#k~8h~lx_p;B0E;P94~3xO3nZL--bM0f~<(=wg?M4T>< zuB>| zjSZW5czcu95j2a%n<21oyftj4OqyJ(?8b0K*1>QvVMn*Kxb&Le7tb{lhuXYITM(aH z?oPeSxRVCbb1S@y=o9>b+0N`#kj?3p#w}2J_CV5j4E8-XHIuDM*;c2LDvg?kvEtLfDdn&D;>k9w9a3HR(L^f>ub$?qG)9n% zZBp?r+QLK2ao@WFl+I<2a{g{oZ-8t>vC-BTpT=4~5_V8tPlNl*5_C>U%>C({;_gr? zt{37?Vzu5($#)-I#N}d@wFTivNCYna(?)cWn5(J0`{%Us%|K_j@`i}C zMn1gHFdj4xb8%#n9x?e?^9?Gimq-dFom%tnR0H=IYz{lewhT@ui9XqE4(dPrqMOKJ zS$-UuTpq9(q>o~7&{|{OX~7HE8%$QKQjue+FFSiCtxVF<*vux98^#?*xBWY{x|fC* zT!0z8hsa51@2lPrTlXT~EvJ+gH@S?T9S^j_&T7pmDV}_4xN-u{XgFt6u*hd&lu#@F z`f%b;f%!rdldGJpdW&b}v#ZBQG#?$~NCROex0itD?w~TC)R_jPH_e|$1x%D+gv%3+ zSiTTpWOIyTf4>z%4*hEL_{043IdY^}oQ3kyUWjm(_x39Yv(;KI7I0Rhz1Hmgkjslg zxt@1>6wt;w4x*R_Uu0bA!6AsXNAUa3T_fJSrn8xi~Ua9^2 zKBeh%rq>}#J%-mCLad=U>PTARo#AIjDDpSeK5m1CMuZ`{S!#0X&l>K)5n)0Z>!p~h ze)0H1r4<~78hcs}7?2=Awjr%YJEnChQBl7jvZ+8ffUu|4p88k#-w&bSHkN%dLSkeF z@5KsrN08u?Qh|%be}pVd>J2mzvKJ7nKi~7Gdu@ug5LT@>D_~xYEwDK%_*epB4bPWj z!#oCeu(*v*X&4?#jYbRPnJmTVv6%oZFPFEVo+2}^`98w}S>>Om-wWz6TK>BO!{tjhm+~9A^zsU8g?KSed6|^l=>qItX z550fQB_8Z@omSw99Z@rqiTw$K0UM%UiBCj4IO%tCA)wW4*hY5o zTel&r7hBKy>NGdlU^IX2O(7~cEn(soI`C~Ul7J`8@oW{cd;`A#AA{(7&+PC0#@!T0 zX-;zP#kKB_v#F+@+qUZpKtakiA7OyD&1%0nf0Zf^at!O2L#hg^1J&&L#)S-f0(<^0TjU$ zDdB`qWk@goJc zjUGc(nEBX9)al}i{c?4@NwJ4NfP!Gb9T_q-fZ9WIr!Y1MFzk3{(kU($y!M8Y(W&SK z=rfSQb5>S=HJd_Wd9OaBP7*2<$kDwF$WH%hF$YTRG@(;n^jJEbP44M={GN1&7*a)h zyg&$naU%Uh0ukcj8`xX*6W;96j&U9$z^ zg=w@!KA#yOVeGg$!gYhXGJ=%a;)LtC4d`V?t$ezbL3D)|!|q8G^6;R>)>2fHJRmTr zgUQS$QvoYdyO>`{^Qp%CddkR_bCqn50~1L!>P!}{b7X+KDzJ!Nw@mP;Ke7&QJpP%? zKt|)hkJ5x_n;U#j3bM^*>jx8|#*$PuZc({HVVpTci@UTF+eWFPNzR2--kU*+@j%!D z6HHn}dpEt-%dOGDQHRw+f9%#elJm(ZLMn%se^RP9A6>@Jk$BQXKr(h#CT%zU8UQ6k z6v(3-{LidT#U7rTZ+&n0m&I0Y_-=Gj?stl;%6BY~YL6yoCc9lF|Aj{P_xqOJ)Lt^x zzs<0j>~=p9Y}O!gCgKtSiQ|nXN?I4rbiZ9p9`R;_$$<$4Kk z;6HD=AE6Nzi+G`lkY*b5C?DrdAxP*${q(HUBk==Eelgc({$dD2jaFO*8kvm@2i!pa zgkcu@DUt~vU-pbjHMdM@Xp?Ui;z>b%Ig8sZxbj@lqS@!k{Qdg20`S7DwamM9`S{s5U^t}v(wJR&a@ZP;@T9!NTNy}AK9A)gcrv$IvoW5zi_ z9knh~yp$>xe;W}XIE$z6iuZj7T`u1T%3w%PNxw^IG?^FmBF(v+t!l3}T>Z%8Y6yDd zD*&*RYB!TLAw@|+u!q4#LzMN3)%i(Dz0hU}hso#Z83mPsIVtRV^#B%01L6ueRq29I zk=Hj{1ZsSLw3}45L~4YXyNj;puzIzGuIp3BTab~v&RHCM?AS;)Zz;SP)0blEF~2#1u*fT-nX++^J$(u&k*8r#bmoJ^yv zjd@!_E0M-sY96uDxK6x~BOuM{M^+JrJ~q-WY@zg=(}EvFzL-cByx$sBy+U zVwYl|+NUv~9PfC&{UcM6-8r6Y<(Kg}c{}^DP6h5-*doOJ8`CuAw3>@Uq(wbsiQ2EO zD0~{sp=&kmk)T!YM%=#0P#V2CLEXM!>DfGC3rg*FtlPKm)T=cG4#}6T*P`!p8Qj9R z`{rrm9Zi2~wpmOrSq4aVVj(Nw(|d-xE?zY7+09ZL2e?cuP5$iR!+}p?zbhl8E*3QL zzF5DKWxq4qwG2f~_PYoeY+`(|^=hGPeFZ7sf_;64UZ8zp!>gImSuBn#v^gVOyKISx zU(@V&t-73(GU^vQM#}E1wmMqVXL7m>rL01>&wCv}5pt)Hu#}T;oVgx|-enX2RQ^W1 z`!@n?$cxktl>TBJkG%pKLF^zCtTVob?PjFgVIVSU{F~~qsfYD;IUyOX%)B8iJA*^@ zRBGGbaCH-n%ZO^( z-+c_nk1sd#FWTnpoHF06Ovy%+HDs&-b!23KDA`HBJE|LP3LAcT!yOCAgfmlt3ln!g zu3nMY&8h8orj&7@%ZZH++ad(@@l7BvW`8(S^!8}t$H7>lfL8|^!CF5DjP3_Y2x-Ao z3Mv`tUJr%C0^!?dx3A%N0@NGHC8fh}f$n}2kMT5CRYZIaSdcwG%k_3lsy$DtiXn(S zR-;qLm&0^;g*+wUl=XcTX)PA1M@O1BN$7MmUNxD;kH^fnV^2TjJ!D#Q_M6*JjXiro zvd{nt%jT%q!0XA&-)@S6y6H|T1$tS9D$@r5dzeGfKO&F1&D6?k$OpI|F z{0YNh3II{F6Ylu(J4h8)6__^9U#UV; zOVEhunyiGTbGy}^}ZwtI4J#$tLcP`OHv zN*Z1!RZPh>HpPVNez?pAmS$uQ`Zcua_Dw>b8H7DdttM9&BvCYR(}P|?xK#lSSy;{z znu3aoiYN^9F$%&%Kwc@KDCe(Q$t>4jXy@v@O}?%3iH`OI?fhpr%k2&8xRL*fhA@oV zpfS#^>SP^5=sM9K=#WW}8owG%qP<+KT06cy;1f>-b!Id6<`zZIko?V2oGHgGzo_H! zA+1_yZuAiW?G@EJbD5CtaytP29vAL$id{whszu+nk7Syzrc>)Zi0Z(UupOI!g;MBT zcL|#>77)_tb$0PIUmxR;x8?oTakf&|2D`R3_RODMuzBtr8;swu{Z2A^*t4pt?e3OA zA!88~CgYrxodA(5zdCpyt5~>EitB~N9bqMnqcn48Ih}k{7LY=Wh|MJE1_KuwtWVhu zj3)CNN9dT2vKfTPc#h7t1y02Q;4zLk-=LoJYf#E%rn83k&QK!Lj?3JJ-7D-UUpNQA zz56a11j&gQ3w2oBwB_A|OIu$`9ZmziP}TJrj7!I*MQlx&cR;Fh6r~!k{Y-#WfyXd$ zx%e-b}>m@vU4k;XA=rM2zMTic>$xg=3; zKZ1?4u44*@r*{-B(O0Irlv3N9i=>?7=F#M45EJ9_%?+w)U?sjD!`jvPh*@3Bh5QqG zsZ$6f{b-p&t=TsAeD^82<;a|E`;_;x_m0Z~D_ol$1AVRjj6@Xr_3T*y>nIvZn@x#E zF6~5+OYf}~&X~CLN9K#IEI)j!<73(6c4VFaaS9w+LHCdZHbX^s9AOj#B!*f$l_v;^*QI877n@CnVmX7kSD%B;Yte z%g#gnfFGhmqb@s#e{8RAt3*qtRMrfl+*Pj;ZRuSZa5VJww_}X{`zGU7@7I&+$BOtce#T7$S%ipAq1c|7E_q zxlpF9?d-`}{<1YxdpZe0bhv!L&#zwZT9ZMEL*Bc+rjPSWBZv!pK?n(M+|#$1mV-F} zS`uHSa)qWIA%QYb81F?LgV*r<3=RiKebnZG^Int^*4Xu z-L&!?15qJO%GIJ4m&d;3Z~&>kOrgUM*ZGWyXX$1)ylOZ~&m*!JA>xS^BpiG`)w%D7 z?dSF0)M#CXQJHdiaLPesY#mo-{nXd%+12V}w}ObZReui@JDTnu)awNER98_^IjLj@ z-N8p+gXNs`DNeWkt9qFs%7z;;?fv^n@xRL+C_?$omhC+1fr7`E{!4;9Gy~+QniF#Q zm7w%KmEWoB|10G>BM#WaD^0k5f#HEY(W%7N?F~=2Ks5+j{cG{2{^z zz#qLc!F|x{cueU_ql-}Q1|xFtG4 z_P0{0ijG@+4Gfm^*{CYJve{jFU?lESa5~SK7f17FjmOsqc3Fluy^*Jq^W0Q2J{vfp z!@g{r0jN(icPZONo#~9eJj0){N)1^?FdOoAxo-62U!vmqp6`r{v3y=wo50C=n*_5^ zEZaaT5UB@-`-bLQjL7F19aVUA3MQ+CrjSdNpHW1E+vaFX6HlpuiWWc8tI(_Pf_)~+7%(HH?YXJ3Sa%1TA4?rnXu-+ERa=?g3wJy4|QAI_0A zQM=i%nNL_LC3GMS3K?Hlv}JDra1K;{O5Lw}9AiHT;4uCdQ+DlW$@B5UR@ z%{QYD-Bl&GqD2T&nsey2<{Jxi_rGAP;H}@1{McOgT!J#FOEfxi*TbAjFD)5k>-r2F z^~sNF$hD{Il)9NidFV`}j3+aKFeij;;(zya$Fh-WQy5j$YWsZftBR57IeXg9$0s^z z_V`0=#03$aVIwDW+Z&CYBDnr(1ZUIgfeInO@jOmcJ`Zv*IbO5{CVvkA7)p`B(zj0;8_kVK?V7@5s^_V`jm7&SY* zRG3WMkQeeIUmF=$a(UkIE&|*;O~KUe_Y=Q2(X*V~(EX5rEAm60(SykJ0RUYrLWv4)^D`K3V8X2v{_+0@3P9t-7#%RUMT_sOBhr(2-(TTfaR1 zNxuL{p^)JN_TD4*U2+*u+3^wB(v=+`DPV!6t{A$z9>mM*Ho`5`Po-N}S88o)S-ASs z?r1}{tq&WRiED=6aXmdBLVYiNXyaJT2~O-R3`eh!_xEtzSZrktO?F{-c(%IHPreLbU5 z_YEzYx{REnhAXE{R(qc3zeHY4in4p^1iS>Cto8MfxTvnm>syDZuDm@Q?kTLtUdg@n zlYuaELVlE>sTNBJfn?sT+&u{W?`?8!cmyjHd%NpXOXgg1s;{oq0l4Ruaz{6NTaHM4 zpY56i%z}yZv-qz3IqN@7En0rdZ+qCMpyqE^TPW53mS@xJ{jJP|eB1Tup6_wkvh=%j zxX=n%N#UzbxXs}M``Dd@GUbJr5mk$96sV)1_j^dKb}geB9B}gqSj={43K(4OT8^m{ zRBldse;*OhLUe0F9|J?M(h)HA)R>n^A!)30)zo=R!O(=QJKHaVbL|_?C{VAdKhR2zn4)I}y7&Gu@I#+pmxw`Q;O6v%GB)SSzF)@zldNlWQj zgkXADHa1JS4qNI>XjShF&~;D56xCPg70f2 z>Dr_*&=<`)R4X-4vb+z4@lDj{^Utq3xke(h8PuJ1J*cDea&j##-lj!7W(ZlTyDE}! zT?>n^eR-^C?(DjWuRD6wGN#(R^xD=8!`tk)fIbk6@YYT+0~Cz0l3 z0-h3;mRoa3q4TK%E%;x`LU{Fnl>*IMN`MgN{i zOGtpM*nf2Me9RlTJBPbkr|$}eXk+T^(4E_5t<(I{Lh_%=Qe8dQ0kMv!MHCuvGj(?JnC-N*51cYYS4aBAkZGM`032& zpJRc>~xA`svl4C{SO;Qa}sZ{EZXWBL9#M@M?sc%;UYn=hH|EjP~ntY$|$R|twa;tCr z3>@i3ClX$alIt4=>!=kvHO)5Uf5+$^vysVZ*0QY2k5;EMx?~fnIc9XCLr=m(i=j+4D!VZt1IvhI>U5zTnjSn1T;ece zig$X!B{G4~Ip}a44g;QIt`*3OJ7oY}0ejjcW4WMe1GE1n?931hk6SoOIm%JJ^w8Cf zfbCw))#YJ=Qr~HptmRx&4p7?Cux`}-h6sHW5_d(7x`im-7%JP-OE*;Qi}u$YxJD)? z`luqhNc`VBo_I>CDezd!RFzN%f2#{OXVXKO+exQo=yA z%Oz`2u(DCJK|$F*n`EQCb+C|H&j9m?xMk*=OtS35@z6xlD8x1V5|NwZP+&+#xaMcj zLDCR!t8J~ZRW*MPN9vpm@1mCbffx$E!>RS)_MaE5-9QDow7u zD`l^&%{88%Q%nlFoaGCHTcy%ilwG=3Q1oU1G8`q-r1tS@_J;5zyI0=f^0}^ER8``B zsDZ#hAls-|s(iD?n0n4?!yoD`K*g>>3!g;)p}9MyFwhw||5SDHMUjn;zB&~fPBz%} z7)POqF1*br_twXj-b7(NC^rg4yB)9CkA^zLdbY3C$`WqYC7w-39Pf5*XVr^IoAJ*8 z74&>4n+}B&yh%tw1n2l}g^)rk)TE~8RDhesxaKT3gb;I6Or9FVc`{r)T{+I70f?h< zOc9%U-B(;v9cO0@HO74VgvxRZfZ8g<lHkX z!aRUhA98z~M7!1M0f=-G&ayY~o3^Mhh&lG>7>qW2Ev#dC??Y(bwSKn!Ek3&_@hlD* z<2anqA~LQq(ER!YLuYH#A@muZi1OS0*3mtt-aRzLT}pNtiOXjH@mgu8HF-hWt}Z)~ zAB|?ju!NH0cBrIy2}ggvbIN9VSv2)5=5{7ZiAv~PMU^a``}dRhgEZwV25v6r67(*3x@Mof?DNs8UwHtvCIKY8mgSjN;@lC_Te;qg+{mu_xq+MkMK z>S0;VooCC1DQLqfAOzuLe~QG<;HNOwHjXjmZEq0VC~F7#S(Ca%B28&Lo8F7eWOCQthHGh-g%mmXkqeXmc zpxhDzy{ujkk2bJT5y;{3Pfup6+ zI`ndq)m&{#3s7-EEHi;e#Mc6-s3{$MbYvR`k# zph?yNwyz%sWHE`hN*-`N>DwuyoqT8d|9E=qfHt1*3$#!uR-m{`p}0$NDU{+)aZ=nZ zP$XDzD8-7qdvPi5?(QDk6WrnD^ZmW|{@&T$Wai53+;h)?Bxpe5>KU1MD>X}_R&VMJ z#waUWFXRC^W}g!&k}q~yY;@IBS>id0Ho_1b&$s&0VZVC`oS0}jO-N_pWj4Wy`fsN% zTqwd&k)|niEny%dBEfDNuvEKT%lm{>lTlN3q^p9eA>^}YUWGoxJ~N;9bwb$*A08w- z`r<93+TpahX3BOq=D}#f#lWtZe1(7^tG!clIt57%KSeB&g}6aptLL>%gL5Bq$ybsl z(V8OWpXtJ$cMt}tFuQCEZ5T?c-2F?L6tI;U-w(lv+eiF3iOXvFpUIe&3~9UT4S2=$Gco4H0>q@ z%<>G=w7>p205;f?J5)Oi7jnL`w1M7sz0;fA3#Ig|s)#3w0pz#)JT^aE+YB?`56O#T ztt^yis961zMNYqLc5!3V&n)Qv_!OG`Lxr78=i@%L?vw+g2*@q;ru!?(5Puu|FjJI_ z@l{>s;;Sq(z+wg!@c(fE)HI&ysNLXB&lkuiOnoC;E|O2MQIF1TCXGHkyx-5_5FV$y zI&yKdfHohqS1Xg6p_UKX_0% z59T-**3_|+I;CJ(JHb9Zhcy$i#jC6YAq#J*dBb(FinHX6SQ#SDRS#JO4o6NJUzspy zEwk3N22eKP0i)O=#lX4uubnOlp0bF9TZ9=7Hr|n&{ls_kNRb?dU17lZ{#=EoG)Ghp zprZYOl&hnx^!(&qtx&7kkosqt(CDRq1?5e|VGsPp8(#*vV3@?zPjuE0jHkL4!y4Og z=V6`xaZ4QCMw1sKqG(TJ#0ddRM{-6VewEDDZlZ5%3pGaSU&Odni&Z5^^ut?}YK}X! z2yq&h8f+IFxW&>7TV*NdY-hjgsZ&`YJ^#-5A?XoZZT6Ro#^G|x!_+W8_tF!*%n*zc^-u=S&Zvx-)d-!Dm+mzUq zDE#C^FQtBT!g&_XHHgNAoxKXCK9J75+xbe_sVZhAvBb#1iLiDry$j+peUcuLyy?Z$ zZgEp;JEIUmXi62loZc72lCEUL4imAnH&$xl1itmHY~K}52eUX^o*QdccgCj zwJP=f`G~o(SlO$x2zXjYEOEUE&3KO=Lcpa z+hu(B>n$M)=99M^+07#ezfv3PNm?8R8Su|?hn@cUao`B_qs52#^^u5m*vS^l2ZC1a z8*zR#&hFf8M=c29CjEHX6G|qhU>n)Y97W?HRh%xI6-GR*^2+?A1{2aXdWaKvh2>rJhZBOK53s{yCjg*JD$Lhpy&z+7@lJt+GC_veuKcs#&U|tD00368^&Rm zlIQx+$h5w$>~TjL6=*sp)BRGv^>v40Rf`CQ5KSxoRQLzi;=0=VRE|9AE`l7ENK^&G zjcN^Wk~_jLVlj^B2?P0H9Hp~Tv4r=lVGXnU3Q%QoUOqydu2TEA*hYPEEnDr;Nx}Wp zTb*(gPW@D3N@&=?{2Pv^$pD6HI6?hl9lI6P#pVR4S49Ct${>I&pvJ+H*9F;+<|b2~ zzI3qvmNFQ~X!Xp)ECdmTASgQy@{DcQaD#hZAf5z#N zv2ZHkvhzykACS;)8Bj*zcoVat!$BCg#vZqjZqDAgq%U&dt{__&IvLR)e+*%InzQLJLM?rWQMQ_3(|SBH&W$~x&3;+CbY8O(butz+j1h^O(A z)I@+Z%o_&~fd_d9l_fM}Ve{m0fb6~TWN=a6*bY*?FSNghtjhQYwlicbZVTx;$>OHuZ3Q2JbMQBj8TC@&ZivT_roCA zp}{lv=PxY~S!fEy;uTN|^2mW48!0?g+yz3ZJav33L?<3jim0gg;;#`qwP%P~i(v0= z{##lpkDlJUr08>f@M%RWjmWDgdZ!A^ublDqR{m~-X=+`W1?!r&fBCHUHLhloyL3EM z3AzTvf%bfGFitfUF$}CO>LQ`^(rXp9N96VOJY@B$VGww_GEN@d>VZARit{v|D7p5L z&p3$WD=o>bB#mOY7qXST!YQl)f69S`mJ>*dPr)!?`aRqDQ&?RreJh!CI`)1?=r%5B z+5@df3569sit&S*5d&j3ICRsL5FbalsWckg@i_C@ivqc zGjA3LnFjsD2j6J*>p{=Q&U^Hjcew1F0)ZMTPXk*|oL;w1kJfCF=xK=LT8+F7pv;i) zBD7?1atMPzW{=cMTN)xPqGQHRq|SZ8W?=g9`eMU9NRiCMCy=+5K`Bily%6I%k5_jvU>`>1GauiKtXDTQy8tJHraAniDK4f_{8v`Ujh(yH9e<0bAWwZ z`DiM*djpTqFvLL&$k0}7@cm&obSW6SDEjHYziy_8u!dk7uuFQ8xBE6D=Ko&xMamzL z=hu*vU@qmKYnrRmKlC9=k!#w$^RosaA@!*p^#lf^pb_Xtd-L2d(5k_Rqg46LKX zrY#HDf5!&x^8Ub$!QxD7qXMdTqEiYn2WcffEHM@+cNFR@G=VC@FZnk=IU3#@Vyc9E zQ8SbB|Ap8h<=;z3zEc0Z#pl~FH&?DJv44D3HC?^EE#*nA2KsLZ4)To`x>^40Ct55R zUpq~}N0So9LP&{ZN*13kB|_#Ku^9B;lt#10X@%JT-2V=u*DOU+zSsW8diS=c^9x8| zl=IOkF;jr*zbIsVYJJEW32orLspB2Wd}n&-&z1fT?$eepK#`Y-t@rDhiIxK5J*Gf# z=FoIdk9S8K8G9z=>3x6q`6D!up4@@6w`jlH+K(3SXFpSwu_pK@3No{t=!dfWMtVbk z@ivjzU|SuLEZ*5a-~^nCPjq23@CL~tPmfK|b#lBUAP{eB8FK^m zCi|GXiypeu((neS{{QUqBphFs4{Y&$A_DSFFwSwWgr^DDBXWt6xMn7Iev?{Roqh}V zw}y=>v+_Fcs*17k#itF?-R|8bje9B3tqS^y+=Z>>ob42dQXx#{Z(o>0*aChmkr7yJ(<&5mX?u zjP2&?C#T;4jim5|K6Fn$Aa)J(kO~Y@F!l8l)xAK1z$``sWR{ zx}sDwg68_&_yPGRne#CfOIPzFFTKK<p2bI?_=b75hRoKFDl&b!rCx=LT@EO+chKqw`N<)F@GPv(tMYU-b!wYX(C* z9l}MZxKlU8twIXJn4b@Hf5en0dU{7!sXKQ`N%%xdo>CCG zMGFtMAJBg}#}iyL)KV1Iod?W(P32=xIJz?2nhsY9R(wnZ+|`xP8vggdrJVm>*wI%8 zOJftyFEr1+@$$4$ydwP1mj1i$m5g|Z+4bV-&MAe0o5G}os&+%ko{Oe)*hkjdm6By? zVU6F9d&dGQq|)nB@{8z6UWk>RfZrB?*dNlYYo=)Fzjw|i^3L6~u;to>Nk@8=Y z^+zJ3|AEx>N;%F#NwoJE5gViy^lWSZ0X_L2Bvd0N;7|@Hsd?9k1bVv{SR5KhcKb1Ou;)PxmT`X^!gA!39Z-=+Xc4OZeoRs8N^xj*9+V%exdd@jlVJ7I8a? z!}EWaf1;Zeet>V3ytqeG`trI?BbXDI*3E*$y8o95tbvm&6E<%2{2(#zWi3IZNf0-YZ@x$3yF@PH%7CA|Q(hd%jA)2}r z2Yl9!@h2&&I$mE^p08&38f=~|7HZ^_P7e+<#P2G#8JYjL&hTNS_=~#1^el%ph;IQk z=t-2A?w@@;L3uFvYLOw=}?V33=2dVxugL$S84gB%g>3uIw z;*QUK3MnVWB}5c$|7FwvCCv^=1f={?d@8(LHzEU1f?DtC@aX?dA^Zbi>F}#=@EEf} zqnU6Tdj!M9e@6aC6#WxBWYEb7%iUysHEdR`NbwJiXW0Ke%pvE^wv7e4x+jVGXM49z z*2)aFxPs`+|I4HPb|c?)S1D*0?6#wbTrFqJ4Q3em{x^YwH?vQl=$ckaLW31!#o&8IU zo2U_X-SJuOb9+cA-@livGKXGh*@*J;N$11v(vpiE}riGO015lO>%EfJ*{i#b7KqK7q&5c> z1Gc<`KTmFi9QiB>zv?{nB{L$+jx|`|ucD+u0xN6!S;x`sh=Xf=bBeFKvNRa%6+kbz^Akyc<#Buuk~9M(0k{$F zXDZ5&xLXRF|0^?IP8KgctVJKNq@Vqk*r!Xk#NO3){ND9&s7K;yoXL1e&ejL3eK@Mt z1;YEAF0HX!z^&i$d22HeTlv%e2{)d5vw4E^-e?LB!op)-xRTHZ24LPf7^xi2jQ@oWs^BC35M>B0v$v65KHgZt$K_KvB+fhu?<1vHl^G z5_)R4R2#@4TqT^y;PcH#W|8qzZf6v}(aARp6T9xI*GPsyh`CJ4aA-Ae(0z?Iv2+YH zPh9Zf`dB=<+5T~t=yqwH5i<2JGanAi>Tv)xgRz7?G`f}#+Lt8$nVONTEISz zTDRpi>yj2^eMuF!&&{~y>SEWanxp{V8J|sl#U2xSc|UBOag}5Uc7?V-W}?1FVe++N zV#^S%Rlhpv>^~>Tm@n6dQu>_8X_x8Xlx#zo2Pe;;@5a(P<}U8-Q$N0%7mSj0{+V#> zc;166=N?4~YyolHu!dBNR}nPdT~&EbRbX@&jZe;H(XSkSa6AxIj;NqHm3<*nras+GWAeXX#Lo@xB~* z^JXmT2hElb@phycjHFM^yC-2CFCCn|3kf~P;(}XXfA?E~qV0Fkkwi9k3_^Anec$z? zs5madf^I7Z>rUiK?s@O$YkGe7GlK?5Y31ri6soN#p(94ebd|BJ!@>AaIGur9s>hk- z(DtHfw9*U%Tl7`tP9(;F!WSA=a;lq0>##h7s{uMVYN)EGRnqs<6GO@bd7KcL2}!@w97dI7$JDDr=ODLa8^+tO%O+-K>RdL1dQP6U8DD813>Io=93)v@6Q=Tih}vXB-Z@5dZwT z9F`-lyHiJcY1r`4)=u|-J}k;I$Qp5UfwRW-ltzUc&c=v+ub`&6=GXmEQvE}B%m1C@ z?nls)GtN4p_o4Id@GgT=-I^CXSPoG7ag!*6lX2a4tF>! zlO|;!_S%eq^$Kt~NF41H*U9MSB30<9G<`-L!G)W`tlOdzKr||7>gQDy)(uN{> z`H{bpxN7e}G#Ayas23YOARk{ub~&*jApPdHY&V$7z2+9lJND_l7y>Nk?8%5IT-~NZ|QMhZu;Wi0&K_g7xqS~iI#*ocNPq2yT&&F zqTepIxbGgn4w82_FtLB@L{8*>lA&MZJYM+u%H*sov|rZOdhe{&whsNxY#$7UL}X2z zrXto9((;%Yx;AO--qf$O63)q~oe=H&B6n(9hb=6}I^71_8mW+tajwz1{aflIZOMO9 zk8>7E1%|7*M{8>dK;_yK8>Z%mk%$Z7J1J{pYrkrc*MKAM%gZB`!E34GcjR~wJ{<3> z)pF@|vJ)5BK0hXy{0PV52xslYH5YKo;7UvVjQrY8_STsFmC%h zv!^$;ngs7T?8>Lq_DS$>F(sX&UClVlFRnISuFbtgQK0N#7*-aVmSRspoE&*k|5|%f zST{~;rCtnB%EGtCZ`@GxL(bqkZEhS+U}=WSk6J&II7W29L6CIYjtKlVSAiAE+w2aV za|s6uj0*&%#zqVd_hRTVj6nAU z@t?~bV@)_EaLAxQngPkEOe9!VdyrQWT<`d*KxWnV+sKb09pRZuEtm1_cKv6YP3(8h zEL0wgK}KI&Gh9Ee+HJv!sScbeJc3TZ85X+Xxz+Oo%<)@`&)rKh#VNm>5>cR>zXdPy zBO0x1rk}e|cK)ehnBzG@7s~O>3$-%nE1(HUOnJ*@$POJRouo6m?b6~; zPD^8KhSlAo=Q}*yTrYCCY@yv4orWgTHg%J-w7)zNpMERABs4l${XS?{m{16^;2-QN zt_C5b>5}PqmcC_~QxShoe^i*>QWp4FseiE>TH&-UeY8Jt7vQWQZGDjOCYGo}8J)#g z&oUB&dJH-f;i5&EO~|UV16L3H%d#A#A$~VHP0sXt$vBjPlseuJFMoQPnGw4#kl)8r z#Mt^1XtlGq%F@Mi#=?5b&G9R-5T7X z-a8c?XQa35UUBY&SweQJcmGNOErnk93BqeE9MP_o!-kdN&5dgA;+tT2MDHEf{i84$ z!pH#-a(Bt{x$*ZpnR;B^5`;GCW_h1kjNYksb*7a?1W72AvV@!NB{90z;hk^#fm>Io zz*c@6Fn#hy;7LRl2r>L4Lbv@&{ZOk%7K`TJ#z*fP{M)@dqBXyEqDGs!iMe3%3lxsM zz)^w;vD@7IwUggjKYn4M4O5VN=(k5u+>r<~YqM2cS0i<*{viBbf<2s_K&G*ery}xW z20?{{5ySVLDd?t%;p*bmt?(=nY&oq*3Y22c?W|DuJ8uM?&j8Z2#sHzU6EjV3(&q=3 z?rr98Xmlq%``h@=1RFfhA8Q`l<;o}hYOBxuQ7E0=BN`VX+aJXi3S2R78zP7v<22;b zw2x>=B$yn82zg`8<35)4Bl;j67nN^=hZ{9zLVnOOnP` z{FCWzQ)avLH_z7BO`G5*BFcTkr{j)+i5pplm`ALIpGYbR~3I_A{sgyU<$up?}tT2Jr0p zk08@|441r(qrE$0s;<1{u<&CIO}qT|hYyAxyPr=nD%)N{gxg%$7HZY6W8d}H$~TpH7>{wcg*W1WW6<+Qw9D{cDE?Z^q*gz51_t?@ z_ZcYNCL~v2Qn-bdZWJf9Yz-sWfNH*$#=!b#$WV%I%h z(IO9xH-dKub550|M$9C|OML+KiWKe~0NBHK0T!Xv{d0nmYAOj%AMJiSJyL1okwy7f zHlm$fv)AxV3)j%++Eu$ikJf$dILKFCuUM0&_A)ocjvZf6xwL+S~#0Q{0mj7zvH}6`Qd5;5m|X=EgOzA zV-hj%)P3gqmvMj2y3nf2gDHMe)njmdG`AWNy@zV=JIi^|RgD+=bqNFsP68ZG`!89w zdoz^!Rm+xPDaKUsN}E3ID2e-pdKmz#ZRxK}vF`TL9D~4J9=+J3j z$iGK(MO)_Wr^%d#mP)gj56gbo;r=pIUfr4%^E&s>+qzlBXw=(`4qe?G6hAi!l5W-L z!kw>Uvk!U;K?hzx-3>@Z?BJMvD_3gx*OzzC1N)$I8I z74+RzhvHs)gNwnZKY2vv!-;N{?KIm;mxZ`5<>P=5+YS);pOc2&*fM6d`H1!apTmPz zKjcJ^MAh^OBK86zto^D;Kf7p|<%5G)AopBr;gfrAf{SYlk{(HB)UM{}Fd)Z65T};} zm8osln%u5GX1Dql0<(NynhI^_a{-Fu>b+(O8qeHe)~&n-Wj%rbQ~nKZ-g+P;iHl2V z3WSqw%8fJp$W)EN-l}7KA45^HIJaOx<@I&%f__V)5=!mCq)dfQaq2RKS!NwmuKD2{(xZ!G#DEc8jei4MyED~@+Dr6(`< z@j0&Jk~!@c>%>`2ZGh3N`R6oWdGlY4smqkT0tFIi3pWfkd6;mxLD z0JnQhF2M#ouY(*Jf-Fv#2oXmLXZ^B~rhQw0)Sq8r*;IHR`P}Xao=s>b`!juCzWIww zkGvDJrLv_>ftl8f6u2a02>Y{r@VXeP_CwF8@Bf`pOsfA01YE!*E%O*bhxaO_Pz@Z- zIa1;o8*ZBg)6Um)c*){0>viHOKG! zq?P0ROxy^hA!j-($|NOA6ZiG+?k1xFS+ypRO+bC0K3*LV3AdOoEZRY0{4Ch%yED3n zNs#+KyPec>sr4qj{*_w^Gx>Y|q*_Ejwk)4!H(!Naux1T?qyjP0qkElHv;^EFBqSq= z8~z-l-c?dFGSMhh)VR|&^ii6LCb`UqEz(WXca**+>W5lCmFd>baabPCs*p%kO}m4% zkd~5@h5q`ECKusr#mDGW$Iju|TU-aa#h;dGSt^iW{|e*Ifnke2B^MHXWS16W8@Hos zvA;u&+}_{QXH;lk%pcOITg_-ruY}cFqCDH)oT&8qDxQ=#tgCr`c32j2TNuoCjLGCq zVlot_w-kiQry1o;k!UuT(APYl-C!*v%AdZPJc^Aul#aO%(q*(0ta zCyeg6swvGk9E}K5t%O~LMv%8^wyOiiLctur70S$(maFYoz*A<}7yxCVf9W?9C9(TX z3<*)9PlKkU4B^PBGAnKwrZgY=cNA44&JmZx0^$Y5 zY!lON3NMjGx7}@x3~NsgyK~nfRdJ8Q30uE`?tOw!7fbX{`qLaDecG(!`s1*K?tMc- z1q6$zO`-kCjFZD@om}l7Zf^~J8K#$rhmwEe(W%{k#rL?@Z}r>~-|P-EDRnJikC15d zG$cLtnwv{Sd9HVwNvuW;X6auCTbe|GN0KM*n8Nj@JH&p^m8|f(jde==4tHxkYfdwf zA=g&C+wEBt#@mS0ELrDt)9boe?s$_5n_uD5y+VJOv3Kt!Ma$y;k(@U!&~LrG`SUPo zv@)aRO13UZg<~CpxA#4X_S--dT$X|PH7@g>d|-8OvAa>umjId7%|`xyQQOdd_6~c? zo31csnPF3Rn#Tf?opX|I{R8s!Is?wZyt?Oq&7M1Z)VPol$3b>WLF`UM3w`gor)yc7 z9)lX6^a%A8a7&9&5FlGHpW>sZ4`;6ZpzO;Zx(bwzo98kD@>%LWwLipbHYioQ9`pC_ zap>TBoz2OiLE@sa2rSKmRaGr zvn*UBT>fQne9ZQpgaBE|vxN997xlGAS%a zF(odej~G2#@c2!QbBW7J)yHJkuq>ADZvRjs&0QS-W}_JSTyl=-{P2Qw)Q@{+eE% zt}>zdhb@z@NiSaej#NfJf!$DsK<$aurZEtsPZenlFugCYD*}>hV^uFRd`&w7sLsuIBLZVI0nm!JGigmXG}D|Q3LUWTD59+|Kc%2)y=A2;>64xf*8{n zPd0pC+ukAnUR}_mw0cjq43c^MIGTP^F@Pmln9Sbj-(hq8@b{OVh=@zcY!|stzSE4B zdWE>FMEH%R#8^6;&J+re5!T6THLLzOR?3~ZX^GQa`PQe((0la}G|!rWqH6$GlN}C` z3^JWky^M^04O&7(kf+03lw3-rWnd*AFduxQQxxH89`J>tK{?Me3Acqr@DtXgiP z?8m5e6*%*4hR=uVu9I!^(S zq31UaG~H&GV0}(^>F&BM6()`9czh*}h>t`*zwUo0>kmq?OH+0&B?b1b2EnriEi14? zP20c7AQ{(aE5sTD1-l6Zr-gM^;p#8ngV`lBjV=*~#nXmj9|BuDJHu<7wen*I!U zm#$)6=?5A-S7 zV9j3IygoH6I$~_Q4H|+UHO}J-Rl5StE;)MBH5{6Bo1Fi7L3Z5@Rj9Jh{$>`eGG6~2VNBfMv*?G{iH+sFIjPEz|9 z&iYnp%jf2_G%>7syjwVyi~jRZGJt?pr_)&SrXX2@15n@HcJW~5F40g=`r1(Ec&`3= zI$cS0H(tYF|EHJ0C<{h-7)7fbS+X$A0uDFd-h!B-D0Yna_-BgvZR*ct?N>EmhpqUg z3iCL5lUPBmF;m;QvNQJ9?3U!6&p5R;D#3-php{v+8n71!ZrAerftTcZ<|0(L&kl_!#bt`~&4x zSGmqZSnB%lcwAI4LxxLk$mQj_m&WRSn*;D)DFNQkO{$=f;I-}OwW8C<;gRiKt#N(8 zD_EP^yFB&tPUp?738L6Kz@x7~X#HXPorwR4s}wuG-5};!v+ZNElSvIzBH>v-S*5GY zi2W}Z89fiI^1I5&pa=bGZTIopcLoJ}u2-7m7IDcWD$ko3+8u6!TynnO9Gbli70F8F z$%=|eo_fQe^5OutBp+5_!SBq?m-!Jf&Q~#25J$2vadcE{+WXTJuH6uEl7^S3OYFAl zYU}X&Gv33Ve(mI1K0*z^XtNWH@9a#iVW?3{eS^!XLbo=rl-(z{E+{OU*8Z~E%Xu`A zbfV!6gaGu;@;cFn>Du(+M~OUV`=S8GD*>Z{#G{b+MPGVwKud9QoOpg~mp7kJKdXD| zs%%(bmVUU$qZ~tK@lR}10iPUMh=!|O0n}MKO=#t=0`2yeDhE%bu>~Nty{0sUYN*BN zC&=TBH{NgF?`@VD__Ke2isY?bI@X(O_l}1tU3A185q!BJjs)xw1p3tzAtB+wR>H&oA0HzzAvWy_0)kM3Qc0+WKhfjqOklJeoAu@gzKwc&AwV&^ zg|tPnd~V5(f~UCpRcPGz1bduvr`96@hTb`O$;YpAlD*hd0) zU>-3ZQ`AtM_U#MEI##rfER zJY`qrk&HrcG$!>4UtztCwR33{vYOjJ#bJw?|A1D}*M4$FP{ct-Z&>DpAJ z9GC7O_gzk3f@=+5u1F1ppJS=6e_>Z0f1^j-O)`7mU|evr4NV+iV;z`q!u-kt7`BE` zbsn{JkLTHf!BkCL(c+uyX?MR3>N&rxkmtOP)j|74x3%FF+@oh~j+N6Fw2sZkAjRj<&QqVZ$& zQ4!&)yqTH#_Dkf4Lr|;RWjba%Aw=D~XUh`{Ck8FPrkhgDQDnimB-6^rY7UA^H zgf?oetX*SK^A#{M`=|ibW*0f_Ha$)E0)wEdgGK&Tk){%ClxM$vwAUqp`}q~TwWfVH zt>sDW2zTolHQLY?!7SzP%N2kY*6QNR$*<8zm^Ep9j#J3B>uuvne6fAG)C?3T<(NZp zV#6T2UD+#4CJZP#OIW#BC&ecsgT*KJD%j)FetHplGffN?A=5~r_?&%`r$!c}AvzZ7 zNtwq#?W{X1!((|U*vY>RQkcm4_{o3c2$M2x`^hQses%V3e|l>!C=Xbej}N>r$ii$t zClxGOOW!%act>vkRC4v4hV%K1xM-`@R^o9@;|Lpo>+9wBM*3CMPe>Au2bDm`ny@1m zmL@Fc8_uO4C;ZpzEK4}wt}+_={;l;YSb)BmzSqd7arH&(>8jiMpqeMs=!=}vAwO15 z$MD~3rRH~i3IF1|$nl;|bT!QAfO)8IgL!pEL8~=%wXQOV#>VHdbTunlKVF+%g(r4d z4A#O(qECc)7tm6@aTa&V{8z~vr(I7L*C&O!IN}pd*=l;?a*Y*(996tk*xxk`T%UTS zgj6p#-LFt-jL@x`@H5kY7{btdaa{3LLF)4J#4x2n%KkoK&~!liI@DzTnePKA%wsoU zfkN0$!0mb6_x0;So(#Xa!9h1Nw#@KfcjOWda6I+Tlf9~*L1wEI?gBvcWy{c+v1wa& zo<>ovrhsu@>fCdjRB@`fd%Z1dK$H*1J3VmiJz3jtL&YhxzB|>FKiIKodRi}3%?s6e zCL2n4cw}ozMg@e;&Q|Gxr%$d2lj8)8s@hlpK6gygS%n=1{jKZ~D zdF)u)^eHXWzb0Enh!g=>=F$h-gdAEw$@ouq9}K1ykj6G~2?XP^5w#MS6AVHL=dP+i z)`B9@U(SM z+zrlM6nw4p(lH621c& zD7?Q?J}C&C=l$Be!^C$)vK9-<)NscmJVm|#cxr0bPL=wdQ zT#)>3!L5MGU}SzrNwgw3ZJFAl1d7&S3BRwX*+BftXO1(U90fTh>P^O9bD9v`XxOrw zX3!F*h2>FlUeu%;b<|C#)3NyoPg-;JM0qiigu)u&CU?JY6)!G<+M7VgS?+u#! z$ma3+uyPIR#X8L!bCp_7+Lv^}w*{ymx5XYTJyv+hnSkJ1&9MjIilg!*GurFal|*~E z36Tl;d)3Wxv%}hhl&@*SOeKqbB#V0f9~J|~zDRPPtP7{4@qMd1u4$r+Okg^rcmbe5 zo`Cm#yH1;DoczzTx|um2P0`gvRBdfUqJuH*?wQvc{O^8}b@(Djp# zy@pfj5!i*D^l1&$^Y7uAq({5X?^GU{|Eeo(Gmj$sIFx%nb1AoBoK8n)vl9hO*kZ@Z z=`B(+lC6K{=3Fse-4cO^XT56i7&hZJ z(~@9=$CYiH?Udl~sLNiBiYAOC2KIuFtOq`=rzpzHdhZ5!Puq%YPcP>)$62~Nd^I|u zBN1^C0|n+k^9JsH*7}HU6$f#%z&A~!PED?ASih&(yoqieogR-`3lTC&} z4@ECdJ^1+@o2k6PpxHuxF6u|T^_2Vt3R-H+c8_9Z5tKe;8O4{EKSRsuXw-e-L_cYv z9`f35YDPxw_uOGi>`0|W#~ly-v4_KuvL@T>!Y_(#(vj^8YhvEND*hn$+H)oYoWcp? zsQ9tx@h-cwdS|ghmxf#K72unE@dEw@W167J2_^ev-eEdKhpFK)G(Fg9dTC{o1jCO_ zhj#O-%i+lI%7Y`JQtA!xYaBCh=jRNjcFWBL zW*D4?YIbEl+x>Wc?fakvqmYV2sP|W`kz0i|lK+njzzKCOLufAM|6%JbqvCkBwr?!B zCAho0I|C%R1qg0~ySqDt;O_3O!JPoX-Q6L$XMlls{^vgTdCz*D=hLiStGlPFrlz}U z?|uC)UV_3OqrW`1=b6C0AoC_>wj|-yoH4xoz&Mx)l$ZI(SB9mna4=ySE&?5rPIb>L-Uc5 zcc_tDtRGxxYUcM<5Nbd$RIT^p8MP1qnhqX}wzvWN(`TGLY#INZC`IQp40MCFX7|_^ zaNM@~j^AZ_gR%9Bwu54^V!KtNc9C_XuC|Kfk!uX$HxGv{P)kcx_D?LA##+WNv&*-~ z)5o=)mr~0Qukt)1d=^{pVl#NQ7T%E6;f^2yF_6`I%TL5b zu0xH<_4{GE+s{yWW1x>yuuIOf2<`U{l|Mtm*`A!_sUwHhcU!Q)3)~PSN^l z`W#=eGnnqfwQ4`+3Y(c5YqpiqFZ(^;Yq*SuHC9m{uQ#)qEQJqlINJ;mbGRM-60WOc z4ioCj?o`xf=cqro1oUai_On(Jl+zu*@1 z-1P@p631@I(Vp|Us0XQ;)h59F&CO|9uCtvEf-tmJ z`Y$rd@Z=K&(=_q__Nb+O8%Nr)Uan=}b8ATsi`_P(u$jWwtSPjbbD5?)rnKHR6mNq+S~Br27WTjE zKO&FRQe76JbdI~d;r)&UX?5?WfWkfq3aHiGJl+LH3rw)h)cb>5YOl;T7xyIg!(v}D zL-@WGCevM6y%jeSzO$)6Z%>>VR;ngX1|-8w2oUkwE1hSrXOD&V_1Ul`2$bZ-!fqIE z)tt50YEIuR-jng;c25{Fv|3LtM+&SCJUv*%`a^7{N)w&;)3QV?GMLl~U$R_Z73v;TK zPit~Z0Ug@~{0N*%nVA0Jd>5O3na#qqDWV=Zp7Wx$+-&8NL%i*IN1`u6>VC#!tu*q3 zlni>x<<-gh6D6N}!%zeRT8yD|)o!DxQr${<+~CJxq>c(@afSHgPRG z`96rT#HCuizwu>=Gi(EKRlq2iFaX6R#kQ_YpeadMp*WZLs!k%!0+`sJhOt#mTlvY&*{xo8Wn}e&_YrG z@N1Hf_4ys8o=xP3QZkuHMT`=n=L(-+_l5q*p(FM?#9aMZuHDpu41iP|rBeaiX`>9p*!P^~Rp_F`Ulf2$DSrb5yZbu*`rIMJV^srBh ztOFZjcPMO&i8_b=> zPg_sr=hSx2XhaKcJT{BC>6~MAWTUm>A>kG$=s->Fhs2{qreQM7+^T9fv$RxRX2aU- zTk-+D^E|+}ztb#Lr~K}zCm}PW(me|)Wh}q*U%%C<$S3clxjvaR=?#h6{w6QMvtrb& zrN4M7V^$KrD3#A()MTXlu>;(M25Eb~rJLMY_7mYb}mx25Y+RMRAxE z0i7=@o?%Ymq9Oap-tL$AfPLmtl0qe9zwsY10j4@@vb{suXp)&uVI=K%2E=7YmUs`s z%75>fhx*eYTXCQEPo7;qXBQso?PQ{_yqn+J z8LUeA>GkF6&6X;fJuqZS{(3LU_Nz`__X!athNUOLGyMo}6=p}oOjB!_?yZ1oQ+R91{*dy?vhAlUcSQj63F;`D{c96e8n-6|)xHX$oTp9o^@)PVVE*`q*Rh+%7JFF2?X8mb zX+*k2TH26Q^=HRy`Cs>~Kki9}Sv_wdQ1)3TuhY4b+N>QWrUxLZ@i`E>UcGAR(n{d$ zxi)*%gyVinNc#8Rbr~9HX1cLt7B-Zc!%c7_=4ahaS2X~*htR9A&G?x>Tk%TrDYczar4%qgH4>NVUJG~SYDidE9a`YMJnKp@XJs&zZg zw*JlE*q@B&mX*XND8Wc}#BrEzSe5q^I&KQI4breAvFD?k2UIJ$aqu-{LEFieR_Aft zY+sHOA=cUXhPnRTIw_dUyan6@0DtRAbIr>7JH>Cuz^pc`pzX~a?(r6%L&UXC zSrZrKaVrVMemwG-kJgN9^>*Cy+FvW3c4t7`V@q58(W>74LTCA>582ZK)>9`;p-eoU zS%W+B?Yl0H&v={#zcL)@K2q$(K8+ru=gx@z z;-`xV{C-*_2^XBULY3nVlUh%Y&qd0Jx-7~acXI^%%mDE{F{RKK8ndCQ&o3>{Bn5*Q z00~RtYI_hUf%cqFI776%2X?w(;o0r!rZH1_HOAgwuN347CCXBO*7=~}K}P4*ujahj zp;ybLNSi6-ih5%NRO7ipi&1y3%IUnV46+{}VzcpEVQEJCJ)LJ9gkjMYm4~^_y#~ad zd7;R@L6Qy#=RKk$%Lc9L7XfsMo)2Zhx5r@7Lw?d3X-U=Zn?zxR56)$ftwd+{n;2Nw z$%}^S5})>u zR$nGhwgA7BM=m`SGOmO`>yMB2hcswYc?x}I3dIQ%L=+{$+35U(6;={&j;l!}t+%?~ zz4pb&(_;j~(wXdCyBupfPxBEs+Bt(HBW#-dhIhI|J5M*(1k@92`umcr^-*}fo?DaJ z+P||r?jp{HVL@8jHF`&MQv;||PZ5JM z7B^jYX$C}~3#eSj_64@x7Wo9`T-WgJJ(b@pU>4?M`LC}v3cn(DBa7ZCHVgnKrF{nq z3P}^7i;#^<{gE@F@b#TRf0U=ZzOT4vPouA)+TEUI-F~E8gfE_62)KB$d}~_#V`Oqw zAh2tCZ(;G_be^HpYTON_KTDFP)D(qA`No!ClT+y>J9S8b<(6Xxebw$V_w9bda-3Y3 zjehZYzZt(cSplgA-d@dn;&(~P-ddzD1$af!{ozp_RaM&%18)ok_w3mO;Xb>=4+#D! zt(=%~O|PHsa2?FGF8Paxn-;@!A=XXs1(nlDknm(Wmnx?9> z#qRo^Zi^}hV&DUqC+Kz#*hD%kG)n13ZLqJsC~O!g%OSLcJed0j(=N+>HBSWvc=?LC z!KN4a*X{mtWc(k<^V3#kB{;UF+@?zA`eDxTRC;x4o_cLP_=xNe?6LpFt=HNd>_ zN3pHlv8(_2X4f^f7wyyN9A-Ed{@{q(u8~3<-yr`dM+v|-$nmYSzj#?He0q-B4v&Ge zYHx`Z-lolq@Xht?Fa_@u+_E|Xo>+XUD?RmXffi4}(8d^C3pc+kk%P%NK#%kx;>5Ck zmrgEa7p0Z1UW2WwvjpSVYF9XNkY-Rid+6n%k$vvk-U{p?$p{G5Zj084ylvuVho}d- ze}(5@omh0*`s-|=0j?mpktA6? zh^XY#T`J-<13$21$RgY$)kT&;H(IDgo2|dstB3sOhA!5Y&!9-<`3M@LM(2}uDd7Hid2`<^g53M-tI6Gd^mM(nDA_n6@(3o4gXVV|KX(hNz;TUgJ7?s9;7v}HmtGD2 zG2b}VzO}5yl?nJj5uNyMC{XR(kNX#{7`uoejkos;+K9J*Q9gj%#eHwWEtgp=gp1Yz zWr3u~eG{QBSWTja#Z@|(hwnTYT)*R6YmBetV1uIW^m+<$LT~(Pc7%V`?!?W#Juv_; zCb^sm)PNRNk^zSf0c9LNG~H9`HhGq28)pIn973W6gnz`)*FUL{|5^4i%#x&urH{u! zrdFDtAH@*j=8q<$etk!(PQXk^DUAYBBERy{=fmr~_wMfXiihSf59Q*Y`DW95{!de{ z3dFc`FGcKdQn(?4lCNSo?Cx3U0$*zLS#+5jf}h{F*ssIB>sJ7i|E0GUQ3#R&tjM#G?0R$f)}*^?$B} zP-H@|#qcN29Wczv3S$2uYLI&wBHL#u#H>d!606hvBL>&c54;TIfOf$FXNOhkWh92V zNtl~)>r||M7?YBvLVk_wK7;z(@cc%nYYMUR*b>S@)MiNjVT-)Vm|RU+B2kD*!7w_O zYX+$lVD_myeg|bAcTc}`ZTHmONQ3vbZvAqPr(6IYIWE)fPd^d0;7Fn2V3whu_HL!~ zja!i8&|xqt)NTc-4(>>De|`K>9Id_YmbpXxWfEqh}h;gpMXDGH1_k1?_fAa zca7nFe1Ez#l*;))CQ(?sa2@7z(-)0b!8b>jP(i{%94vGG>y-bxLYN&+f^GNvb*M1Tovh*Tx4+sJ|Gv+E zo%GN6VIV`}^x1EA(99M|rl<}%Z$EyDMNluF9Qn@||JMb=v54hRQZ9qvKT^qcwKFHsZ-P zbf^18_(qr4=TCHU^c;g5p`P2Ib<}^&!~dhjfs*8KK{A(EgzV`QQZa;wJ%PJ+KaM2g zUdB!+XlVVoTMqz&b7KMiy*>=jM~bgB_WTAwh%{pGSE6f{JExW~>a)XcU8;06e*fT$ zc#62~-#80A(3KJY-sfymDFRvt<9GJwDe%rmeyK}3wg8 z`aR%Op9d)X?)LU7Dd4=OVm>}z80<$V`n}X4wQYNrrP$s%27`^__B%b05HdE3M&57P$pfGE=)dIv z0>qWF`H>=*afV;L(mmw*ZK1&E43yD^@e+z_L}$o>?%k00~jK^J6NcgH)sRoyl+NfPRRrHj{Gh+1O%LJ z54Kg|hS8!inKyRiQPZCqOh(KG!()C#0{rTm->$E>z^8wwI3bEr=8?F(_%jHEnq+<5 zl_kJ{Ic_`LKj{e~2R3`i{OP5N54c5EAdB})SB~*1dxj5~l+nOWbBZmEe4_tPkI$0L%m8 zNQJ^%5ar`~QHO?i{;(`T3hh$g zU_}R09@DtdGm>KBPceZLTWS0LT5)@p~`Oz`}fg67nSkdwOAzQa7m zx2)HRc7tp=bQ3OQ{BNzxe0(I~^I|J7xi-Uc?Rv0>^c0D*cqn<$!jjbf(?ciDAAt1& zeuki1M;e(G$LU08o;jQG@2Cpc42n_{&@hX^ZKv-W2y;3vIJ#gY*=R4b@pX41EA}*% z&5$8twm&9|&!OjFECmZ@Lh^yrm7VO)esAm2YD{v_QmDyS?Gl0pDY2;Y$NZ{nh3jwY zAYi}#+;FoznumdKJFJ*xw*E+B@N%`BfG~6@w*_WEJ9a zJSBfzyGfCKbw377Ct9|%0D$57_>`BXhw|>5dfyvt!y+b24a@NMnsU!MRLK0v2N+hiBGUB~aPz&TlUUlMf& zrL*UZ#wm9|RKBvy9$O=&vtHoG<11vk%PxrbqXYr3ZRk?cN3=~^Q9htfi#1&YdjP@l zuu-1#eir9octp$3(X)xwrn#Dzh=GRB$9q?E;|?KocXz#6>}t|UWMJ5ww5fZqiIjV; zsS=T7UcklqJnGXeV*gz6Pvw6<%RPNR?yLcqj@{09e@D3)q_tdhjG?gcB*%%8BJTdF z9wYqn9U1d>rb0C(6{04UiPCV`7fE5(YWod4)646X8#fb$3|#m$)CPloguHe zcDqfT?^C)VyH3cVw8BaH)gPX$?vAQ5(9MO2%DDF@34>YM#)|MX9S^MQk)_Cza! z;Q-oh!21llX3`l3murH?*?*PWpb=S5jz6yM}1V5P9}^ooLtx9L|8( z230BFyINnaR}@fjfWvBoON8*90tbdzQ@9Ul+=~2f8e-Fd`h8?`${%0e0yGm8zN#W} zpBZhn!06y*9xar=38xnmTL*Jn-#-DbTRvkw#6T+izsfM8$`!6iO`?`HHv4Wl z{5g$TTeXgLy~QrA%gb4&%hPEwPGJawc%e4j+V~{m?fOvE;mUdf0>>RDvg+$p=o|_d z~YOX7IX&p9jnRbShd73pP)tzZ{}Lz#vssRNM0PO0MmF6D;Az`<;hjCBoU& zIQmPk-C5my;uS5&G0b!-Sv=RTrK?ybL2n;(yo{WjK-y&l(w)&vo-=B@HSSyA#j$b^ zPBdCOA@}p-ZU3yI%-XpU`QJ@AV-?|N>j~SVwIT>+_a49eleq0SzA8#C*KN~BV$p?v z-Q_Iaa7!2R2%`Q@X2_^f3FXbnNQKs-a7Jc)T*6=fl{3v$^mx*c+~tTFYIC&s)&&QL z4=sQ)m|6~d+oX-nu!mVb^^GD5k8Q||O{GNVCu5?B?h>YLZal2zT?UuMXUlauh&^=@ zW4WOzdnW*VkHVfw$B;-T1>k3TFsxvL@Mu&Ntxq{=`thaJ;XTHe>^Qw{>*Q=sRcVSL z)!TAaMoP1xj`l*0B9Ql~k7>p>9Nsv%&QDC@8E8d>5-eP!V)$aJVo;5%`vNEr1vGhD=o2YXH zNhyswG?~j23fqL>B8SYEO(%m;a6kK`OCuLWtAB@hQb}(3{&{TL^m&9@U+F*@LRR|= z%&HDqwMV}Hsq@oXW*`))8KY4N;s}*UD&jpF#kQ2p-(XV2#+;0YNoPKRF9QyBL{$K} zWeRJaYDeM-;qD0^B2k_FZkJdu%6&rGXY#0J&L6>< zTitpsTVt!6{tN|U2bmdj?Z&%>G>rVc_r@%vxgtaqsuOt(*`ya|k8~|KVe^Ki3PZI0 z6u=x^K4Jcm^v5DGKC3y?O}NoKKwUDMCawf1i7@vQc%wuHJ59Uk_)n=ucL&=ay(YgG zC7_`CBsT<$!W4##GjsFntrf~Hi_uN)V%~yXgRuLiqdQFOXreQ42kLpOfk7w+S2nEKDAica~B zfhqMOVcUEmbw#TT1TkBe;`D!|t}v*ntew?MDw2+a7s%)T`y=#untX(3yjphn3Sv*N zjQMfmzGPg}bZc*s6)QM15w9I04{3WJ@iV1PfAa*2wwETY7CVZ;QyT^U#hm#Rm?6&? z+4oz;Gm?xgw^%+4TR}-e7Dg&Us3!pYkoIkGV7tT4!ffLcxqiYx*un9rS~4|f5-b3$ z=MTM~P3M8W`qQQLfcd&Q8x~8#JYTG#a_$bY)B0EpFi03O( zrp!ihEB~KLBKSvIEqecb;BZj| z^(n2CX(bk|0-GWFn-nr0DFdwIM{iq-dqX435BazE#1(64MU{eY$1|ASxUt13F$LVN``UsHqd zn~7g|96kfiSX#(TqW<(~v2q^51W2dkomPQIIZu>Hg@Szcr~Uj#r*SzcOLCLoRc4Kj z7S3B#AsCmIRvizx&)$dcsp9UCSK3;^|ELO5wDCHSB zrw`O5+iK^fYBl60Hd{^`4;du(hxE>|&nbC>?}>uKEnuvEjE+)h&rt)v+=(M*R-gX< zN(#71D=ixN?jTi|^Sc}wF3eW7#g-;R&@X)0EbnZ-wKraSD(0=tY95zCvjKN)pYt{r zZI`>^7rY&V8jU7loqi|!-9*sL^X1b0!cq6FwF%;1pAxYkUry5#M6V_{A)I7craOyX z4%axae^)Z|vY7MH@7iXINgXL%asGVBuDY_>7K}dU@hNk!R4GYkqTm8Y_Rx9~gv0>joQVtM5L`TqtO+qwVh$HU42P5t~ z@USFjV>cqFWenHT1(|;&hN{ZNEb#r1!{nIY81`O|bT5ikhmhBL+bX_RPsne1DQAkf z`jsL4;nMnn%~HN!qHwBnOHCWlLPv79*c0=noQ<~RL_zLxAwX>MfVGK9(OsNkr}zZ7 zmpk-9%9cv7#VkyY?IfKgwC5GvMpiQN((TI3rJS2k1KzXohSmBONm;gIQ}+@Gz)P69;hfWNWC^mv zaFk^A0x5V4oo&`j!t00Mc+n4MoUrn}##@|;@6e7fp!3iZo_rpc*mGt5h+L+WCVqlu zB8FqZDr;^hm9$g8rY0N+SKs~#>iiReF^Lk}Xw#a%E1sDI2KRC8G#yVMuqCLm1fGnb zt&Q(EwO?Y82qM%x`ZU3UoN^0@Q`U(OUn&9{&Hpr?y~ z%>@(aa_Yj-mL0O4R5Br6GDX|3r_V|r#~~QrXRTy(-eNw-$qbr{?amLC;djUTZ+U`w z0UTPrbc)ZbR$GlRJs}*aYEuB15NM}zF|3e-x zz%Rcq_It?zaXJ58aL>SHrPdX)f^%jR)tnC+{?ZF-@&zFuw==TwTTEv!x=(4=M>n}& z2%<&QAK9*T4Mhog-C~zL%GdqjQ_#j4gk+J=_|^&2I{DLq_ddIYL-bYQX}Cgw%+xp6 zO&{MAZim@5BIyZ8@L2SE_~UvY{+#%=nD!{~p2LR6c8nXRDMR#|lkAPT4+JMT4JXw5 z-lK3jXdZn0bhuM+9d#B%aAbHErb+xcX}x!d!)oQS$$awRPqXXkl~T=G9e*_n$@-r` zj2A%>!1;d44eMH)M_$~07B{AD%ZC?*R9i`6OQY_#Y#~N#Oo&k%-DOPOpE)tT%}cKb>b;H z*EBZ6*|&cGDaZNgfX_molr7J=NdtObE`9EMU(3g7a-ukkSk0$wHaoiKOKkXxdkby^ z+$9SIii0lwCJ(A7%=UAyS#1|o!8Y06zoRG}R+rp3D4K$o_Y$e2&R(gU*Cr#i-A{ajc)Od%$CDb?y<6_(7PCg&iOEpp}IwHrpbrHy&{>T$9n z%K!5BGWbw2I;`Wx7m| zk?P$r(XxYBk(0h+y%xkYaZnxrj{%ayod{dilOZ|`3pa*P6n?*u`O-7xqZO`F^Mtzs zCtN+qz$@4_)AR}YXKL2-imwAYTA!V>>BEo9y`T9}W58kf z6T*K@G06Pryu9t!WlNdtZw#X5w%PECAg4iix=e;_ki0-DA*=0bLSBC=(jhLf8VovJ zl&o@=u=8V?bA@I^B8X#6K3rw*#ien@k%VZ*9DaY|DieHQXph%5<)-}_W_)Z=;p6=8;W>eQ) z?H3CEeiU-mH7~2ENRZQvZ#VpCCsgc|L^v~WaNEd?!E#V*=i_L8&2J*#V3C`GN-*!U zyMXz4azoKfmmvbkR34U1UYOUrj;7`{rdE?m&m9;N*EjTR=;5~6(kK<5m!5CFJskIR zqZA>wDb-%lppnClNPXtBv$(Ve3)=N0!`QppzGyXA{y9NZB*7pNslqc-$m75&t-EV> zn1-zA4Js4J{b4HJt*I*Bz2!kTw9&*>3%PT`spv4o+_Mo*@G~Vm<_hV=1Fty2>0`4Aio zNw*P!qqc#=%mSA{u^~ieWBOjJK69O`fwlsQ()?L>tD5!E#9U@Fb5VHSAX6C~{KrMR z&5~hwfQLZj$inOJQ1GPlQn6mP!0Q4e&L^9~SrVH?J@e=fI{a!G+KCvdVcG25C}UX` zJ5DyfJf27QzR(`*m&(_{s?V+V)6Nzl)5VdMeQILYd}}v-(vV$*JMM!b_F|#i`HWO= z5}n6no{+0A0^v1H~_yTaG`Ii27#kEijK zq{At!694|0c6d&*VvGl*7@#QiI)r1SYOrj@llf;?M_aRPv`L$J0gR!YSHoIlJvltgc~mOYI@7)^TqzZ zcfn|agK#$_okN)crikJ~?w8+^ekwwY;A35I>Owx!T|`gQO&iAVRvR?sc4^fyz;(c~ zr^z#hMWuc&olpciYht@?6r)-U(mI69Dpp$q@8eaJKn$hn-AKbq@Cn_ocW zJIPlBqEXV1aXcP5oeLBY|!FNKiS#pfM|E8Y}An=dAdl6M6ry{kUNomPRNle ztC-^3P}=9@S&OVB|3`}s4)*!t84>ey40@(d3eAmY+H|QSO@T!{U^&7r1I=MyfXat* z=r*)u3*=J;L+YN|L6E?`53;;%S`}ua$%wN9IZvx=V{em^{aSpu)DN5GItI~`7K5JX zEEWr?$*7#*Q%ir#4VvhvU$UQ0%lac=)F$v%;v=%2YBxJ+>@t(Rw<14!(OUglHr%T= z@k=jPOyp)aD~=yc4zX@)UUQPpgzm1OqKxeE>vi`9%FX)K5c+N(Z5J4 z=3w&kL>5G^Mn!^0WQo{N;Ru&SkL0Fc1LaR&J`zKs7A9(s4Vi07u>;>6cgjM@wP+D? zH2uI3Wb(xNtBGhao8R*{Ou|ip(HV=Qq5ISM(_uNn`w;u9r}-Y>L{Gblo9PG)gBClR zeFs?LIGwCQkOZ7wsnORgU|rHw-@U$scYQ$sXKrz&iDH-)`r33>Ef*4~{Hv55iS z^Jh$c)1A)ti#1(+9ju36Yl0A~|AgWGij{x~W3+ZzaqlW8pHU&F|3=-tFm#A6+t!I8 z-K*A@n2Bp(?1*mRLvMQbDi78a9OpdWf)IJFF@TkHcX)5L1Hs6$fh})L5BG+72Ag3p z^3Zy;1F)sUx+>ynr)kAmgqWNg*jtUJ3KeO>Uq4IsCxGlWJM=$^eWkg(^bqE1cU~04 z5oVB?`&c$fl*(B1ONwU#p4r!;f3>GSL^`k~&8^Xd(16;-@=Bv_8j{OHO)F1c7L|DZ zo!ykz{pzd_ei9wl3csg$KsAO$IyZTP$Orswi81Ch>NK>01CS8XTZQ?|^+f}UFAM*63owM^;zuUsB)S93j^UJjSDz0)3} zBFkgkH^!YPGJ4r&Cc1a2ng%}x1m_@GJOp06xj!&T)J`zjA`k#fsH5$S-AcXebfHu% zw)V8*<2fkTfPX+VnOpml-d9zE0nX-zbd<^+V{#X0#Q9t2T*x!QhK%Qq4$QETbz^_B z13wz-MD@^8p>-m3f2^%#y#%uOSiWkW&0Dj*5YXisN~n-)vwsA8YPVG#`KBAzRPzD( zU|t~2C64L)sq-GLL%_ewA$A(X18pj_T^zopz6m+PtEc>D9*NBCctkz6J0?W$^Z@9dU=Q9>e6q zb&fV!OsYeFziEFVB9b7(^T{Nfy)hT)2x`L)nV=zn%Fe;e#!(Xw3C5(c$c9!i&q{OO z5Nw^aIp3v{`a^>~5fanwH1F;}m+NnP4+)G%v?u1`Y5MY>)15ym&%lO2#2{gT$tq!- zmzc}_iVj`)p#f@90rZy}r=h z0OdTJOv5NV0LZI0ydZOC5HX2DjtgzLCnLR;eIZfGfPsEcrjYxUt!8I&3tMnpy`134 z;hR-qJlUM2W|yZ5;xMti1VNzjFnJw?CZr|rqJVK?Q(}Pj9XC;cGmB=Q>1^uB~ zziU0a!zsb zV8zf89Vsojs|q#)&XVk#oWyqCa0!W-9NywMmnR5{V3rN|tX^jSxdwxWI_oj}n|Pp3 z2J>p-=P>_YIF~^9mCh$9M62VJime8dG6UMrNgT#TZ;u(X%-8UJhP29BdUYryiF8KWbEH@&-`l!(ejysuHG1$ z0|8KWhM$VtkrlUa>bDDO^;YLFmmDPI7d}reSuQOXxG0b2)CJB-_#RE^o@W#!(sCYl z4LRK;mQ)IWP@;Q&iz}l{tP{~ila=rhs5)|jgC*vq!QTA}_5~L3@^UNY*wwWL-N8{} zw>x_|*tbJ?pV>u~E9=(-`pV|=jZh}Y_}uLC^G9{jBI)?>PdrxEZ`8fV@7GTlkokx+wkMMg~cL;}Bb`lJ4qqr6x=H%m%=x|B*it;a=o{9Eey!GOA zKCtXA4mK%Y%(_^_W)lyF%Z$xbwHI}4It(EtaU_rtS+vH&GX{?a_O!*eCbqbZpgYLb zWG+5Ppdo{@rOVAkph!D0eOd97YHs# zQ%TXGR}m7-#Cp*cuYnzqKnEo4)E5LP z%11*Z6`(|*6*1svQzgHs{+!IOEX3~<6mm<)L)?0^D-osi9IFo<>L&U8MXCLE`s|Q& z(R!huhUSt64pT1&5>WMUgr8*4YO7W&($K$Bg)$F}jqy%#o-=1Gk2ut<)d`cAHCT>9 z!0)k`Hb6Ko%9fBE6SRs)u(xv|XXiX|h&WT!~yxzc5kK8(g5stLVz>4K4Dq|X7!ZZqQ4{zTY6ui8y3Nx4D>swg%D$DUPr9y0h z2TCk8bcNpL-gV^Df=t58kd5K}=w3+kyWl1O?AEcA zk!BfK;GsoJD;_gWmJL`4Y4}7F@;H59b;pnSn&KYblxHHb$eVG{i4OylWPmtdYKK5l z7A-#_59CL8Qc~=ts25Vq>OL%%OIv0Ld{etzwcZM&`(?+?iW`YZ)wGwv?xlp_zME-3 zo!gx+6sQrsT^A96qLaJucha#yHmg<0JI#@uf(;azMIDjEuI(NH@$n*Q=_YW1ryDjS zuu->0^u0dP~mzE$Xny4-`omp()o}HIm~lxKS6N!lEOmsQ&Mu zYvbU10s9S%-*ho*$S%5S3vnhcxd&9LI{*U51yNF+_-g@LLu&rxYCv8Fx=_Ri5HTD#=~2^+_rADM8q0OTT`;$SuPyakQ#jcIrquo(^ZLv`Ck_vqR_-i18`0{q1BbMW8w-#bnx4=6i9B(nw_M!l==C*7!y>-5EwA0PNI1|UB zH~De&tgm_}P+BBFGVhF#Yvq+1dz5)kh1OM@W1;f*sdED7R!V)G_kgUIDrW(maFTdD z-=w>ZYMR~Ee=@HbUuRWmK`I_SlY17_pb@#m`;@o=pxUu!i$uVeY7TipD9*s1 z$TJpm`Rt-GeUF05)BTp&tkMLW8p0>^JomRQklRZ|x5($kyMre?bKd!}F5(>>zim%sU~iQzukpCd`q;`JG^SA3~x1%QdJ zV??BDM$d%H7j7@p4T$)8&q01N9zxY=;IBjNQDYhd@GCVb7+6bKSbA_cBKk^%C2dFN z390S38L6e)`$S+t*y$@c3Oo=kokX_|-}+?rUU*u(9wBkcar3IY6mj2}LvDM@f2?O( zPm^0ph7TyU&@~LiWzaGNwprPPyG+bxh>kQ)bp3vI+RD%CkI(@}r2{}7v&O@&(^(%% zdD`I4gwCmmnX2)QVdw1j?nZfcSIhu>W{g39jaJiUuds}wGh9+>Ya&hZ{!=4Jxnqa{ z5#FO6Kbx`AP%*yoH~-k%PA~o`E3DN67hW|&^;`slpP@@mDeMdG-AQFJMCZz@ZS>sz z7AHWV|0abZWdY>Jc)5$~rX3Xc;d(k}^@)?K3W%Ia@!4Bs8Hhgz1kFMoO}V>6K40JZ z$B>SW+1Ru^*#QBB?>_Zy{jaZ913uDx&sj4rWnIDHRAeU7c-$M(V)fTR{~qdRLWAr+ z!BD*E1CQQa+Pq#7Km1T66l!(_;0eM9V&p<>;yDX8y1YlbD56)ns-4*i7rs}DbLP1^ z2R2*J>Tf|DOcR_}dU&mVu(CVmzb-dB7m3}^T5{U@_EB&`N6%kAV13rFcZRv+b^=dB z;uN_wE+>2G|BtP=3~RGn z*R|VX#oa0LQk>%MEd@%k7N@v7!QGwW?oe7>i@UpPaStQ}cMY(g&biiHYwz#-$w3Gq zFFQ-SX$odyc~pBHiQ#B%xbEVuFYfRISs z*$ctwMj@_~Fc{_Q3hYFQ%*OxC&<6-pZ?^I;5_*0BqZB87K%l%QN9shO@s6J|_+Y}( z8K%di4Up*iAN>Q-AKC@E_lQj>hupiIyDuV~3(Ld4uAzK5=%pTmSpIL+eUlCM%gZPX ze7C;Y0>x01%1swybv`$(;Ak`8R`8YAB;Eb&?xL(2@>cSTgvp6zJcQ05<8%deVPX2IK^=D1@HkB5Rkl{~ZVa zU$}d~ATa>_yW2l;*>P%L4tkzQba1M9dgoR1HvY@0_z$c7Uw2CM@??Zdui_0;!cBzo zQ@fl1r46C2-T!l|e|@>>hww7FsrcwSg{zJa}=f~XVa9+0u z(|%JOP7v&WbKn;3S9fq9 z75+kJ?Y({Il_!Oipq}BcH=glN8k{MlJzH+47v=H|{6fFv-k@KNb^-a^y54b(OEzyiG0}|(w`L1f|9pxz+Tjag;?}sRN|Vt3L=RUeW-B0 zyHm?OJ_q?UaobHVcgwUChsUh|ONFOG5x*u>ZjaNI;ET1~DpYP?cp>`O!WCvFpJony zj>r84?+L_m`;=7ABftS}n&Ip#o_KR~eld7fbd^eYYj^(3&wvbH+VA2x7J75>a3Pvz z?5z?id+^M6(mjKGe|Ld~fqrefooW7C;PN62P%JT027=FI&G!x9FevuL1NT^yfrA}! z>TcR;SKZhwmEFi|?-tmab~Wu@E+I`PRBzSf{JMzKH()nih`TZZtOWJr-+E%`ee}2m zKWr$Fby95r9snd020S(%?-``tNvgrzc?Def!jAd*J?M)1V^qwd70R@njCja4_AG@a1|<9et5oaa~X|S zF=rbIiPSiAYx&0=+W$l}?fGBS#D8BVa5tP6&wKupkwm;T-=wlz?X}!xUZk}@E52bZ zh<*EN_4SV_!iSPQ$K8FGX4mNNKb~FH)LwvJw0d4;l&{t3a^=hA2~#HVAXJsd;B2AF zCU7)->Unl8cz5-mSO32+tu5L(#wV36lx3X1*K`NYsomO---Pe12=vXK9j0eA@E@%H z_d4?5Hqa9>4zQm1g$sU88cJaBl2$sn($_e8WcRnW{P+F-KflHoaSkya5<2Hwpy&gY z6M#n?wf^rl=70R1Rnb?aFK5O3fL?e$yCt6+CR_RcYkm38{WdZDm3Ho`0DNn7|7xW@ z6SIV{_J7{S{&Ty(4~LTCl_A?!_?Zch{=_vN78S|$pa1V_@cZ>DKhRo9A%dXJsITsY zI_M*5#r^;L$8`T)OCh20XA1=?1)uOlQm+2`Y5yU3|J#=$3V4tPY@zmG@VS~+z1@M& zW4Du@x!(n3{DFSo&{X37)no(GMQiSPx;W>iej-26@}=G5czfcv#&m?e1<&o?-RSe@ zS*?Wol|^Ild5f{SO&*~sW2k$F@>gOWHGa5%=nOHWw#y&g^k{8)IFP;t5%d3!@&jjH zt~WV=D`6(BzZK)gP0h8-=bTxms}YnX+|&#g=s8{tm;n(GQ#rxtFr>uqHXM&u6J zzyJN*!8LF=4*cAm9@oZl-SDBEfrITcB@0s*crn2ArlElfFFO57)*&#esotJnV+^Lm z`(wozbWHHwMd1d%(ntU2wN$qv$DZKCDyjKUvBp}F0IuHqJ4>|0CqAk}5$CbYJFZy3 z-73w6CE?PplM*Y~6N|IPMr{X;&FYuuUO!_~(zB;3%2dA&9ev!f9cfA}%Ii+D?ognF z^F8+7KB`Q1i5XjX$L(giwjYQH@^R3^FxU>=o|w7~EY6?!IWHGRr%d7SOC%%f{eh

PX@K` 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 JPDHLkV1i5nYc~J@ literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/dashboard_urlDrilldownGithub_8.3.png b/docs/user/dashboard/images/dashboard_urlDrilldownGithub_8.3.png new file mode 100644 index 0000000000000000000000000000000000000000..bd7b9e42c936fd9827f16c99731707ad5f49fa99 GIT binary patch literal 50439 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�U=+!3L`an3$2A~j-+^A|^kKpZbOdxe%0Q)tK$~lNye6#g ziv5%@9TOw9Q#D6ON)PDpCoB;=X&D~pqjT3~jdHeIoV(U_(E1ay+x$8HGX0{d5aJzt zD!^gLHucHKb6kTsCtxVbMzqFr!nh7DE2ZI7es{rAq9*0#`9YKE$FB41DkX-dv#NtH zs?=(WZzUFV4WGI_(n}|vaN=1j-Ss@=dUF4U&T2p7T55~ryW@GTs8^!Xm*Sm;jk=gB zc|rb=22`4r;4ihGRYa-L$FT)BK2`=9_~}f&cHYOw(t7`~)1Q%2u?F1ch&|<_;#_)< zI=-g7w%;?^RG69UR5h*pj6`(FI)#4&<4)t-0V@5P7lX=wLTJwg22-^CTsf;FB z{R!iz$6ILnMYoCDKJ8I2M5G$e@0487Vh?bUE*D&6aSR2Vp+W(!-8d_cBbCKJe~^AyUUR|4|Ti z*(|s^o>i)8@%t&p4?)MH4~}3(9z6Stk7RyFF0(V8O^1avN1{Rz!xRSjc|X&vN?TbS@>Cb#4!GA~ z`qI*vv{7a~F|%9Je%4`V19B0FpEr>>+GuW8Zhw)>_; zTn$>0Xbf=Zijl&ZqzIBLX}LE)^p+UfoK=|(aFJHphVk*y^P0TwoYa7vvYsw)R^He6 z=B)Z}JoD`L-Trod?SY+CLWg-($3wJjbn5$Mr9W-EJW4>5EH^kj;-&Kfoq)<&dDaEUnE?-oKRK-=HRR|88BwiW*FsJ~~AuCamLtdcVapKgcd>G1Luk zd-l{u&*aq1)f`Ts#?M#Z9n*!RRC1={%cv$hwr}rVl;x$5>jP~&_=%IQz$iIMS??YR zZ|n);DEMbsQQ2@Dp1^!DCVV4H$jFS8U8xdeyc4;VJJwJA!?62wV{_7e5#Pr(T#L<3 zQ@f{jgu%I-iw1g!LAD?&l)$QjQTGO;6wR)x&^=r92<5cZ0LXRxJH2pB-B(qK+HWxT z2XclTb2K%Ikgn^A$EjMm;SASw+kn{i(p^tRwSCf3-0yQv)~ADxZP_stVvb|+z_Ff$ z3^%U4XsJWvTL8;zkVV@Q$hE<2_!d|!!NKd=9-!faI972}xw+|X*$D(w81VRmQs%&UNPb?~KJ}$!iwhX})UTa->OH5vLIo zn^HgnJCQi*wBYlL&TH~-vnW;Ye$BS~h+@ggGF!GLhEG_K%`6fya?0br=s6LO7#?%q zuaK4?7)WmS^PsF(*fZp3v}cff>=HNW5OpN%Mw-T` z5F|7)8x%XZtM1%Fp4E1|JL+p}D!pa9WLwYGXwHLHa8iWnl=BMVRDAaSw#S5z0k`+; z6cUcr9g=*6mV;FbzZLpi(1zKF5&GkL3wvD!448hY{rT%OTTnE=q#7Bmx3+XWth;%{ zpGNTz%NsR3fOD$c1q$2|TV&Pkr)cNJ6O9x%6w+AKHgXk)Z6R)pe)hXP`h)n14lBg5 zo!5{gY@?z-3{lAn*c4&m=`?K^C1@l;3|g}oEWWKYB#$xr?$uXJ($cWkw6HO^3&&yj zROcYP{__nS#>q-@eT$1;mO?}wvPDF#(34>N4S$p`pp^~tkOp?-ABaqSBep~9`(fdf;2o)qVmu?joj-Ozg8PG-Stq;hcV zk<}D}{-9pLaCM8HjBkcDd0CcI-Soehk(WDK_>Ll1t0x7hwB#_Os?;7|rCG%EN9|<) zj`l6C)|Z}<=vpDpBa zfBUDAZl80i&%A46WqBzyYwav)o&KKMh{u<5aSDB$2>$t}CBAEIkT|H(bNykxrR4uK*B0}|Ky|;2L;E!%d7>1IW?$nFky^rk;+u>|G zDvYJ=12a?UkF)tlp9yBS$+g#Sx=lgPB21Cof$s*NKX*FMwESr7Yf(A*!yji)QmOX= zv~#xxZ^;r8$I5SZadGjNXz)J9@K{pmw!zGPNa*d{s%hs;dt=@eiApEUC<z+gYwmoVX66ZSF>bwxI@ZM0(lydhYjruVBqS<{~*S@KSeiFrFYc$Q}ljERqFC?JzpW4BCtQIs%rE~@% z-vGXZXt&|0tZMe+aLh;|yE-|AdcE7jToSd7S2$KlD)KnJ;@hmW7&{!IwU*Hp`oTwq zvez#n%DiGXrINXze^=)6yPjHgw7N#c?wbkaEZt(lh07;b+<~vC?oAVqQY90XiAW}ygq?M-S~!AMzkxS>R&z5jl$_s%f$3+DLJ zD9_$D_e1`1_F8?pq;OU=A>juR1T&#{yn=H!K)9dj;iGpLN=u@5f^>JKR_8ii8^ZSpF>*^ z2}gu!CsHeGa+$tPf1UbfY16*xWxK5L=KIT}L;f~gn#iOw&<3|ka&&D|P}}?7y<UG4qCUR!!(Due=BTsTIGx)Ztc1C!PotjxWw5}o^8G8oN1lJBa&sANYoHG%S{C)r>QyK+bcmiDm0aXQLBsvL#mtWSA~?l zb>u#M8a=?An62~lz4~cYG(#I>utez^q<4+^AaV)ITmA$aD+61Lz1KDnkZQVpHu01C zYnJ{BchXYR;$Y?*%P>KXO}<&2%=6JxXyOqLx8}seW1#d{@>H948)Xm-3mu<%N z95sY~sZ{KyH~Pm7(v&{z&e`<=8u-+T(e6GetQ0BMQ->VIN_8dvJv==@(7_^YBpW*Z z%fO)_&+nh?;ZkSipzH7R3D<88lKd{&TI0KfTr<{re$uRCO9_{q{IkHe`c8(hh<;L0 zmd|oFk5c~x;&3SiovNfVNhf|9`#9GqgPsWNvFA(=ol`%VTu~o=9;AprY3X`3Z5{KQ z*E4gSK!r-&n*lVy3yPOQXH-&n|xAWBk^zaetuZ-?Zf9+VF7AbRYB~MJ^eL zQwpX$&M(#d;L7D(Zc>wMF^Aj~F=4j~3ml}68?nO3CUwpQI=^cPQ z&qO|`BHqc3_A5;clo4?txQZI0>f5QD@EOP+U48dR^wBvTI~*`=rrH!TKmKuAD-(tF zZyYXwB>E;T?ndmn3wN001jF;>8GR{V>9akVH`&7Mn>ztL_r^_NT~T+1>UbI|AidaJaQBj#`y z*uKhjy4*MAdvZZehnp^X0#;0Av3Yb|Vlx1Uu}x5j!wIZjd;)`Hz#dEUwis{?{`Xta zmIN^h^{im@eM7E^U5-UrhYM%VU8H|GNpx!2(lYLL3i{1$K_=4z?M(sdq`Zz4m!#(w8 zj4FsRZ%`3#1bG5;F#8~Hrh{}Rmc%2%6?D4J_o#Y#17Zu6$F=|EdNz;YG^Z#~V_a=T zwVxjhBFF_gu1Es>S%(X&XF^_{`4bo;sz$XkBx?o)X>85v-1k*{A#sAP2d9z&2)3;r z&~-zh%w~sz^xrtLNt&9Em{X9a*{`^%An z+qy7=C!JQI24d_Y*P?05TsPt!7wL3(Uxu8fwKzmTii!@^6oN|0)c)z1L?DWJ$<-pdQO>d2BEr zx){oqYO^3PZnD^{?Jc>azmO@M7X8txrePxj-gmpiTtj>^bA2lep~8QRqFis6;2U#} zsr0sP=vQ{7gYGP8KbG&KDrBp*2KUJUk88JosYPW#h^;<$gXRxVQM?H$M3kf0%YW%c zcpTd7dL0^*wRd~%sXVvI2^UaA--k?H9>--O_H@Tl(|@8XIA<Zq&oJL5a1Xj8oUN(HnV90QXLWDIE%TTVtb!O*dU96$cRoa5fqn zURS@MUG%IAYNU)ZCHM7~G=aKO$^YdAzI^4`ZPM^HC5AJ%V8wDN@3Iiz5pIRMGFa&2 zcznxDDoUNapYiZz{!RF)I#-siFAPIAsm|7luxTVm}w=F_HHmv zly_hX@jDYIKJHI{m?B}ck`!U);0lOawRf#%Fs`sm#M5ucEQaDh?J9?=f9 z8=Zl{r3!>-+hEX$q2=VHpO#bCH3?NgJB9!k>&|-n>!0b#pbO$w2bcxx2U5fM1fjfq z*FmnOR{NM`&l;VJxHvn*DAD)8@~aFlt!@Pt$rJ}x+lS%$~5QC4mXU%$<}Bq%}i z@lNh!c`n2HTAfTP2Q`IjJj6r9sgM>XZix>LrJ)n!dq0Iv`JD|N&(U~4;4aik4K3hTSG^Bi{v~U)m;G22#k5xptzxkwj|buMbrS zLyHY`Nd@fCrex*zFi9|~I3y|t)d7^Hek&0u7ck+hljR}0fpMt$`;$sGq_JOLPychL z1V1St@|)IDaqQpQb%Zd4udp@1eNuLgzgv<%`&pq3-3SI{qJ-605zXu2Cuqk7 zf%rPaw0K_T$!c91-5>9BKa1c2xr3zt5YCaxD*lL);BR!F0w)>-vVH3sI)9(aD;t{UV{7 zC57uHDs8D#F1uD@)6zR%fCtt4sMlC$tD18h;@3ib0K9|^jhsFnWai;!MiX8u?+JS~ zxSoAQxiPJa-a|ks&(-yJyEXKNAq6Gvaq4tO8@(iGvFpnQUlaycFM&|nyScs^tikLq zQR7ziw2=Ea>}ezxH*m=(Mn%0dQ6&<+?R%&#C>gH0sD$qtzd02(baarq`egr*kqBp{ z)SEZJJzbK{y)z&?Q5N>5X~*(C7M8_JgZi(*3&(&zsM#w9sS^emy(au@B~C9qOJ|GO~3 z*;EP(2PNJ{Vhh>7;?293U|Lg^3EHG)^elf2?=Vk3o{wr44kwXbzd2orgPV((ENIPM zK|rh~UldxePmqea_nNS+13`F2P_DzoX>oj5333*4ief;gCq!SW#?9Oq7z=acF2APUcvA5uui z(yXri@ySg@0qTkO*|Oy~l8*-cDTrPT;`sqtKVhSX%(TJ%5MO*=BRF+@x?eb!1HVvR z?lQQSQGK^?9nq3;gmOgUE`;BEhL>`R8$P%tunUXuclXMm(I40v;e;dIKTrMQJ59*k z3-!PaJ>Y=5o?LRjuZlCZ>OC0#s73}Z(Yve1lht)HgK)H@Z}@Fg{pwSreCry!$@Nmp zyujOK!LN88iG4nN1qkg&ytjWkt!#3=`kpNq42Yux(Tq zqpYXKE=_#bS5U~LLZfq%<$H9ve|TK`P=9gtE}R%ejtbc14W%*1pjdMvh#hsni-jN=e6lwYt1OA`6+;ZOw#G)kQ_&-WaKQo2fNW)3}&~)ecR*+LJex z>;6h-uH*vhFe!buFH;)f%o3tHx|Oa?KTOp&7F;GuY1jDdYBwM^;2Ibwu2yR<-X%yI zdw;#KK{k$xb(YQNWOfpHb7s*)a=nR4vK&{@u}1E+onq_yY%;lyI0y%_i}PbrQH*D= z)o4LLMv0y}m^Qb04eeXST~te&<8_^s|wxkJS$usrwncl_PPGZXCqDPj9Mp zJojhzAT`~ntPQ)i=;&WXwzUq5INDiBD->{h!fWN;t<;$Zscwpin+gXuy(TtfMhLBf z{8)d9j?KXner0m;LGM|)Y`f0Z<)V=*d>=EjciL`4_gMI+o9x|W6A|eoyaSj?IZsaA zm;AN#_-K0ZN7rm4d4u_3Bn(z-LnxL`x+n%0JtPNHqR10<7zevYgG?GXmBTLw>=w%9 zru_2uAe3Aal4|0f4{Tj@Yw(`v4X1zUGVr7W&9(kyV6!5nHJE@!k-I(wNj>T^!Pn9#@VEm7x! z+OEe;99m(AlYOq5@P(ZZU6guPUxXGJt^;7Y6t~ALSpzptF0j>;m9B(`Tc|1`DmD*f zdAb;Eb1+qC1(6n7!3ec>dFilfK$;*OrTlI^Je`3SbeGlR3OtP1!$yF8Tz8Ff-Mh67 zJ{Q|V8z1oX?X(;vVRFu4;n1@pOdO#-ncBvUDPcGFLg$ogOC?;>%o5+<@BRePWI)R=i+3@QrIm%M3LG5H@bX>YQyUhuQ zyjIf{*ZPO8;Ip!yPgY1x73D*xe1PYAU*ZpjLs&)yec9CUUdA0J0+=?JrOH5 zL0Y!R40ZFG1y;H1whK{kB0kQOx%dQsWY>(m?53jWUk?V}-7N*Ib^%n}$ISUUytxWp z8D6JA2{W-&7Oj-FRZsbVz*ff3;R59hI~Dyue#Hyr?;C&$CmZ zY@e@-MWHR>kqHJ?(l1Wk+6LdBSWqxotE%@Iv|QA7x}m`W;KZxv1K#4LP%Sdf+%DCZ zxKZBzF)6aLvI||uQ`V}5=}UIqyqJW&0zrP9HCob>YokA&tSn?d zj>-{roJ;_E1=)QjHTH>0e+Z^uJghcu?`6D?KaOn(Ex?bcn|Tg(vfABVdj<7GGlHai ze`*#Cor_0#b$f@8;e4fHis3$P{w1N7-@LxXVD6W3M^LDFxcG89m@rN-)yD982e2q2 zcq(}9iJ<$Cg@n#=8&y3oPJR!@wueC+V`+jAVMLV+^SowrIzja?A02hGZI?(&LDQen z6+oDB4lFvF{q;-E@2*vzOM(by9$3*nTe|tk++m)acGIBy;REZzz2~ZP-uLhBG(p+0 z&v`6}`LBJA$b?hIfsUxS`KDW@`j|49e(NI#_mBD5c|d9>MajqE{ntw@YJr)EiyouW zJnM-(!K;`Ty(8PHMool=q}?}bE*495Co*OaDwh80cAS@Xs3zaImG4gCqqi}&G}{U0 z&EvNh%wWwVtFu3A3H#wPp}!0LR`oc9m4_7v^#Lys@D6KJScX7(G4j z`hA#Q;{{xoU3z*4N;wPH1f18-e9t1^4z(ioqOzgqW4X;-IO^-6+vI#Z%z)~K*cgHC z2wF_hvn|!844zye@-0&c2+4!mx#M4-b+Qjaj5f~}Bq-ZvIrZ%V(m*DayrT~~6^dbe zDP@iO(V;S8VAULfK&)MHH@?-&PhBs{q!}S;k@l05#lhD(@j}@J5=@bC{e`uc_(*wu zV~<1i5Wp*5aLzF>aGz$&vt``&4uf;Z4 zw;C?)2vz;>sMz}K?}omXuKEmiJsnXJMsed@%RdNi_<?@F459wr zQx{)ZN~^wc81(q}6ur;$i_@c^@CC4H)jH=Lx{C?ID@~b+S&FLR5?8;CWYb|D{026k zsrw!WmkvxtVKP)kUMyfH7-1Rg2iPSCn5CdUhCK?7#MR#t_^UOORIe}>l=be4n+H*o zE|iuF4zd7J_~@z4U*|=k{%^&Ll&=A9t;{MfYwB%gxjM@oG{AH|Uv{0wMfc-eLxPJt z-z&~M!l$a`XZdsGL*hw{L3FXo8~2n&TAEunSgUnjEouPNw`o#8uTUcHe9Vdpmj*yW zN$WI-vwn8AmGI&hlrPZNC-3b8cxj|H=Uwj`oXjgWWgg4lA)hc`KI&TVWm101eVmoV z4Yr=`v!?OgyIjQ5Bj+VZ|FCt}FHm^+a)Jt{bLK;S)UrW7jHBK0Wy_I{v#V#*i0XGx zfCg{a!br?THaDYGN2kGyev-@H`pA;xBSN0gLm+PDhuhN)XN{D^P0Y(>=J$Zryl$MmB%Giu;X5N(4#Ui4^5Xj<0oiSudJ3Rf$*bQ!M9i% zVwQ>P%xS|MfQP47g%Lo62q5_hfDiJiBr-RdLmn&#_r_-u`b^i@s9tdzP_Ivw3vHl= zkzDl;6Ap5qKNWn7x)6Op@Ig=ebBJgY&HLmv$Pkn?EEx^kjKh_i@`;f(JYOxGP-)*> z@=Q}!BZ=rM)b9;KKRk8mm&%StJS|v8olFr*LB7$t_x7W)6J0mbB{!(mHoduh^`abRnRg!2W*O$}nbDtHphoeO>p9$AzQYtlkeW!C_X68W}Xd7wQ<1M+-F>E6vhGf5#TNV^CFYz#vE1h zxtW?QL}%~SUQAjt&x>7%#-ZNsC|+z4jrgcpVS;ng@eI`WDejX7{;{RDck5O%a!~jF z=_)*yHDZ!yt|nmvsZ&RH$4LuSqnTZ}6GkB+Te)yB50DgAbBbELvb}O+GwsuYGOnm@ zL3+CDb?UeGhOif%M(!fLq?Rt&%%6IAH~?MnSar&g9WF4Dk+2R7*j;EniaBx`&#(P1 z*QqMz66C+WkVY??wF@>G(eFV>`ZQ&@qR8-aJOU=f2*C%KE<7k`s#6Hev6bKZcrMW+7ulTEySN2uA2gHv#Gi#$^!PUc-C>f_XzCg|Sa)RKH$#}2^h_dy zke|NFr4Ub$XXN}K>m__)z}fOKp=Mq*A10yw8VB`1H>X1}-ul4`i_D_Nxo39JCTj!N z2!QM5j6aW21|m0(5g^NiZgG1Nwk$v6`<9H=uOaV8Hk2p1m&eTE`wCx6Zpa9mQO}+$ zHMGK$Y=;O^*$_^-lQHq)C=)pm_}okRVTH`p7=7juL(?3LA!OR1?~|K3H)dA#OdI2a=bv$&8R6Th7Z?9~^1bl62F3yRqY4GK=Ao zRgvHIN2YbssNsKKAJ7lTzCQH}JNrKyx?=w#sgopqdAts8vh?vc$2K<`lh{Hpk6 zMKLRa3i4QgP9V~b>xZc{1a6HfzC=-WKq#!ARa*aF&AnArTv4+vjJpPR3$DT4-6gmO zC%C&q;}A4B1b27$;O@{k4GHef?R@8)d!PQtJO2CBWAs>i@729(R@K^T&MFW5S8isS zzdNtqle-C9=e_AX0+YpPn`m9;mNXVw+_@@y&vMy3KAqE7ZkOKP(p&E4pE^I*-LEs# z1-i|>2((j(ScNb`8ZtQqe(Q)f)hpEU8|XsPb=wyEabQCVPI|RnX}QK~{^lh!TR5t= zv+D}>I2RHBU^16jpC2yw&T;u#D@|Q7(K$-URprR}{3&bo*o{C!f~>;z6G^l8w*23r`NAglBQC5(>} z4pbkZLefNf?GAdubiVKT$z)zmnTAN4ysq+o;0OOYl zYZ`Vp4=G_92Bb+e^A%G<15I3d)vW~sr0B6RFFewH6GjV%S)jt@sl-hvfGRW_Nt6Jl zsn>iT<@D#|YFfAeN0HBK#tCGoa8`&(;y_q|qm6crc3%W-G?y4Yv4y{IA-oL7tTQMG z6*ZP7)QeKWSgjPH2oCa=>b2m*(v3`6iLdrE^JRYwdTh?sUMS>~{I^uyTz{OP8uQx8 z5pRLePYl)yH~9INP<8lu!0b$5)N{d+v)YCL@}Kx$Y-)|k_cbce?VTVZ2CIV_}ptkxVWQr zYr?z|LCQ!#qp;D4>qFB95YU3-`@WI26Kg=0u<6gCAiW&Qd;|k}n7zEmM-Z;X58B0m zmNPcTL-)~rqY)%Psj8Pk&Xp;_J$-C!ZRSxK0v%Mj4Ee5jijcw6H5EFTHcw*ta^@9Q zsR4r>%orm&Kr8&No2EX-!KfX!5m3-r>(O=AYQr8X@}@#Kj?%oyP6rho1b*UwK1?X` zp%P&ud~hJazd;oS8&axI1Va__x5&Eg_wxT5@^2(A6a$2=NtyP44f!|n6&eyJ=(RAX zIqmGOsKP7d8{!hvBRL)6SH3+S5!1FDeL!i>%BeR8e8)`J09Z4Fuo4N~o zk@>a@%(PEdrJ-cgBS19QZyFDOl^sFp*tA*G_f&D46H8Mv1BZVYg^PFdZ-yCV(5_8X zIiRyRv$N`fjQKQfwfSYm9CYMtbRJM@=GehZArR&{3Uk=2 zZK#J1v-6mV4YG61Kf%{ISzsUtdb}>Cj_JBieMT7Sk@sa$o9#GExtZ099@7rv5=&>7 zduqau7Dd7cx@UielB&s7DOJ$k*A~Fp(+J8;qJs*E6E!&qrz3-Soc~g)$=lHE-H&cn zS)Cl?ss8xxe$(_skqVwaUTM)@atyRer*fML1L|I~i!3te=p>BhwfRPFU`CB}83K0E zT3oE%h5h?Ghehn6C9TrWU{|YAu+23O4zX$%)Yp1sgDr3KJ!QUqVXV9L79kX?Y>V^0 z`%H%LL1;jI@6_#bQ0{$ttM|hl^h58xTrMw(fAzI%X-TUlPRGoxxi+#1)Um0>FFZ@K&~=C!};Ym*$fl zz>Vg}!CuZ{RN$GLM?e%k7N95vSkm}5Fh_FKgU8?AvA^{o?#ZWZ+_kxTFZAl|>0L5-#YR=Zrwt{3e?dvzOtPwUH!{|^GNgY9C1&Y>n+lza(rG;|-? zMHfD2pg}SL%E3T{lp-g9`3fNqN8TH~95q;*sn1yXA2^9nZalLtsF35Rz!X`lX)z{|0IvCK#xB`o@22{s*X!^kAGm z*$jSf{@-{Gloo|04|MRa?))Ff@022xK^&B#)-GxNo9BPPOz;oP|9?;FJ7?qv1Ozvm zoTS*-|0gH-e{)g@x1jMCi7g@01d*=`tbZfZq;BAJn$wrl*fwLx%;koC3sajuftZCJ zLzMp$IgAEQy^P-v=GU$Uptb1%XX*S1Ih&mmR5niGH@FE-a_GIhp57SeXpK*DU6&2} zUB%GdN{kO4{EmWKZVtf6)*JyKQQ+)`#nlmfTn;yV@8ykjXkF1BrYGNtUC#hjyI&1*Bm8^^1OiObZzZz&oSnCHSm)|sq0P4g*|DK);K6`8V$O8qkX^oN`_DX-7#Qx z)h78GS;UbOL4iRyh*q{Bih3#Le+=)R8LtsRE9|ij$vV8v3gkT z^S?+eU5u z03Sj46bedm?x(JN`C*#@49l<=9j`H(UK4*bX&_tDu@CoQC`1aDeO1!z;aG`;DulW&NK5sORCpGZ~+#&~1_gUY_2f zM4bWPR}t zog(1rfJCpGbbYxr`0>qapv#S(W^OYkbKHRbra=f#0spw`X{%{q2CrIxb(itvfYc4> zg`CsM>(~{ZS2T#j(teAkDaf59J$`t`z}dELQGXFW5|3vT8R|Mpp?I0XxSmWG@vB|w zNn8U>av_#hLG6s8-|bx-UL&5E zFYXMzL`C;4X$+^i@$J5wBsW{6{c-VH39(yg|GxA9sARU%PXh3D76<)B;*WAI{o%_4 z&Ud+r-JEYP4-R@G@hkL%MZ(jjtr}H(|I0i?KY<^Y0>i6Ift2-VvhBLJNZ--dB627p z5qAk4EPEEvAdXzp6B~ss*ma6S;6BC{-E-i~Df)}0VQs^7;IndOGnGY1>S_Vf2XRK{^U78)fl2VPjLnb$oWlAMQD4PrwZri4OY z2f~0v_Ug_9@Y)5T+jwMQ3c2|=M-RAgdc0$UM+r{t05av{opjz^@GTo;`4L+e2GBuq z01}7DZ-HUUBoV%2gDhEL8@HFpWb~~{R-=fl0;sP};-F2wUf`p53|@}|X%f&7@3PLu zp5HUO^%diYS!I`An}-!Ky;8vF+!^QnljXJoevQ*7T0iG-iMFr|h`+#+AG`+PK%82r zL{xR$TZ!Mn1+Fkef}ol7gzJN`eJ0PSbz04)7xVx3|KK14RlpFzrtkX)NP6Ctnz6!~iUOd(QjxW??FSet; zH@?UcKHwRV9L4mq5*9oRD-0ZF68pPcIS9+8Dp()>iE9n>-Zv}7>NTJ?ba@a5#r4+m z@~8+@3$T>?dS>V3O)aEvD_=}qFi%bo#(RQH7uxqv-S*NeiyANN13z8)d}<0x4zHcP zmz0(!47HM>N(pByl+ym6K*SF5&pkl=KFNWN{l?mW0dtn{U*_1r0i^@kj?es;ysVr@ zWMC&BNtT7wE$XD;>l7@JfcqLQIDj=ME%?yU5($rjD^{0$)5H9a9q(a8?qQJ~*|(?SWjZs5<;y+v+ekfOk zjHh;wgH_TlUfOU9em*JcUK4lQM-+Ys&yG(PnYXWHyON&%mIllr!4cuNb}PUd+duZt z|9r=@Y1SDpXflIi&HX`PEo?U*PEUmRmIXf+X*Hu}N^q*Lrd9_bT~B`jpvH3q&Pgb{^m0@3c}@DlGau z1J+Qf68WTj(oNE;7=^YBdW}@>LgamfP~J0Pnxjvq2J@lD937|)G64(_76~4ciF(i} zD@Th(M$8=@!y`9)f#0O&-!=w@d)gLG`EE{T+L6mag#^Yd~N5He` zF@mkXJ4Z*o8GwnAP1c{1a(b3^pXS;XQ|iIJJti8P-fs>6ZG(G4@q_}!D7HhC5${86 z6z!sTna8b|a#$hj3dSsvUy8i=pWjk1dd)_Io={+YDEToMScIf$yAT!G=o|@ih*Wg* z1CP$}J*3I>P~7M~`d7d<+R9@LUxrE+jJsEU=J@)1X zQGX!g{jy%}lDZv(cbsdk*2jmGU013RXM7kl26NQ zvwUVsYIw7V-~7{BWb*CIyvXr|O=y{Na?4kyB2I4>8Uq@)aU=omvHl0HW{bNiIkSdO z;9SR2_Y691&}0+%LKKg+~#IVZlg$9NJ() z*%rn`;iuq6y0Yy;VQ3ZXrn&l3;0IJV)0YODdQOcM_v~(|uoT_gIOB-l7~k0Zhyx{? zQSMIeK6BaXY$N1(>sUux`d#pohzWR{7Euh2&R%ff&9~p+l|3MWtpq?jU^WIs#J$X|RYhqID6s`FfsXcjT4m#SWP;2RG~;{!wjP55UhSkb?*3@z zwCU(GXUT-P=uhH{dmx5GMM?WC8nZP&A;w+e5MCxLp#qQ3+%6UP9h6FOwRJceyN8E+g>TXLis!ZHSyu@(U$OWorA< zDar7zx_JpvI0oi@9Q1tt1)mPfrI(^pLZ8fz$H$;KVuh!ICI}8DlC!3>Q)tiT2lgi#(MUukpB4!Z)QUQ>Z8>i!2|rQn zQ6dMnL*1Tgy&Swbi6ebN4ty+Z zv%}{QMW=OkNoAkFd4z%GbH^l1W}8c(V$&>Nm~DdX9UWp0q%brgzu93b^jaf%5Np4| z?}+gW`GuNXU~#J2MYn7M@AOO1`w2EkC8K9ZoHoWc%4Ip|G#tFGT&on~DB^DS3L481 z;6ZnAfc!m1dM_L}`BUusN=@;!=a$kP(c*q_4YISv;7(M(^K+Ap;te_ut6rpXgDShj zCT}K>BU-baHy4-9<|+a+J~kecfh?nTO%b@Mv1&mGY`Mpo-eQZA{s0j>++~-YM3d!| zUM9ak;Zm7Vj_pc?5)rpU{#xTv!`mE}+sE6(b)SD!`ug&Mtx?iOoheqJkWloW#R|E* zKTE|WN?H6CjWkVd1D03`igcyAjW-jH8f9Ov25whF9|(8honN;V(XJyd!o15APtw9k(}mS}sJqpq36Dl{h>i=QxU?T(Md)d= zNjeu~)nL(S`uUf5a3ZXl&bX(mq{}N!>$2gX=MDbk@<*XTp37vTAeX~e5ix&J&mU)} zt8h%<`}BW5e-LfP*>F+C;#X@{VEOrl-^g;_6Y&xOR_c=`tZ*c2@mv!FU6JIVW+j=l6SnK1+U?%Ll4BE}t zxS!2EBRV#JG;N`ewX|15NUhch9sgQpIgT`Pe1VaIcCjG`|6o^qN%caVJlasLt}0Dd zhaEASF9;HhoMuN%ghSk7ahWaVs55-em!Y0Y7SeG96IhZO5**HZpMC0H{OePh`d7?G z0CKpIXWBDG*uU6=s$3Cs1qRzpIYcFaX} z^pd`g8HzNfA%rZDOCFKF3}WMX9K~Gh+@5h;X?8D{4{zY~n*7>m_jHmqGhfZ)&JH!= z+_L{1Fsss(9$wUH^jFGaB8A(Z$UW$6CHW#yVpxY`{k>wnDc~=uUdJJX|9mA;dN}}d z590W|`{nq(rgow9Ete-`CWt=f_y?Mj_2KhblY=qu+vRfd;{Ff#*a(@hDfhoT^AnE# zk{sF&rRO=Bb90x;ocp!Rw?`VD^Ng&*_G!BPzJKpYZZSkw90M=us|`BG7V8a8KHcu$ zS}fKW!9MTA;jKaRW~kWZ7jHCpAle)7XD}>Ti^3w~6=qjW@%fnWD3RQW@YmVHrqXEx zTwo6i4m&>z#D~Y{l(vk1F*Fn2xRMU*HIlEld!s77JR$SD{=wHQ^Tv_N6;e|0s4a9^ zBGdp(�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%0A`~FPikYVSpefjy`D?g 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

Lcs1An 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 T(u#Y2HV}6e){KjB;3xkJoZ7yS literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/dashboard_urlDrilldownPopup_8.3.png b/docs/user/dashboard/images/dashboard_urlDrilldownPopup_8.3.png new file mode 100644 index 0000000000000000000000000000000000000000..6556485259d6e6e9187437f975f6898517d68d9d GIT binary patch literal 125167 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 literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/lens_areaPercentageNumberOfOrdersByCategory_8.3.png b/docs/user/dashboard/images/lens_areaPercentageNumberOfOrdersByCategory_8.3.png new file mode 100644 index 0000000000000000000000000000000000000000..01b20fe0a1a4cf4e9a248f91b95102c78179414d GIT binary patch literal 35536 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 aj(?|h^~OV$xbOX`Vl}#HreA#HA^N}3T2PJv literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/lens_dataViewDropDown_8.3.png b/docs/user/dashboard/images/lens_dataViewDropDown_8.3.png new file mode 100644 index 0000000000000000000000000000000000000000..857f28303b8cb4f178f434aa9c7f5c372af661b8 GIT binary patch literal 47601 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

-ZfV5E!&{Bm6RiofSq=eHwE*1bH5*q$L$fXp z^+Oy-blxXeFfX^HraS@zEpvzIS%1pIkhmV@QJ&O*s_UAiw5m~Q5orBT zcbc;rkdd90<+BVV*K}5-D+vzl*DND61Yc3Wc@SP^?A>rcDr%Y}A_(Op4eLrU2y*dh z>Q-IT2tNBr^TA#+@8f;){b`9Zet0Y#warooK7)~-@gS@9R(^1w<*-b9u+p%t9FPx- z>gD&40RyjtgScgkC3BYD(9onZGHt<5=bLcOIxv`TdQ-mUUaS0D4?>@ZyAijVxN8wd z4S=*0q4M5rN&*cx_RGo6lRw;khg|#X>$F2~M@}QSj#Se$wtIUG055#bYeoF6yb9MFMYI2mTW1JGbhB$DHD?=1Pz*_JhiCZ7;QgZ zl`DCr^)ha7gq%JpS>mHZFjLVeD>mn=HWdK?d-JPo8J-*}XH3RE>~W#maG5_Nze+w? zl_UEKYi0C+2*e|QRIq}OXTxS4*n!D6O-YuUUtTXWM#ac!lTsuQfX5Ehfckv4CPP+i zEtXIK)tM(I$(Ym_3Bvn0J2J~q$4wSP{ry>0!bpinW_^?jD9~C2LvGH%(Q7rGT$i{UqIde*iM2GrA-T)WK zJ1p2wiYw~nldrR6)wWXb>@R1X2(TFzFQs_-`PI+&$>Q8v@n4xI*?1nar=`f?P`q+gWsOTe^)kgI<|&b{QMFzipou?6)a_+;i)$|tLHWluq^ zOdb{m{`yHc0F&=P+G%v8Js!<8>_e0-`-=gY_ZKdbRoI=F8&_6VR?AO+aa;A80Vn1NB1 zqdFhR^B-)Nt6$h9V+Tbkn0&P{77yWaye6l8A2E_%-vnvYZ z?iV&oSyhAjDwc1|lkvY;B(V_n36CP zQeuMSivRAGf4;UwwULVI2D#zMbu#C%bcv4$kgD1yx#ZuQWzAOXHxD2zg&F$8e{YvZ z-`S}q%bxsNx$&tD^3W?=WM6)bg!uK6OP)%X#jCQRnZXwVf7ug@GiBDiG+DEwRE8%6 z%k3Xz%Aa3IQ!ogE1Dd8!9sXHop3i@OyIlI*c6=AgUv}lz$drfH%ermcot5B^I@zkF zpo*ci51z@=^*M6NLmQ+D8Wln3sYScxuPcfaSSgRZ;#&FfBWq>ub2}w5DiC#PkeQEd zk{$a>ReK8rzk>mU;mGR`0HZ%ByRcg3{A0EJaKUa##xu$Tg+f{L+O3%T1(g_o> ziNhS-$YIRrQS$f`Ph%5Kd_sqT59K%rM_dDk~=5K2_xd+m~MuK zfX2)3m>}pQsBD&5Cr8T9E*hny{Nzz_@|{OE%jqW+%B(5<@nCz&{9g~3i)IaxNYFiP zQjtu%Z=L*Xc8v__AEnOj(+3C1H5Uw*gqRRHab&*CdUUh=JgZ!ipapT%d^~+u)&Kx2 z8c9S!ROWw%$_3EA;=}#r)a@lQ_0f%THAdR_(TVB^g}z|%1BU45pub}!G?zMbj9Y&& z5uGYPW==?u^o$DCn&_W7ePp!Ua?wzkGAdrmYO(j)a~ovo#sZl&wI57M)UVe;xp+pB zoPTPn>;*4pKe$FFrik2h#W)=y{rtDc!u3Tm`_#dzL48@=AUBSUlwVykO5&jP%otZF zGauS0=K?@4IAbU@SGHM8`&qdmTb|fZDrD2QoQ`?($NwY5+Ex#<;sFhn_Om2Z#~YL6fY0`sIN>I8l!cq zd~7uUK2NT{ELJW#eXuOvS}LcGi<9$b4$`_(Q@mzIqC7i30UBzQ6jwJ(!9!om>hxlL zM&!fWEElC-+yw9eNLAM#kVoF$DbxCe$}Lxnk;K?gnK3p&CjEV_j2W0M7tcynGo1b_ zKGWkR&`R+4_m{NITXbjKNs}gO-=WNtv1>2?8TwtGA|HRU7(3op>n_E|OC^rD21M01 z2-^imVN0ER?z&6YID~|RC=!Q-TV|Jn&y6ndfmy?b?&_01KWCaWA!s1;KiDOAFU*in z?wBYij!M8xN0Z8&z7fkmf{sBaDnMn{q(qn^0Xis59MM;9njRxxr4{NZF=JekoOWVA zN#9i@uS5NR?aM559BYqyvdIoM3t*7aH&oUA{)rKC+0Zb_F0NC0Q^q97nbZ2q?u=4- zbICq=V@am;2Rv5PHY?D0HfEYQG!6Rq4UyG5YUP=?x5~0j1(FCbyZH1}HP52)4VF1) z4OJh|$8g>*_+*!SzPl1s@rAku%W*q4B}m4?B!fjG5n%yx!JtqXmJ)_@KQ%SR4h)wn zd`yo1D%K$(#7|BG$n}j4!M4x`WYmyYxphXItlLwevqUuQf}jP|0mQdwRZ1W5nUPl| z3zuceiVeAv3$5d^ZIx02?MwY-ph~(X@LpCywPc{9pEETXd<5bVACxge;$-f)C~3sA zppUD6-!QodAj3ZXAspWeKHeqoXVj?nMW2!`J+*Ku)o|2;AQxD(INXYLGQ)6Z0o^qJH zoGClLv><{E!G}8xkDvB^_^TRB%@l-q!Fuzb8q%Oa{k2WH6CDR9M;?Gw03v6fbFR!f z^9;H3jyo{w*GXc0xMc3jmOE~}Rj#}72AMV;nh(JTe{3+F3)bkARkvT3WLC>|G%l*} z#2I#Mq8c9teF6;HMbNS6z~qRnAceb0_}na~W_x4gTo1G2ocmVF^)GIhO}oovKRQ7& z)OCx5#Veh(O&Ce(SZ1Rj`?!VtB56B{WbOlB%a7)7RrBT`I!O{xflJ+)&OY(XJY^&>wi#1tl;#Af&$fK{O$%MbIk(ZZdOIbPO2_QWP2d!yg z0VED4!InCkExP29CWo~~isez(luZ&$ngDd@Mu1W^p9Ajog&b;dP5%c$kv5AhZV3o6KAy^{o!aSud0`e@7*L{ z{54pnj!l#*_+2=1_HlI%?Iai_Y2$|i6nI?=f5@hs8ksaGLMp18*w`t(}PpHQS7}B>%=shVRQQRmzih08pq>QYdYFrR&S8irxM{k3N-7%w@_q2E z1GKH=6xG6P@1@{Ofac@?*Q!x-q+F=kQ9DvipX+B(24_)qz_Zv@p1bph{F=5l@2O{G z@4g&ayKbF)wQLz?XyId}oGj66v3{5|*tlt{{NPu3I^qc_-ffJpL^PMmEiB!Nxg@s&)Pr@Q2{ajgryD=YlZ)U`K5P0w zHIJTyQ<|FPwHJ@l**4D7QG;ag+mB@dI31K6A*c2Yl!xBlrKVnVM6fJcwol$$S}Ny^ zi`8e+1azr@#zp6HZ#cA9Zp@MY`?65(JU!9Ul2Cp)Kw~9l$i@$kmjQ|4s;SgMv*YwW z<*{sCwmiJ7NbdjM0M**~{MZH+cyXlM1Bjxie>51YffGNqf3*C5TCCjl=5BccGn|9r z-&?jSQ|@0`@Taf?Hqk5^_&1AvLM zqx);|~WEOVjQp)22+82mgMboO1FL(!YN{sj0CRi=x+QiL5u<)eo+^QscXk zjcy@zQ~-#avcuBp%$-foJo{{!Fma+JB`51T3y#7RYFC4sL>1I?_Unhi%Ps@M|hCoz#ha`Q8rqzI$zhN1>}3Qpq@1EZCln`aM}+0Sj0 z#oL$aT9smqk`b{1I_h&2qQ>MGNE3xXiyx4zL`SW`EDvW^esIPBx$uSUvh=Pc(hu51 z2>@?=Qjq#mYM?2Uz(nMT%b>u5BejfaqvPb(;D`D_-6uXMC0|`Jl742L6{H zkIY@=Hp3G{xT^Aj{8ZGI@M3jVdja+GBdqQ zCfvVPPKoxH!I;&OAg*h&mLAamHTTqha^d`K^6-{bvgy{za>1#CWYwNZ8T+@@auR0c zhQ%OHh_$Y$8vIsc;)gSL1Rjc`9sqw34S?Eb4(>OiZooD9$?OqudT*7f|JopzL$0sv ztdeF){H-6nDgE_R7u6KS=wxv9SrG;Q>ia z9cYcnUW()hSBhzCwC_#_Hb!bd1fnLCc>r$&8ew*ts4F8IJXPUhtn-P+Ive_ShzaG; zT)67FZ(Nu-zjBv;NzkU3`$M?Gp~Z%&2Eo4XFg$As#LPWcmHcVqU4b)go(>1HmFj7LYP zg(=0U`Z&lS2t3lcTLPXqg&u=@U{fk!*3l=^4^DGVKmX~KZSuco4v=93B4sDm5wScv z)Vc16b)uXok7$5(0D5aP&MC8;LYjSWnkR%IeVAt5{A07JeubPFayU72$vt6ovMy?%19TB zf;P=i^2TKnTmwbfk|zQxWmXJ-8?|MwsVc-03Cb`5GG|-MMH}H@+857B+ad++V_@4T zE-ICQ$hIJxDIj?}fB-$8E2A z`WxGz?%-S*WyN{U(3CDC;5#DUY^bDn;6S!U@fpy}qmV;E*XqC`U#-v6bfjI6cw$u` zG&RhL+3wzPCzp3)?ZPq$ad(ml0!kVwqHOsLm8duyZ|pqz}gM%0q1-7y8% zCaGLe9`lp0eZ}?i{nG}>$ylID0B8GX0u3%kO^Bri37-%cOGyaVA~>LTq|<8RF8r{* zmVdRk{Op>aV1^m($Q7(sW3D<5Jj|h31!1@(c8JIkI6LY9#5$OU(w+5T0}aJmlPk|o z)dp*)O@XqpTOxIJ23rCXPrlf2%r%qfIdh^h@|^J&EgOM0PML>+jhR4YX5dKUin9TX z=!_-}(~(Wqg^pbY&4(j90)r`=d3f%PXHD4V4@=<=C;MdpG>9T}L^@R2!P%*9VRmA zXiBTk5D8m6LzBP|@VqwnJ9uPv7o>JDhXv+F4w-{=lmrmB(X8^){ zf*iyu+v7992g6aw2|h`HCSq7{C`NkMTj<*DVCy)cg#@U?9?3uepk~PL@RU~6NFw|% z)}qe#OYI8q80rRCi_74jgOA2cj+px1f#Z z34oXh=Cq}{8w$?Rk$@wCZj}H#a(H-%YV*dl>ed3^=O{~h#HXE zimlUhVq6m71MJw?(K(SFY5Lx{YO73poc-Jzo$k7Kw94r&emg>kb)q8L2h-JU2c~4O zx3bnG;(6cm+M;CrB974=3`)t)LI?9PS*rka$RX8|nri5sEUYCZ=gN_QBZ0Oh&`}id zOy_xRO7Xn!d2Q0+*iC)B1&**d54x=akXOeOGSf$(Q_(hFozr6@0WZ(9RYrVC+bWTE zBJ5?@&)dn?rRbwoPM4VM;hFUrcm)jLjU908=PsGF1Rx}6%bU*pTvOo$M*@xn90_gr(rL zh8tKZkJaY>W<|P727U&$Xjaj|oD`3DZ}_IBR{-jvl5?u%NWhW65tM-S%1ACg-Rn84 z*TMuN7=`i^51yW)BgmRV+L3@Gfp3EZTE6mPYTVMH1MSJYdt(wfM@IsV1RM!;RRW4D zUaYg00Myk|ocxXi90@oQXiWl^lc+_k13)dr;aoTpa3pXvCEx(i(Ui7RmLma20xcxq z08k5YI2Vot90?pv2{-_BG^Op7t0MtSp&V?fZM*>Gv0uBHjO=&x2ITCOr z&_V(&79zHY>Es1p?chg^>?3M1iB1B79d!lvOA|zUifgAEKIME zHP|UrKb?qeXU@V7nCFd&mWxgsgiYfj^mPwkLCCx!!hGzEyynq>US|c+UOv{3CAIcB zf%fuuTRa)*U~gBR@xw11bTEt0Y?{xu_`sIWWjGmnz65;Q8MQ5OeDrm;ocsJX-SllJ zHo@b-xD%Vkjl_m=HFym_3xE_A;V&Qka-2*Z-50OsW2@W_ep`s#A4f4Y=n2#<7tw%r&Pg*Ak=E%)nn&Q^2{Ua&a@0XH+k%Jv0@MXstiHfruEqNcx>Mw`M;~j>IhkZo80teNJt-SiQFvzd~1hpsY?yW8z9(4P7|UK zd%a(B-`8^MqAZzva*|wqYO?Iit(IYbSSf4M3l)Tn4~k&Lk=cB?k)46&0j?fg?tT84`!Z#=Y?J^}gsQ>|FF%33S>AWZLG^ z^|>O&jgpiatlOK%VOw5)^ei$MfE4T}2>_i?XhcD{UyH49PYCyuXV#a?Rh#l;)|7tg zyms#)ZWFUMYS7_8`P92Rq#XNqZ~F7e5+4a?Hp2O*rpn+2X)^h)wNmk)vm_j4rDv4O z0PN3QT3IJ00IhMu;+$iY)#=6JAK)jk;Qh%^*MSycnJer}MY*kB2V z+*yN+eC!>MlK}~#I(XFL*=7{fNJ31I#DoVbP%*C)dcFiY4L}_7xVQF_ZRHXf<0o}! z+{^dW0gT{$F5NF-)P|Z4$UAE)MJl0D1Rz6#pG;3d2M+2bOSTj%0O@E6IeWG@(*O%f zYUIvO^JV!h;}v|2?}(l4=ieJ417ZVFPP0^_MUQ@Hz5HfaxIDbALayu=BJ*#FSMBNY z2iM3Kx!^6ZkBkoOEze&wR!$rluK=(zEniNWw^ciYfb|n1`pC<_njj+wMazfqYu)*A zo}Aq;KqkR-eDAU$a{i3|QUDF(W@s2MZLJd6o6;9`d-s|#GHq;v0uo1e)2Z2n7O%>Z zvz~^34E`{wJs=kj2$Bc>XPgY}7pbNlH9>p&?lmA;%BoVOzQd!t2PtEBsKf8Fe?1Oo9$;-RtjL6>d{r~QkdjX!e%^ibH?yBYb zc^l=8-8ITH9CPySkB7+xGY2U^swN6hAoykGSIK0Qzv23EGGTa}_JVzRl``_)HM07~ zaS{^|C^yX8AlIDHPtHGOpwz+FH}CDOa?@+s5|9!ojpfbq(v^ed%5#QEZC#U$cyO(J zcGWO_-gN+*JLacR^^tiuOqK|M{nwidEgxM!!397TaBIQNPmh*B=K%;}X$Ao8 zEvS{gPmwP6JZ`OA_&Pt?vs^?lRc3i;*7Ig$Wys;+KQ!Lq?~ z2IsuhXwlflp$7?_lSd7{w~t~_sqUKeBJ6_|H5C_CfMX&6m|rM{s_?wr3# zPVOHp3;!^Kx#T6x(*5Y^&9d^|nG%4G|IZII<=&~Wa`TnrZ;_REM@U>$u=-_; ziBVi$FOMzGmPgJ`lxx2~R%*~8?|c?O@Y!Cu?dpk^`DiKy4ztktPkwBRJaAfHq#q-d z&>$Z8?-qG#MTOjUsim2%-Bv8~(ko@dos$3%@v<^4Pp+81O=gTwkg-EzW$7pDlIi0TQ3sI^SLaFv04?*r>C!(jLf-m(kKDH~L#B`IEAi1GZWE2d90BmXDmhS= zrxmyXXwB9ln9#jt4Co((Nmo?UBtdwN3=2NmDKD*qrug7=89p#tzFLuCkh%vzP5|1xr%b++6e#@@!jvAtxYY)sDV(34B7si( zfG7ZJEwHZC^rF{-JmRBB-T< z9{mLLKhRX*B)=X#@{tZZEd$9G!uPk^a*iLVpo^(w|;VhfnLE_@UQUphGXuYmn>` zt23)viE;@l{9g}8`6KV`mYj-4Ie_agvg_pcr^HJW2nY1(qr589_{lA;m-7aMNCfI? zLKw7!GhtFTpyM+Tl;2#mQ#*bzw2;iICP{~BM~5`S0jNBzKj|~j#G_;S`9-_r?X*&f zf+@JDpkAh8Sp<|mcTg}yUZ$T66LsUlEZGM?Q#b~WcVWU_KYOsIZNdUm`t?{w732|y zXZ!PaGv%$-g;G|(Ut&T3_4So<=lND0CJc*}`CsKr+U^qBxTjpMpOq|?(4f}iJT%M# z$zlB?m9}x%yP0xMdb9-G+wy2F?LEH()eeSF<;+o$^6I8?nKi&q#)kSyZ)nk*f_qCe zMsYMznSn)!g~114Me$0N1N7#DGI4N(mcS0q8IaaOe>i@jD#&&KMGBp!X!X>3s0rm3 z)c^>#%3W8Ewj83h`xTf-3(?SmdPyM4zv~BMBqq#XK`a;=O#mFTbav*#FEZ(Y4RYVi zc)97)5t0l?>1XTm04_LBfjB@JmJfFFEkeoHOzm!$f zskZtr$Rohzz)p+{m5IqA^5KeX$wWQQnv$$EUS7Ocp8sT@42lcV1*#Tp%I%QsdCv(w zR|3|MiTYWcrsEZ5BV_o_wEocfF_K~^4MJn2uQ?o@lpVMaHo5o5x!z|S{;4%git$(9 z1oO96uAv_fP3f`O{pHMmZ4tiW;Rl+`Lto7O3%1DDS=EvZkm4GZ1o(=K?}fC7U>2vL zvRTT}DNghq^JqBo1^D~Pr*K%;prbSBG`XuIa|r>|1^E%m7=l&cfdG;1Syd7Z zvl4}9dcd0=`7>%jguIbfDVui{x$kY*j`Peqp(ezzIkQThn3X7JViu9+ZYlgkuV&V& zrowp2pcEQk1GG4XddO;BPOaQ{-XQpV5_C3-zNwYvjcS@|BG-?axTq?@ zN6YQ6XHz&bATeA9CPhG#+b<8knJbfqMq!bvHM?l!t{I)59w!0M=i6x$%++^v`uDXt zLu3w|j^~dGl_E6!6sY8BQ1SoyM!HnN3?Rw{pi^+xEFI3rg>aI_q2sirZj(Mih{vnX z8>;Jm2LEcQ{N}8_I>O$!vRKAO`pFwNoS@y8eu;wZb?#2b*|OyLF!}h}QF7{?>*X(( z7pWiT=dWkTSp$RRl39ZllujHFEIi=H zNqyzZt)=qpTLtp7OZuvb6i6*c>uQ;7qld)FeHWz2v|HB5-+wqz=;OKbEBI1SS2}PB zl;?oX6;JGtI;^kq2anf(mWO5Mb=slH0DWLHlY(UOb*tpcFdq`DhQ6x0z|A!+CoZW(e~e-OgyHrDnCVut6@tG6ja;T>$`pV7;u% z{7NnaP`&h3o-Ep0E$ja>S>yRL2pW|v#`OQCK@tpq97BK1V9KWrGWcKN`V8A@51PUG z={XYMc#gK#D;Wls;P4Mra^QkblakI5~MjlJdJA_dZ{jk6E|dT(h4$_kK+XAM!U?4#wGvT|Fg z(i|}$5`LIQ8390}c4+u!-b4I|EZdN)+U04J`?Sj^%iID8GtnT?AIoZw>bAbWN44a7BrEutt#2m znle0(o_rl1-}V}r_VRnu8@_eL&iXJ6T)PnMfl9_Wk&wu_FBU2&U1t)lodMw0ddEv?uU(PvhGt&@-x48uo&4 zepo(_c>CpHX+3Y)6MH#tkEizHNz${(j^uIY^UT}hdm zK`$-M2RWDqW=2hWR>pOWx}BPH?nuCqz&B3! z(DNnWp6+t+qUS$sr-qIMj->>Qg=FVJ0m!{L$Uz~yY@BmP0*(ZZfCSul1KL;~2-I-_ zPsdl~909Hzl8yu%3G{FYxPbqdWI0Gd}x3AC$7-L*4)Yxc!D6FSd-l>lx0Y?JIP6AE972-=TI(=Mg za(Gl95UsI3c>jyb>T7E71wsU#JHe5FBLPPOU6Fvnk!s)y&xtdZ_s95vcyy^oeeh;> zS$PGtphiV0W^iz*E8=(ZIuiJHN`SaQ{GgUYtE#M`0-wUMKBc301F@(EL`RVRA))ng zbP>EE?*<{da3D0cjhvGYS=E_Tk$b>m|EVGlU+azFw-yXq^rfZK*d+|rBoc8!Q zM)9T}xQ>=$!3*DmJ+F0c(O~~2SZJTaE!ALn#69#%*|d49npwOi$V{3zUXR3#z`y|g ziYY;daeeSP4uX$@5Yp>3yhR)yX+)TS?**ZNAOKRc<-JDv2U(!SjiL%4y?Okw_Vga} z>wW&Xf}Sc0Q82a$lb}P#Ljo{@(4$v!UT=1&6em%865uoJNa$#~j?ii=&Cx2SEgp_W zoR@lhbGB_$i>S5B0@W8icY_G8iGhTlLmxpWO?6=Ngh9c_ zIyJuvWah#-IudXsaLgoN2Lv}0E}$VC*yDMwIE4EI6!znQ0M~9cxF+z>Wn;N*tTar= zuOI3c5D9KB+Pv?l1VMyq5zs^BG@}CL`frO@&0UB-`!G8v>`%&Pb iio!g^8Q#Y^!~X+BISJ%aG_#Qa0000>KYPxs#s&IK(2_$$tcmM!^B>7cT5dZ+I`k;4Up+By>;+NrITqgn*xX2E_;VGjW^+UxUuXcynR5z=PVFz>!h(KLb(5tkNxM&Zb#b7U>{N{3MheHLVUk$a{jUS+Bq%YNMimK(tV6spz9kN}^QTpkvKY{R z677vnQzZALAo8fxe_|AlCQ|A%Q>Bup4%1CUDKA5L)wB4tlTiBn1O?gGP^qWk5_0eL zC@xc6Qyaf}Dg4;@zAk8du{7OrLuW*HKMcv-HN4KHbPEz2{gpBeX>85g?%SClS2nFn z4^rAkHx;9OeN-3v*1`(ZXi^Q~%~0|rPc%*Gf(y?uLWK?h5cUSplR%(%g82)=iuwU} zfIp+zdWO+}Nw70eEZi7P_FmkYy>;nAuC=aCkb0+Yvb^ZF<~#T3dD@wO$}7M+PlAMV zIk}7xn&3L8J^{jzl-Nhy0VVekc8{M_8HduVatGR({K8&<^8Uz70Lo7EMR18tcwT=X zEP#{*yw^{ZiP+8`U__n>gp}&~CJ*_oQ@jfEyPvim3MT+L&@cxs1N@+q!VYN_(zT0x z66vW^iV1N&Pysf;4iz^~koyOz5%iK^3@XHR2zU+?HT<_A#T=)vkVCnJlNKeAw86AF zYw}1=pSZy?11khGCm~8;@PgI_v-Lko2mGqyw?du>!ezoh4mR9$x8u%0IOqw!^k^ig z2tnzJzT|qq^TIw4(d{Ou_EQv^k{74e`~=Y_ESB?A-kciFg6lVqa>#G-xm*qTvyzn( zn_1Lj47|vqoFg;MS}JZF!pQwR$ElI2lS#}&h(qxks2gi16c3zNB$56@eJds+9Ck{u z_!#vtn(hSsJAFJRY-U$x@05Er`lOJ$&Sw3<>hMLxQ}k2rQ)DZ?dd!vZv%Z*3J5It3 zq;Ujn|D8>vMzU3xRnk@URR%5Mb8;Oh+c4K&nC^yTC~a9106mhA^F890O>3is}qCiPo=P(q5%`c?MIQ~jhIO6w(~h~F)^EqEy`!LtGv2-3#k+RDR=So@j`*EP ztC?8bEL^8pr*NBeOve_GmWroj-LBEDk-BVOhi@Tr4C(CXoWw2R-Q-dD1b6FsOpf;n z2__mg+A7)^4~DJ64AE?xb&L&y)jcgZ&69P)@=j6y69#-_cVSu4X`xoZjY9Qz1lsg8 zA%d!JV!j=_;C#F+KRe!g0R|h_E7~289V$vuj1bARA*^`zczq?28M~Rn zqPilKF<2ACFaAsHH7+$M`&j!|`s8Du|`h zrGzRR<@%P`mj2F#w@CPl{d3}GH9bX+&?X_zh*MF=xc63)_0lW6D;g_AJZah~YqTwt zEvjE+Oex1!S!=xaIXtnS>7U!~VhLCYg$Y!+YB^i&Yh8A^Rk+vf$#|f+%k3;&JkG3k zMqSsByf%Wj(a-<%7mn?fmZq2X){Q$)j?FUkl@Fg01rCQ9l^JTe3^YDBRoV&cy$$uu ziR{~t?x4tNPDoD#W)t}e@S(RkR$@|&M@nL7lq(-bJ zolFpt$H1{S{%hpm>R`NMl_S}~_i=ZkJ=8kZ-+XE4Z6r^6H_td7DM-w*1`LLK)z7$%hTQjJL^>D1CzvfUJY6lYR+srXE;C#&s7$-8;G74BFdtg#jr zU00v^ml=dvEITX$xvqlVVgl*M?(og;j^c_-zm$LVXkoeH-&0H^Hw1GG-ft&gKhLyI zf181xZky&PMuGQ&G!7sol~N=1%0$bkrrQxQ5#4{27E|$3@n+}ep?D7Zs+2&}{KN1^ z4Rx`S6*(ii>w(9v%@|=)(6>8D(j#8;ny3iGZwq@#*B85d?(6P}?!?&r47}}M4dcwF zZu{mV7Z}ecP)6U);XL46C07*l3+a;Y=nWZH+6XkVnp>@dha$Q$y`hAlU{ugmO)6fD z6JLK%D_^J#RNBzY0_mwwUl|WumdWPGB&XWgvMgP^W8ZWhyazOj>sA(g==L#n8LELa zbdP^xTF#GAkOdOnbJViy+YJLxLNf8I@x}04*dML9<$o)r=`Oc$c{%Q2Jtb{3T+}lz zdK8W}SuL<{vp?3KUsql4pB1fe*t{!}mNaS}sjBN1s@ByX_aLvwX!3Zw&Yw+hDE~PD z#dZ^4Tp%y6safl2*Tb|>*-n7k>^)a}4PL(2$hqncwO2liJ-48U5;n^3s3>Z>sc5hk zTFD2&9b9OoIOgsc9QKVQg99^dP3yDUPMsfTF=OedDp)GmwH@2$-PZOzdVq`_tWJ$C ztm}3yQ(iN#CQ=7w<6j!QY%*KUe4nQY?=mf2O*hU?BhH$AfsZ=(-s`XaFzP5e0;8Us zPbHho`}S8Dw^YV*w^=Ih7Ppq(4VL#uMDJNA6M5Nu$9s3}FEURn$?e?-y9dUvA+Kx@ zF%ZSj5HPmwDbINqg%5j&@>3Uh9ja}Aylz3n?Y>&XvN-3S4DRJ_HRt8yE3X$B8+Fm5 zF}&W{uRb>-R}z`AF#OE?b-pq0s{+lJ2vS4X_7)52rG@w6}-KK~^x#M=QnjBOhb|0tCmf{i>^} z`>{J^WruHpaYbBQvb|)aGZg#z!dEK904)T7E(LtwA#(8ciB7>H44`&jcJ$WJz^~PC zbPmus9jnbX54B0m!VG#Z9PqVZQt|)tQ2d6$|3W-p@j@2!@s~HrSWVJIMg~CpLBj%| zz|a8@9~9Wf4*-S-fcl#T0KS3Y|C?3>qy9$*8~_M42SENKqw#V7>-h0;exU!kL;MT@ zzYdakAtiQY#jgT)<*|{f3*Oa8JU3p7tG1r zJQiWnVDFac>lKZ|7rSZHo|7!U!VvktXpX38%Wb)v>#Mt8_fbU?5>il*FSw_K{R+n?=wbW*IPQJ0w|}K`Ev$o= zD!HD?^Tl+0^ws1%gKNe{&_&h<4%ZO1LP>^sqZYV;ilSCdH4Yn*YmBpO} z76%d$92zW8Pz)9aOa)DtvNelbo)7|YuB+xZ(?TDw@@=a0OPWZI&pffj7?_bF3+yZ+ zI0Xd-3#2)c@RK<;x|P;NW47B9W=z@;28q0v_XNLz`eSLT*0MtgB-i6K!D6??;oTv# z2sA{-pt7rpHH8v>3fGJiA4SU}+x~ru_v$c;TQ|v||FBv+Sn8VJ`p}#)xz-Wwc5&+| z?`HAUsaHb362ZOKqC0ilT0O}5z5(_GmXAeF$TE5rGb)Z002%J7mW{A0l@wUGT-)X(5 zgHA$adNyB{I41huQGoK$A`4e4DaA{b&00TbIjI5 z9GURjSb?~G+$T)jek9j1IJ7Yl6V?F@8$g1iFrf^(F!PE!wfR8VHz~LVL5J=pg1fe?dTS zFtkHH)&yZNE4LkWW?Bs@-Bzwpi+C=Q9J^(gIX&lcz18Q;)Z;+~cV1<%ff9gENq7kr zoAqQ|z$UoPb5l&c72ZT<`5%u!gOKqJeVZyxwn)=5%XSDAMT0GfT(~kneCg=cejBL# zz0lULxDKJzgV9C%qAi-;{qCove#uoo@M|tF_2A)<^IBVlOG9<;v~NLyhJzG>)58Y!xM^NbkF2!o8J76gDu{YI z-El$kPK)2Hc*5MPGCh%D->}fP_4G|{zm&GzhwvNd2!SEUgtAR^C2D%cAc5Vbd5JUV z7T|U{W;QjU>fPy!S~8+La+vv%yPd;8U;S<&`YK!>d8}cv5@2ytk7&Z{n*sqAa^IVT zpce>*|DYd(2JOQZt!|!VfzRf1H$6I-St!E8m+3F=*W_=M@g@WSW<4{7`*M2j2aK1s zpWcOZeW|;;g#kB9VQ#YFP((h>T`v@IF+MuA|NY#4r^tUjBx*;)DFKaOA& z5@tqVnJyMnemsQ;zPcS8SvFV~AP|8H;3p8kl{J8e}fj zUl=PHm=@V_zbX?FnqQ`rt|E?{P|qGlG!8%xb~UsvaG6uM2vSC#dQvbJXX^wwW5-+g z*R|P}LTAloK_W2S{E_MCME)kyIxrI9&4ZJFZv+n?S*Ec~v8t4jb|)fpH@ApiEE1|n zO;4XdMow-77U8)AtAXR{`;dqoVrS?jAvn^zRnn+iUfb?i$xAWZLOK1*YkauB%C+_M z-uRcryt2}x-R9uWZSmSL1B~~^d&yd&`h+%{rxOO}m|*lW6zazr@#zvgu4l!s zFvuX2T`x2rN3@L*(QG@b4HCW*Wbi4w>TMWrfOvUhL* zI-b`%Uaq5CA+5MZ>$Ygr(}bR`Nv=sM^mM3Gt{+4>K7M+`#OxYfl<{rKrkF7voV4e>g}LDj=)k7q{LhBTtIh!?Xwr@fK96BmhGe4n)DN;kP9loNuq#1D8#DZZNN2m$I~S#xv(99nf@ZAzR7+D z%fn%~<)#wGCeIn4eactIEt1H0*9IO5DOY%&vkr|fUv9Y>m=*C&>-QmELsdaV$L_KVz|$+{-|Wo ztXE8DFITS*YFbZ?s1iuC8)((VmVb6BH=o+xbGi~cxVqvYZ568Syxr7;M!?A}pJ z&>3*XNZ-&O(z3H-I$LXrb)h^f0(*T^!~*lstLHq)B8rkx;NfT!ters_HpT1 zpI2aN)Hh7NF04&ipnfGG>#W6(HoUhix%b1~Yj$3-Nqd|jGp{nt>n?1atjZ&(D!`6@ zT!kuqc=^Dxj=eI#jZ$DM^?6;)SXV%_U=Jq)26nA#MAIDA;=GoN02FTmXxFG2uv zYE}&nkDJ`1-1sVW6brq^=C9bar{(3573NNwX4ly;kFD3ojGuEY26RJErnA3FjwDwW z%*f&k$)vM8o4bWw4%1amof02RA7r-yMN-TL6B`UlomJN17_mJkGeMo+X zz8tme(2Qbq9Nz>^;&Gf4U}*`h_N#%H+3$#Iw3!elD*&g)uR*sj^MB4nltEAgpC-5* zed0W>pDz%OW|brcU&k{gZ+7GyA5v;zX+#QOp32JTxnFN)N*EB-Flk{+W%G~9blO5F z1)e_h-Cs}@*sOa`1m=ZD<1m*=KdZ+ZM{@J-q}v`1(=j^2G3iC}KJXCxQz3B)QNE#L zU_ja;Qst=z%H%#NkyhFCh-eqLXJwli*AAsEeE7(?7vtTieb1Lg-p#ojduKB65s_VmmW3kf7e*dp{z$-ZOtO4 zwb)_q;EHaQxo_g&6SPN&6Jes+nC-*aE7V%N>egOOoYnbu9w-P$nTiJn9(X*r$Zti*4^?P; znw>!t@xL5s(>Dfc13i<+36FjaHB5e)=olH$51!;Q6rWr&oY;J3!eh3=_vSd@;65r4 zS|$B6UXl(vfIr?Sp}4hJ%3Y-w7Zd-+IUP`K_%Ru9%nzs8%dur_#1hupZulHe<)_28 zK*0R`h224CZ(nH2WAkc>Pf<;YN{AuD*X+8}>P}QI%IyXdH?KNV1R^j2M%{r09_DrUFx2&GdV^K|d;1Hc^Vw?5 zPnWYoWlMI&WLfKS>>wH@R@kw!9FlDQhX({Sw~s&+C6><5Tw_`u_McS#7`}dqv{j_# zi1GGtEzb6N%pAvaq(vh3AhX^{er&>CFLoS=*?cLS%%h-F6J(DAe>B{|B2ruwT+m|k zKcEygTen3x0{yBn8_eNnJxGR{?XZ<2g60klHf3ykUN`;J8#*HV;KO|8>9LumSt3)4 zg`^dxp2m!2@%c;^3z2zLvy&>iVN>?&hK}|_`w!W}l}x!yn{HvoaC{`G9a)))-I+n9 zU)H52it~5LzqoZ_eJ|%*+0Ca@-axYupYZW_EIO|gyD~<>;WMetxMfmh$DmBJC5tnh z@}%6(WF?EtR~Dv}dKgjBGclArTB3LS^;nVW{I6OryuVJ!xrgvX;@*q^L5Ihsl{q|b z_LUE$<47Fq-`;)p;Ue_?Z(r{PCR3P``opSxSKW#EZZ_LiOZp}AE7}}_mXNj$zQVoe z_XxrQP7~vw}If2VOdxQi%*7&1^BsL1FwY`o%uj=Tn4{1E&Vc?I=V0boynj@|s zGKrXSI_zez%OE`~3x*Mp-Zm&@^~Ox-3X2M-nhr9?2v6$KQv z7K$*--wiSP`bER{K{FE_R|IOLd~O?OWPZ)n?4aAIC9+O}@h$$(yw1zg+{TB3sX)Ky z=mvqj9vbs&;ZCG6IOw1JvG~J|<9L!($j5R$p-8zBM4nk}6%awyXYrwk1sKpbTNisl ziYN07hso{;Vt%AL=_)dZ(~$$=m+3E+2S#Mx+l2=;AwQ&J1#a`q!j_hVZl+9Uj^bdb z6i$-Hnx>5>d)~cbLNa;PYCE8$RA$nF0yGn$PP-!ZKWjofg*2m^7+7;sQFaUy8- zy#mdjTtP>pGcZ$))jjU8RLSjGw{(P@8U3cq!7O?d*OIUgJ+u7?ba1L$0m*oHm_Ez$ zB2HWCvumwQY};}Hp7gAg-kZz?>}3|ksePhFyzEBa4RjCSbyeFu})qg2kL;w znUtLLUI8L@*S{cg$N0Wf$E~~HLwKAo6(81X+WvHf>bATlkDbbNmCd{56=pFS40qZN zhY+*;bD;YrXV3A;ymC!Rwo*9C~m+JFkk36xH@%v+l37PEH znpQWQNKn9V`b=UK*wiILn91ds)L2R$NQ>xlwk)PAn<-Ak+)nIu$-L%$Px$8tL@9|> zUB@&*PK;jTsBW|ajp@e4511FdS}XrO&kJAChE=aXr}=N8I^GAGxZesYonyX`D^zEJ zQ>KUdlB(&mW^b2l_fbGIAN1Y^x}2?(!^x!cONAgXBe!`U5DgF4_h*qVF+;kNJfaGv zl=#~{ne5A*?uN?C)hlc&D4?~H6(&CPUoz7XA^nk>e73ltyXB=#qc7b!v>KhJg(w*UCQEF!tpc>_=mff zWq7&_Te8}9UadNw^x%odLsxji1yw{UkIfE=G;1Ac<3V`lm%VZ-=EKdUS+m`I&B|V- ztlj)Xp8+IdrSu(q8P|$L4u)NCoHo9I|NHQ$Sa;+qpvwl~=mRJ-Y3c;eBRZt?) z_zcis-vLAU{9keK6DNo z3_8WL$AS}wwF};jM_+8jN?&5Lac9yd`4l(-Ga5}oy-?Qe#jR;X=WsE~h zoX^wAdQupXBIu7uEHf=j1`ozjp0_DT;*^oo5(nW?^vUGzf_3wug7xhb?Z$Uzzse+i zs0V#M0LKi-M6EfS`egFM^vL82;!rAB2fI=`5i_L|x*H*qHB0k~oR7tgK6A2yXYbms z(F~kEOxP_(92-ITbL*~{@ed|nh(K%{XkhESedFyqx{VsCMO)S&c~!_!=WVNMWflwK z7w`UtveZOm$L6d)vcyu%h2zZogJ2jsm9pJFn1iWA)#$wYjpvO08ffS-=?!B!UaQmJ zXDav|AK&BDNM)-KgJxXaK;N8!5SlO=B`przU!Qe4=A?kG-03f=WZ9EpTJ)m{xOE zGXW|gGuu7osa8p1@&Pm;`OI=06~`Nd)5Wq2i7TsBXAwP!T1G9le!I45MVuH{0iHsF zLCsHJ@bzFUNR1YyoHphFPEpC-><0vCD~T7$TsnufG{{$%K0Gg(-}a4c0fFiwO&OaL z{p*hakDRM2yot|Q(y_6Txg(TO#p9XFk(a%B=pzZ%gkb#dkzIU%z=){mVl%gNkZ`;| z#M5x^9hi<*z|iO!kIPi6u5YnVD`59J9Q&I8C)S@F2Hu2Zc`-{S8*cg)Gt-o-MwKVc>5qJ{XT6tfj zQ%0VgmL^!^?;Q#cjKbvuE(0Dnj&+Sw?ChS2KK0giy;OG)n~dd(c%r})n)xBDhhHDZ zhm>y>Zdxu>>@d(tx%qc$xNp^cA-RABq3BTs->H6neSL zq)}hxe9I96UxzG`4q0(@ggbq8?@HtkW!H6i?0qkn6bI(So(Ad`bXu$$#yT%rm5mfY znb>fB7btuqpLnt%ux>Aigc-^l8~IKe7J@=3>}$0u?J95y>3lqyWHO;Hm@LOB@qj&? zA(^xqEAUSLG!bb#v}*w_M<$|HyE`frEFL?X$n2LK*T=VFpi0CX8h~Bx*)UF4nC)?A zoRuF@)HgD(*uZFAUdstw;R9Evws`Uf2Mj*m&IF6J^X+(yc?C-C)$BjCtK#|Q*bTy+iCKzhS6lAfLJ7}GCGZ{3KJl#_>2}B! z3q@?e4$dXIc-cJ8D;p8E|^zS@-Pvwn}=#{cxqy;hir1zz7P>5_Jlua*1qsgw#` z1@4W-77WGPwjlJpMcE^5cq0ZTq))Fu7D(t2ivJv8HymXA&1eekypF2e5n6529~w{! zH$m*m2wZKH%d53oNUqpyV`p;f7`B|;OMPs*I(IsrjU)2DAq_9SFxPe?{sFU#(o_6! zr8ITBpgTavazEJ}9BJMiB&Frfc%dGANX@v6L%dHabb2ogv__HpmEnD-mbxSS_MPXh zcU@`8GY?dporHfJ!6yBcMR%dvP-4jPW2M!1KJK>N$chuKH0QPHu7F&n>v_h2$94T_ zzFl@pW>m8m_#<>B^0BSjjHy|*lN?&+FnXbAvSy-9&~?MP#mc1u-UdvJcQKY(>8lz2 z@6IfmGTG-y*LD#M%OTMBl+pk$x67(l>S%WwO1#RRR=hJH5q8XuGGkaIHd|ciIg?RX zwVV+_4kZ9oC?|VXw?uNT?I)i z^0gLVT8y_=Tn(?ybAo?ssoKy}{lQa^)xvhoWl>G(1{AQsv>Cs++X^?fx> zv}T_kt1GyVm6|8&%CHN;!vSYPcCYYmfOx@QJY#l3xqV#+@?l4+O?~O{6NWKEQVHTL zW~Q5bQZn0Wa#~yuIEgO*TFk-k61QaQ4N+Hy6mi#EJR#FtJbGb6EK7ac_v#=&X4 zD5p6io`|^$e9(g&ph{krY zvh5C9+i^^}wN8)NGF|F$I}(_nkbE5!Mx~RwsLpml7OU|y71anF2DQX43iLz}d#U5WxT0*Duj~G??=nklgf8B zw~ITXuZ1Sjh7a2Gosw7&I zqEgsGFU1lAq@M-Xs2%%5H=_0gci{e9Mlk+w#MP8Y|NY=_7w??;)=mfkoXhz~7BiRE=R0&?t<%K* zy(JRcoM1hNhA?hdE13h9A`o`v7P44KLY#1bg9L=rb!XOW>_IQdWDe;fUEK7%v!-s? zT4?;y-9|@VF?4icZl;G+{gsyKJ&|ymMs4xq%KS`STgdb!(ox?>F5ukPLk4(eN2#`-Io^nmYCP0qwm0%>ff~-|gEs+Ij6FQSQ)Qp-z&^fXgWB~Vh zTu$YSle2Qx<4L>8(|j@IOvl-7}_{r$hpWgMj=fc5^3RyzZ(`e zF>5+J+Gg6QFHgV9OL4>l{dRpazhQ9yzD(KDFPm0Pb-z%{({ry1yC7w>G4-Ala}w+) zP`--`hG*BnyLqY<3OOMrbFk*)s3ZfF-a2oASd=LqX5(q{#?jYT%6|SG{am9WEuQX; z^&fjidHS8YJ$wCU0nOXx?Pk0|&q{v&mGCHL(KuV(`(C$>BYASN-fzROOic4`ILH$2 z?lZr0Bn=nw)yxQNac3^CA=OfiZ`N^e-wlbuzEigXf?x8si3BS26^C-N3FwgO+Bqke z_^d6G4=QpR6QNOYcYGl~>Drx7=C*y#iB5f2q8mXo7Xf^}tX6pFS`6Jjb*ICxana(A z3RPZUQbyBJb_d@KVCm+#ZN-_y$x`X5wYHZ)}VZhWv1Wd z8adP+ScD)Fi4Ek^aQft>-MAGip_-f1-I>n5667 zIU!up0+4BFdJ#p{uaN*(wh_kIOQ5H#&9%mN)%$rq<{d1^$*)Vxr1p~1ufKr_@z;n4#} z8sqf1IsDR3?Bfx8mbcw3ZdRQGCdwJ{;d?!5=arrfw2AekjM!jOX6hJsORY!{)M!P#LNCE1fGQ+F|dn(G6*{;<+b>Q56+p# zX0xlw-xzoGPgUh-{&@&>l%k9%Yt$-KL1Lakw9Ww^%uD9)!CnQ?w{TIz+kwsIrN1%7 z2c!aPFO`qHy`CVVvY=G;jYQ;WAZxLsmDuf!2>82p)@PE$!<+g=Lr2V!7X$pSC&gP8 z;fNTj)4LD$c{M5|Fj0izkese_ozS+(GFEHpF(Ip?mh}1E$ztXHR5O(xWoRBL*OyJ2 zcXeT+>MVN25X&A;Hv5mQd#qvxrBR%It7G%_;pr@N-{c(>B)|2Z@uA>=1^jU7F;=>9up?keSLvAu9DL0^1ra;)yQ zp{ZR_eyKs8kA?PkeB3F|MT^tg%bJptz#kF@| z&oA|azBFZo{?T|alfy8vs{KS%d`TXKP}~}`HwV6T@??d#%gKYP1Eq_z`b?~Qoo*7Q zvZRgaDpI^l3|(&%8H@y#oLzi87v}n{s?7kuZXwvs(8_R;=k7Q&P6em~=HD)q&$5Mv zf#cDMeud%cn(lrQsImJbgot91XVMr=0dR}S8C%0YAN7x~~&u@fIgmo)FvxGqVi({pUEwM1l^jnxt0-zL4R4NcJ0_rKF zXHmw#O!rN)wC5@8^oQfJ&IK(}oBzQ4;`u7pu9ae+pOu+Dkfv5o5Tg_Ceuw!5P3OgG zvh|WT&;9D4%r1ooSqEin>IaebatktQ$mEmbiR_~j#$AAro4UXoJsRux;vfAyWf#nN z09YZuET%9N7#9w(RCV{k8XPojM(kGlP(Wk=H3p@^XMdJ;#?TXS*pcS4Mt*HHg_-&l zeldP{vN7uEfT^3c3yMh*&KI_d=|yWEffj-DGyU_&OL5EC9a*KU7TT-Mg;(5EVp@D! za<%;NMM*CiWG7^s8?8hf^GCDKGDCsR;^{sqGXsYqqcD(6WrezuDy<{Y{ZPN1!S_g! zbeqtAlcGkG)s!dJa%r2%JCtGIc|apwNV-EeLUV28FZUo`R2IHA9$;Qj>)0XU8Ze>= zm;MOGuC3(7YIWoFn&VCASkFn>@eV;D9;sWcyAAc#@9TE<+3S*qltk<1!U)X?@Mr{5DN@HY=)t-LSFbDO?;2O#hZy#g{yI-h=c$0ADG9_x-sQ2~3-lUyn z$*~NNuH4#r;%l;CW@udM$(T+^dlc*wM}%PC^=?>74V<7fmEBSrKT6#E-qHL3-4kq9 zC5}4ut$Jx!p}|*d7?^5z1SQ0$-g)64+GV2Zn3E~{sb2CSO1me?9f0z6VvmR9O|};qG2G*hMry=}F9> zKWRU(t#+?XO-K;ZuBa*l+F*fu`q&1~_ryOM_4T*NT1k4DRwIa)(Y?mSt@bN~r3z4V zzjs0z8SQD6K_0Zg?F@M4xDn)IQ&Barm z|LzQn=8Ww-o~3FW&vEltSFs^iq11fZ>(qXm$5ZOC0bNy$gBHOKGStj)Y`dxvm|$6? zD8o^A>P3+^TxQb1uMyy-X62HE9d`1CM>WpF!d1rtC{AXBvGQ0E+ZnqR(H$2yQ9Bou zK%hwKv|yYYCp1dgPqh`fMT-|_B>GweiFbp|h0KE12YO9nc8SrwywaJqhL-0@;L1XR zDumZOP)qV^YMsKAVQiKC5~J?Q2_f2HgkSlo9Su@Al#md+zp*hTi$jy{&yFYf3hMZP zfdWYWuoSY-im;L;ecBCyU=1s*cR02rs>`U z66D2c>BvkD=~D4+TVS%~Wz{-bo3TR)U9l0o7&7xX*LQh?1&J45C9KD5&ZrP2=0XWX z$7(U5yiFL9h8T}@b+wZHIEgBLSyGzO@=yLg4WA{U1c@>$J*&xV5FSgX`K{D>A;NGE zRzC}5Z`7FR*Qc`6DfdXH`*74Yy)zo~g3t;?cI?=7O)EhJ4O8>VqPH zBWJEjTBsU*VM7;u9iTa*tl^4xZ^x7Q+}3}aAi=|MxEZ3LG1B*D_Wo!}!yy`tzO4rO zqk@0Tls&Ct6o|6zw~#9mYAlvt7u=60EV}*YJ<^dJWXPD?zl=K|;wEUL!#`tJlmdsN zv6I&KsrwnLTiAVvREpQ|?`lxLziLEhUeN;zBL-QGJl(N@Ta73}BgH8NHNe za0365(L-f|brbP(CQ_H*Vpuixb;X>-MeC+b*h7={@o6tp>1|`<9!yJtWir!~Jwu@D z{O(5T*#A$(=?5MI9A^j=dDSgpj2eU!g!_qpkQQf=taH}C6E*9r(oVxDjff%szv@#z zq$MCvSzt#_mHmF9#=|jkGI@pRl4J+yMg8Lk4&*U9_+;mISs{}qR;Cs}sT3}|JM;h4 zxB8LU1p!0=kSQZB>ye>N|Mnp#hSV+yx`@b`KAV!~uP^6sZK#kr{!7NnIYg}%_pEBT z|KmaqBWVr`JUgNlm-XXa}dsgCQJkw(2$6Tu)X!{~n^ zJSzqngQ_U8_%s1X%9i-dJL~n3v4CH$Igd*=Y zs%cTL$^sI(>I$|a^r`=q8pNoZGbkg7!~undj}eKpzmz0~hlUbu%iOr;+Fy3nSqw1q zsRBdRHB&N)oS42LY!%y|EKe5gqdki8pJ=@O0RAh(I;%qf%bG0)yNC1T_z0C5zu9`} zZ&_Ga9+QP)^g{JQRB} zZ?Vm=byUc;!+Wg^e+sX+?gZ>a@6=<-NaNAS~Bgr%zgjh>3H#H@9XJY8JsAN+BIm+*XQKWk9V^!Vun zBUnYF=xnNghZHg@1oLTXYN~K^3mF}i4)?v+cAfs%uvF`@`n)yyDUQ;u(=U|yA9v-w zVRMjNy(gy=qqJ$8c= zoG!fYXR`P_gZA5>iS>AXCNb)WFX*^Jc=LI4f9wo-vu*};vD$YRvKkNjiUH0Ss{<+5 z-cZ7Q`%9{CKocEby=jP2D#<_O!%G?oz6Z~bpS)`Bf7PD~cZpDV-k$*< zEuUl1=Rc?Pb102UES08m-_nJ(|MV4j)`CL_{s}|u^>r0=FoFH^qWxKCm1E7xapr`!)pWR`NFL_9?h*cFbgF(3_Pn6$o7h^liH`3j z1nR|*OM1ENi5=%84d|-3Ug>*1%zvkSyeiJ#C2|jJ+8!?L^S<2d`pMR&zJC%=>7Kd=g)6HKgyvL6&1ftPfvdl}bWdvyZ zd0*{)Hy@nf1(p2-0dau$sK_Hp40QgTjl0v~+XIf8-S7Fa{8;zh!3cdw%Oi{}-E)^f zjoPo>rsEkDTe`k{+N;^`7YOz>E)?f27flVH>F8Q^YiA~?%@=YtB~46JhID;jDfC^} z-5VzV6j7d6wx?0r5b1ov_xsqC`E9f}tV|)5M6XYjpTbxhRL2PCd(n1JL3Hi1r>vTM zNrrjV@tCC9_db~`LRNLWZ-SdKv^>zdpR`?kS&x-{GZvAVSf&wfG^W6by*TaLGWWmRHV_-NQ zS%=v)(5h@>leK#C5+8E(qPS9T{h61YJp?-2jfH~Z?5BHOK!6v&LII(exVXHubkyV_ zfwDm!n`)t>(o-2Cblc3Jf` zHIK__YWL203vtel=Y5f;ZA+%wLx6NtQK8Mhr%PYdDo8clt-ThKno8wKaqZWts$A=p z`C5xT7Btwi<%aw{DeS2jLLQ0(sbogX7Pv~a?}1!2AN2uS19>PZy}hE#u9OHN&)!Qd)~T~P#IveG{HD^ACZZMW|byDEH? zsFB7U>b`p=cn}B#Ritpn@VmWhZ#R)0&y`|>NYWk}MvmfR1qyaWXl`z6fe&tUQdRmC z26~goPkBZW53i_myrk^joKfes?Bws3cOy)FOfAE7 z??snPnzd$>YKe=@&X#!GH%97n3&j&xwN{S~X>1^#Z!%Ja_Z#nis&rXY8W`IGPlG-G zkEyc^i<{rNK2T(EcZcF`#odZ)vEr2CR@{rbv^d4R#oe9aK0u4R+u#mwxSw_kyGs_!NL)?h}MAij+6dg`OzO-NBlo@t(} z02m%j{MiOHwwnmdo;NnfN?M9xRNz2+$9fr!wxA!hG=1?{b0o&ueXHzk5SI=Y`%{rZ@ zI=V%X{v!d-_O?9wM1a2qN#O^Pirp>9*PLk|M)C*eAKw4DUm&6|v6Jx>b3{6PRTxY= z-YFFHOx`~7y2RdgOTyAvL~Lz59l}|yMxJLQ{k5&~aB8}%)K3Qc5s!>N)U*jw6H&h) z3b;S_+x=(%pC!eTP#jT$W#G{t*^!EwZXW^3=hMH1;|uj#hS<5NS?|<8UBGJ zt!r!B9{SPgEzmLDJP@=fT+zDtY9zTxrgQgqOTkf(|7A9An~Z6!Izq%7SyWZ!s5KR7 zb1$dp^}k($3F!JNHas?#8-(CI5}br-403`X#Zidhf2%YH#q|Dr+UrB0J|!%RtqYi< zDdIaDZ~t3c8e^0w!D`|q4HscCZorYC8GiE!h62Zo+DpdNr}-x|{O25VtHK`Dfb{UM zze)!OtJ|B1&r6e_;*ekb`xF?!?4s(eTEiF~9w|&}ZJ2&6h>`g^d&bE%&-Krhhe`yE zLTWnXL+0P~WxOBv@}Z-=j`ff|bEc^t(-^hob7~mxKigfw2Gkv)v^dO?wEWZ{Pj`G& zJ($ZY$27hwI8uD~Pje?0Bts#@9W6rOM|owt{4KACx+L|ci>x|4U!3|A*~)(o`2YvT zD_GOT686e+ML86^_Tu6bO&+GP>#q{U&;Px)uwnT0sT(Qc9Pvys*mA>+xnM@I)%z#@ z`wb*8eBUH_I6s|)C-5EU$0~)QzzhH;>1eCf3H24~{r<6YOT|?2oDQnBL+`a`pBCBq z69?E-QdDOLj1pQ{A73jb>b+kKrJ?2GIeM573sPQ~GQFr@>zr(ithsG%Fl3eQEWYRB z0Y1@l%K7duA|9UgFo6{%C8?aX7ffNK#{JMMZkt0BWU<~xmP?zOTUuGxt>9kr{wyPh zIz02)i~WdBI#DGRJ0r`)Iqg=eEKnGKGGyHX2?Zr*5abg*?a!qx^Hul5Z~domF+V>{ z-Y!oZERwgIvo)AgzgM5NT7>TUpUPPe`%`*G&?t3Q(bx{Phbt3TG;CDmclixaZxXd{ zTt-@0@E6FKDz<_O)y2gzkuN18W6?Gd_o(lzE4kS^Mz@dIwfBxJ_5o&-$bKjNz$8oV9{!h77P?xIae zbIaE_Dt8p4nfQ-OF`1p-1WQ@B&AYwIo8yufIZoXAo0d&Lr6t%t9VpX#d?|lu&lDq^ zC8z|Is6~t&AF<`_7|DG}Hw`WM~*NGJM4BdP+0d#VKPS-$0JH8X$k708E%qbcpO>v(-I-syWtN{l_%b6H676sE z^IM_U{EAk33=M%gz|cb2u1Q{BTjvC^ad%m!61S+4u={-fo=ziDm4Gt1h=|?2HKda^cx8r_(^Y1B7$HF!H67WkJ^0rOsC1za|m;icx z{VaLIe>Ze!sB{Uhtg~*t2o{YNJ*&RBOsuH%(;8>=gD-SmP*1tT>OK{-mq#-x=qA@A z$bRpDs$uMdCHjCR-6%v*ES@6)%dTjApsJfXjO3)io>W++UzjOtuXNjKD^xTEuVg2P zZS=$)J6&4-T;+RJJ5ar9<5PcZ(sZ+R3S4iMd5(fcDs>(AR_XGU4fo!)zJ;aq+1HNV zdbnqmicNHS!2hcJ^GS6fYrbB-VNj@@KY^^9G8!&E?iqnErT-bH_PdC?pz8H0F-%Cc z1h1-#kH2kD{;3Y(@O=Q(A1m#8w`EP1!`SF(TRc5!%|RIEFwyyFgK>6Q6eCR*Qta2& z0zwGgw(NJ1cb`#2$qkwjg(bnnT-VeAwk???O5e^LXZOR3pA7@8oC;(Q9e6+959{vg zbGX>??(v!IO`(Xw;8M38x%Ms*!?saUI2%6(C``2lI_67=+c|Kw-!9?@-_~-dcd%wP zJT`}QALm_sSJ^bU09iJBFcRZh%4=LSb1@JB3+xptv|%GAeH3pQ9Es0(qC((@XSKRB z@i!slOYBuwWcH**!3KR74%T9CLYoL(gb2ob z!0A_)f_8TK$IdK6-(y#x`;Ow4@yPwqwN^NQZlAgjwwQc_F0zHi4*B!pn^$1a^zPQy zG~mXgVLfqZ+y8w3bh8>V@%)59&&8#&K}$n31(3*M`}_M?TB9T1yRqB8;hS0G2h5gg zX}tLPT7ip1M?P&OsE8I9Dx^e^3-Hi$J*bQ*ABGDnYM%!5pTv2`Xwz0R3UuN38-!ck z59WL8;3jZSy*`%FLATOh*MI+}tvAI}2B2ul>y ze2+roT>yzuOHt>bPUcBR?cF}psrmVdkPl(YQ>%!^r1RLYa^o9t2JDPy()qZ3L4P?Y zttg0&R&+u*_apvnw(Q(%MudkPwa_9XEiE@4Cwf=r!dWNs_HEw<**8Z-XFd}3aex>t z_#KtvxcgQC78_6UB8k{N zq0G;!jR$jOVK8nmt%Apb)w4Nau}-GX>81zPyQ>1e6~Ma-Um< zr>8l8)${Hk^_>Mwn7Ci*z-bmu=f4od|IyPU@iPtqoh)xCPDqA<;V0J41h+v%8u4o# z86uVhM^Hz6Y$u_bi|_j<(|x+*4T5KdS;*U&YDomI^PvH&18s2A`dzf4$GYdiWUera zep5KDp|G6SU;oxeMuB*ruP04U@4OzC(Ji-sO?!TCYSIy~8jR?%`CFA6?AaQ{+7b^) zE6M3d z-MHd~-TpjREQHdg%BfDj{rTrGx$kX+B?ntOUr5%|4Yte18uVp00~-?QID+kJ1EGQQ z6)yL-s0z4GVIrS!bu_UmPUJp%q0vT?-2d`j`{joJUNH9k)C^m3l1PaLHrrLnQl^`a zOs127@9o(xxAWYMdP)w*iA4+~`QvFpcaU;UU!P2m&T7OQsaZ~$K)ASmQ+dR^tN_lBum z?2Iv_@P6(UTYNZqIJMduoZ>_wobc4EH$^Pht(EDi=fDbUo*{sVT{Au@A$f~Jl+Fcc|ROlLi=M$spWF~0O|y{PDwvV>^DeL_p22aLDs_&IBvgJMWncPTqH&0;hgyX zIV{_9B1>2TiBds?i}OW+?DOyl+cXRB^7~r<+kkr#f1wEzX4k1r_~PKc zch;1CmUA0<`Aq@znP3Sv0(d`mOUs(tnxArD+Qf{EQN52)ukxBTxTrq(N58ajNs@w2 zs%z@;*XO6b5d70zhKWvk3HsC!Vw7RVzq(nD2ypzjKEEj#G!lP||D-}8B|+iZbl$`u zs;;ia!6c(x6jv5>g^hz>>eoy@*pA~2Ql&q zWbZ+yF^d+@xyLN|4%Hj=i>b!Xxcd#4`}oae=Y(j!IkI1o=v*b<7_v)>a$EFnZdO6- zNk_^_+XZXxZxZNaWivxqCVXNZYbjoR|MuW=Lpv+^jWy&@STNf0x1l@cEb_$$&o|pu z4Iwg!30JkBeFx|wwy^N*x`IPPCnJQ8_>LE|_ksiHs@AL}iJQa72(4JCFsPh=I>D+M zV#rv(B8e4mlxnxod>>Oq?z6Ag6m^`CJiZ~H;jN{aqtEH)J~{I(nU5vsgu`PBnU@DAucemC zb0L1wq^?CwA%{h55o>1aK(+h!+h5H+)}!KPi()LaC}$G%=~uc0pfpoN9Q0% zu*2>e!XU(6+~E75jM#d;P`bBp_^b>-@x}c@qdo)2jnhZ-qUwO@<%zK?J{3i-1_K!t zb-PZ&Je9~#&xl6yAB97c2?qM%nkEJ3OgG#T^aU`r*!@W6Y}8EC%$1|;K!fg%F=Qm7 zzr8?(b3)e*yX%X??m~`RC$Q9Jw_IY^B*4d?Kn!hZ z`^lq47KndK%>oJQZX-GmZRRG}rbBZ+Lxzd8a#I#bu|kxV4axgkNOFvLwA`vPj1lEw z%)OHBZ=by0StPWDobdg7&%!lQ+ReehLw`E21MRcUw@86}$?h;60y1U(QKIx&Cjp;Z zc9xGF-_Lb#uRbYN7%T!FIxuD!Ion$4)iQnq!_WC>rPP7S=?!dbZ}d;9KKf0@yU3!F zKy|JHGWLSX#!bPkxZilp!% z6(y=QHfVrIPmQcXrPSKSU?@Ek+ss2n5u54<`CZE(qQ*@B6t%tWZMsksJ#;~{amC+D zLc2MDXE`aSt|^lyb7VqS(iR#ml);3$zOI?Idmr!H#&m|n_Un}k>WrTLcsvsqlek{f#}rh{x>%O`gGt>{6WBdQBTY6 zY|10YDej|Ts-Vhdg)Z!oxtYqmA>EpT`y$Xzi0__U*^7D;jdK@wTw5!a79}8xXV~%T`}jo<0&9LqjM= zqwTyrFlyNzOJkvDP3BE#NvtIrPLu;2Azv2_NawI)I{LynSd395_+)EmN22V4Q}B(W zZ>j^k)U?hhRwS^ouo$DxtHOJoHdz`k`Zp{Ex@1L{-A_qfrb2d+r7VM&!YpEOk4Bv} zsbQAn1v4J%6rcF9c5^6eJj@*Mlqq z#WTU#9=CpKX1Jr3%R|T`+cG{AXuN68U5MomHxE#j?sK5SaR$b##6^?@3uv z6yS~8D;y0pCF_+=Z6QH2F`0ON2Xl^s=eo*OGj&gKmD$fjS%?@R7=&OJD`EgVH76%_+)lC_iCo&GwgsyJoTYYx2 zw#(Py&L-e|lvZbdEFkje(&!qS!A61-Bi@AyZ5OXXI2nj16E=O0I)wAJ98>>CZb(xn zh5b~VQt`#Sq)tB3R40GE9iF)fbp1?FL@Y{@vY4I>EAG&)d7| zx)#QbT#HW8SDpduBVi(b>}9!w%sU&B-<z;d8JE>bj4LoSl0k*@BbGYL@XrixU@_=(p(Cv20s=V9Ll6XW6 z)=yOOR&b#+0zatn(UNwCLRADtnjjxOLjSMUkd`0!X>Qhr_qhfdQBlMFLvO=HpK$aO z|FOLV2Dd7~lT`Hfxz7hZwdo_PfTiW*Pn1LzJGmsH7V#R$b=+pR^SC|3=jvJ3Ha^uM z&7nFCp^LulQ;adid_-FP6^tU|x9McI1cD;TD)Xh&DOXoVU#0{+TMuFrmT>K(Sp6JZ zld8XaMCO}R8B{gdALVKZJNnDS31yz~puCIr)*t!fS^xWIe1l?N4O*P6Twy^$%9;kw z-5s3Iduw=L^d9{|=n#Bjo===2zP5)siF6thlyWmHeL`lmLfqlu?UZO}hfhuJFgy|` zsM1P&!@hEE9+F-Ph=HoQutJFJviA09xMxCeumtZS_JIIjPJn?5IL9a{5x<$PcByuW zW4qjzQunGii1uk?2)n}U8OjQMS{W!nNdvyZF%blrkGzEq=BWz^!i)JA7!mUo>+(#k zq-n~?C%>XxrH#8nfhN_v;9u0IQF0%)s6)vW&k?6G7L4f-7wPoevzF<)5B%y7g}+p* zp44>G7X2z4@LglD!yNr(0t=i;CHIFc-^fGcv2gTyk$yG~(H9`s!* zqwH<3F6(jvoQkU-T2DOL5t(StV%WGUwh+f!wu`spdKRkLqVUQD-xDWr{-o#}w2^U| z!Q!sSfH73n)afyTL(kh>9GIM3iSfLsy!+muy`~5}*rBP{w4p=e5I4LP851uz0}mQD z%lrysGI4)BJIjVW=KLC8rEiN?aj<<8aR?BvRfyW+xz0s?D6y(iU%7%y?CM)iD#ajx-_t)fn zVr*>?Dg%!x8kb!IckpmhX)rb{3T)T{r0wv;dw=Ao22EQkI;%9FU+2>`vGCJqCj(&F zHS{>6aiXK6(*PGKS?wyHe5|Bk53&G(Mf*k|jCV%Tq2d(#2*q-SZvHawrGmpW_mdyeHL@n#xRZ zDZDw|7fV=KkaN~PNnyrUNE1%pY(>5Q2gZMYeHPQWDEem=4%$?fIc3C+DlkEd+a^ z$qAdsYC5>%#qS*rEp3fI<@U}FlAV`V=->C`@DhxIf?=NK&A}u+5CsK=6n2GM#OCH( zOz1%z=9WQ=fUE8aZ+eauaYCV#-(Mnyd|{Ar(dp{kzjts&VqZ*g9 z+F&UUF%RMAJ`IO)cIX6~rx-C< zxRd^AXZrp7x0;@pfbVlBn-mnQP8HC_Zz|tUB4cB_}_KMOhg7(`>w~+UXJzKE(}FU7;_81h=iH4C+-kF~W5sp8cChnH_wz|38 zEZt9do9QmhDHwOs;lyd1njYaJji*hb@hl3P|b^*Vd^?=j4<{-lMBL z(_QU2#0WdS1bykJ!ZQ^*hrDr_mXo9x5i!Iw>l^qDUTJ@LJLa?-lmGm5KP5^hDkkU# z8RpStb6}b2!k|V8ePKtD!;!Pd_QlKWT_91^^CGf)cCKA=SZs*FV=+{Gx<@bA9?@0> ze;zAwZZy0kvM~X2cU-n{Q;64T-hbHq9Y!gVBpM>LwHJli@=H_I2#bRo7-5OEOLWn8 zF|G<2-%jei6`v_qA@_P|celLB5}s+WBfkIK&)pIiqHSqe@@SfuuM2hdo$DROXD6rX zV3qNx4Aag$Dw{Zr$Mko0%#!a3sQP|M9*3A&B1#;MRu{{+=zg$)p^ zqu@{0kZQB)&t*ZpZ}%M80x0C(`mm<-DK$ZK-kWcHS2 zf_a1H92ypG#2`F(sp@aOC~^y(cG2{X0ik*pT$@;LNBEl)in$JO4bonH^TYnHm8qG~ zPD_;h{X4pw&{uLol^he~wHEL|{`-J~oAECbZtp`)&eg586tYkH1n2B2EyYqi>y@lrvMLHdh~`T6j^5nlLIXA#O~c<4t)s zc19%xa^>ikg?`~)9bw3xsdXo&eU$o`&@}E(qB^1cx zKBo{=C4pxgq6{61+B;bk+y6HNw9$*I@y)n)pmtSZOJ4uTiN`Lc!m|o&nOgl6_O)H~ z{P5S)<%ozOe>jxQ$3Nd9h9af1-YBgbU0@vGlS?sqgisx`485xu42@3KAPpr{pSA(YXJmAyj_P71D4#R*(n7JR@%B{L4!DosKO!DXIkz{+S20 z7D*_ieV4t1m^Z(J$ zkkGHXvL~p7o2S~aQg}(!@xaH)lDmHt2|xeyXp`vzRe2fs&|dsAtIt`dGKSUZW%0h) z`oF&osWHNpMsH2h_@j3(dJnI-(ntS;U3YPWiy43V^maXLGv8<4#udfXm~7~uod@U&VJ|BTF$5-)kBUKQBf$U-Q%T$6F0r+0OMk z==INJv;X-LYr=r8KSti)3~x_s%Y5O$>9aQSDtV1Xeb)Tmw0HNhQ13W5M@Fld9>5+~ zq;C@ZU%%QPWZVp2)CzI-5p+)Wf%e?~b;S({eg={yWM|Dd5Xe_HJ2g>@;lrR{F+?KN zKfLJ<(-8hO{___<#~C1W2P{a4;S=O3b^nopI3LZ|rgXN?1_6vq)NT(_EFWxR1E9=(D7 zaa!d0+>IHT>G3@EU2*F8DX}zq^r_fWD=o-~x=+6PojZI$Xs8&+jpM}ya`Q1-0R;kb zRf?fklG}-59&oB741KR$wet;ijTx~-t{q#~y4s7`3();hwTWC)2718*Ovjg0#m!^P zaTey;tCND5j`FGGDJO+ohKmx_Y60BrobeKQK~hljPB2#V$d&E<(uo9^@(C4I%D$~{ zRZSH^g%LPF7htYNW> zT1cv$s$J|mMO@B)Z<;?N|47HoiShQlEn#Qa%FWI8yN>{7QA$9+aNc~AIHMW4@nl|{ z>BiXpI9$r@F-ak?8U3w-{~ctu?ltEUpcxCfCP*YPF)>+l3j;w!8}6&VDsK=_3+Br8 znm6V>%M4nRfy}c!HH!?&I|PTjt-6xTLL`*wV{Y2RCa2O3vD9_3(V^J&aBiye`3g3M*qw~Us3YT@?QIYe64L(dN;^ZYT3}U> zqh|ii#|GP6WHu6&w6ruV*mYff&7*1f+FEDJ$6I7efIl_#WY(_>@6Ym#0I^~G#0ZTK zq0q>;Dk4$NRbcH12cS!8@dNa*Ov6pWRv%c^Vv06nky{Qq+A@l^X=D#vDg>&fr!Z+U zL5~^85Mrj32kw_NNxs~`yd@xPmLVB#zCFb)_qtqSzuut{8C^*hi|du%%n_$Bu4gqT zpM}naK7RAib$)*CGu@ULVhwmVyInS8c*AdG$$b^UMH4yrMjioh;$I=GYjTaoT6e|( zXS@fDeDg2sTm*JAYApdo8K<9-Qc+VAhg8TT9$*f2ftsXK4X8KzM1kpOdV}S_FSDj5 z|9dMmU<4{)qpW202#2qFbFxe?!kRVCf5UwbL?>9y{+i|fJW3A)1tx5HeosILXixtx z$wEQtrYx@mh8jDlQ7S6ttVzh{7YH?vvaJ+0opKHkPhDxxI@nfO4XpOBh>-A|LH!r($&HEX>JSTbpzdJdjOV5RA* z{@R5}UMJMD{BEv@6DkmXbp^87p?&&XHqTvjb@&IozV-HgH$P6@))wXJU^XGW(Neip zhbf5PeaVC9-Q`=atE3d&EsBq>4@jJ zd?`Uv3GSCCV%`Y|C6D5rL2U>iATmu~(!b0y`-F@5_yElMfI!aZFhZ7N7D^H2o#tsU z7~_a@m?@E`3b?z$gHyXxR9P315!GI&zi3d&I7fL#|8_`v%d1S}pgebry$QnOJ99{x zPSVyN@0nUi2sQx&82D6W=aUREuYKN#&c_ExFFFIStoOY#ZdVeq^Cls*LTYem^=D$t ztpimLEDp%XK%b5W#Z&c?C&=6QURKbW^y@!9ZGNuqCHIjLlS_(f(_z4Ja&@!~R+M0dEi>8;RqfykwS- zuaS0G-LUK1jyh3t6eK_nn#AE;h1v13%>Ba{?<7Er$P$jj(J+#PL^OLyi|yv?@kA7K z)}!P0B;2VpFVGwGiPwbpc4ub86g|0FaiX3Q zD3^OaBlk0JLG*BFfwBz%dg7pJT|+4~$4OjU6y8Wq^87IzIJ_ZcmeQLnJMG9Xt!PaO z%@&9x%X$Q54o2}+HTbXPB$Rw8O}?B-P?^pkw*XfPJr=_|yO>P~g!T0HSRMVXp2@eN zYq@SA_9)y$5^z|$BiP+k>5&4ePPT%y+Kzm`r~BznGVcs!qAytJ#4?DLatSAS;&f<* z+D6_{KrF90TABHe@x1C+J;u=UNvUP6CyM477{#dq_U7+x*8b`EX5KPTNSFdd1P86Q zQqBubRq;e25E80~3q3TBs*J`OPL6kc@p$BnIgK65G9e_qf4eWLl*f?pme^OvSEVZ_ z1f*_a?P!X>==9EDePVsB4ByC5ymkx)7^N7xt=$;p%K2fRUFzV0BmRXcGMBMfpqU4aSD^}kHab5Jayc;e_m zw}gbih#r3zD-SYYJu*7VjAs}VjBp;lF1d~9&RO|2ddt@`l_{v2NIu-y%tsvRLW64X zuirg5=5p=Q*TpNvaoFPKrO}-R@&WhHLwws2Wqh#j7<`Qb42<|KT0$8O_H zPba#xT!d(*3)C?qaO9eIkTU+4MUvye2#Mu8dNV)XDnG7has@wv-$j<+}*4QDE& zRd0Gv91*A6ws=3g9hSBaxSt`ius&EiT5b(Ausd^IfGFW5PL%q)a{M-kwg4U$8b&P! zB{QCAaGgvvCST$FimYawn|moihE(~D|A~uvrR={7Wo_4uO?dzh_rFVQ5ngz4vu7ap{A;iSSorTG-AdCdyMaqv^meHoK(kP z_u>RYW%=f%a|=(#{;;IZL2-loJp^C$gnRZ@UZXeK*B)d{rjSh@kM4I%p=-oGo}6A6 z0sjTO=R?r81-I)%_Fie?9~O9(at#R$ahtzX{e;;ge4v~mHyPKUb#-=LbI)5$tQj6z zP)zY};ii5zV|)%qisX-HvPk=ySFzX{5vGk6X4SI!C^k?V$xDE+*SNj_(Z-F#)l+zI zF9Su?pF%u7`#+XAe3**Kcw=3j!R$rIA*-7sFKH-SPV{OBrLo6e4}|L#=nmk*TvMqE zZoYl1FOsEO$02EK(eugYKj?2x5haBJ97hYa=uL*C5>o*~+&}Hp>wdIhV!${b=F~&My)7B&9s`B1=Q)-{`5w}#T>=t6UA+98D z2hmn%5Fma@j+o}M_1N4pr4L>=_SG2_}_2C0XP@(a!MO{w%{3xORI`ltU zkHUY18iH?Lx-+gdZnEiZ5aVnM8BZPo9`2?$ekxDnFn`^@@hi+IoRlA5`qm?Y-d8WR z?ZUQS-I?gM9dg@=s`a2F{EdiNJdb8-NzIl2d%-^P^>5c_AUIEB7evHc#c%MZmI1Cd znvz3&0_fCIXkb`Ls3LmbUR+!NFX!~^-BBhFi~b4Ck(Zz;nluGT|7>$tS3B!{`bFyl zd5lIz;_%1gD;`_hl?Vh7~JZ=c7JJ(v^gD`wg_e-UGe-Jm*% z8*Jv^GFL$fr0R+}6n~mt8(OqFx1+P%m{>foW)iQ7D{e^RV%dE4LOc=&bYW84{|HTp z=)HSuno&eTNXS5km#t7=uhI8&2=II5)YbL+OgmvnOG$zF0efTu7$s3ib5SxZ$YZ5{ z-ze$hW+n@2uy+_g7<>!S&}{;P!TZPVD}{Z1u>AN+BZrBr^)@LP7zUMw?edw$SnulC zW(aS(z}iH4PECStN{iZ_Jc=WGZ8vV(+M)$<_>n+tB@kFyoFNp0{ZmbZ4sG1Uw{Rat zyRrX|cfBj`{p{+eX;f!7jR^vL*OG}JvRrdMkN8Z+$@C_wee!oA;XLIr&E_r!BaU9% zS!gbHas4xZxrQeaG5;M)zNKY$(F_wq@QJUJC{H+Zen%$J`*}MS6=$ATzJJXDl$ew} zwciHrQBlR1Oo3xII^$>YId+XpcBx2`DGnb${9A42GSR+S0`z(_wYy0(RVI=Eidu?t z288gbg`-+gYaHX4c)w8O`|WMbmfx+dSaB~|F=6sOt+^HDn!G<`bKadg-)4F{uTlKP zY7C#jN5J*ll8tBPdFTBVAK)%^e@kLz?H3;sU<(+k_i87SN7^g7BO{|Mr}N{cfS7kF z89Awofb#vwuYv{^O^pw>SCT%1)_1XFV~K9^3JM7Yv#Z)ZMt&=I8!N44?{&g%ly{OQ zqkkjNi_pgR1m5a0Fc(XFE|cF1aVNB2!2Z2G!#XToE7O>-6+`{jpdhA~`S=Y>g#E#v zj1{jkR3#t&n0H5m-vuZ>L5R6$kofnok#@Q%#~p(27j@}ggYD^6Bd!GsP=O>%XuSR(Nk zpfDP`o6W~#Y@b}Ea>FOMkdTlFe?>(Uac>F29Lm4~47V5GP0K#J{1WLXyqP8^Ga~*k zur|t=^kjB`P~Wjq^=)HwWA9g~mvfu3^->9CNN9*WAM0M1$@Le5oPY-FS>U}_&+u`y zKho0VN;`GlB*j;JZWBMr_Bl67zZxjk9YM~0=#SY9k|LIWn)AJ*;jx=eyuaMOpKfzIa09Br{H8n-(w8Z~@1|3M zw!OV8w`9NEBCq?-?m2X!!HSxV*@rbQKE^a4xLc0>hdVG@+7FrG6$n4St1}a-OfBMSBeVMx5|DJx7$N{HgkA)9Pvs6TN_718ldtgyvDw0ffw z*l+TGzdAJVMvfde?YC2ak@^!EiWIescQzx1V}~d278(JqxgC;uHlKKB_9LG#r0Yp@ z^uh-8gVRpn$#Yzvh<(i~UGS9V+Y^vp?peb6?YZ?xqh%+(bieTK0&zfQ)ngO2?z2)P ziYP4|9hlr=4DU|c$lyI7XEzQ-4MBZA+xVTQ#H@FzP2~L|In($OS4b9yR`^PAS}iuN zPGiyj`RM;HFs_a*&()}+c%|K2tg7sDHp#1nJ|5XDWsaPaN>R1`Vt~+q2sEQ^;&>@3UDRQuFfj;gI90 z!aaa4-evhJXz%uHQ)txMMih8IN8-8tLR}g_b1TSBb6NH$s7#F(XPw96pAU_X=aE0{ z5qUZGNIeTv)x-&3d*6ezcR;yp4=!ngtAf{l>4NSeg-%auSu-y)gl@~G^U$gY1~fPue;@CyeqfGJihmehe7DiW@n4SH$%z4 zCG||T-PM{oMYx_sJl$L6LB$s>f^J4}HCESv2x(;f;7 z>z8^4tBBUBvYlA6&?2ccqgDSH8nvD*3Av>XP&WiWT^L1I;j#KCO)oZ0u_D+w>*xE)#n!(=`8)hC<7-=Y(ko>`|@59_kDy1XwgO-=5A@U(pk=`F;w zNu1lwuB^L06*aD&qj@fq(*+(S8_K$^${Qp?9)qTVwbS4@oe7bfwqR0WFU=lDewV#? zmh7735l6ixp-YDK##N4Vrwqmu*Tasw28UG>yXBS-pLDnyZnveD6bGqlop)K8D1T=1 ztmj5(ZGJ}7Z+O~xDK%O(iy?9igCj{{HDGkQK3TSC2XZU5PDO_1ergm;odle9eyj3* zP-mGjpIB+%sGJB~f)tKEp|JQkq)3}-=?%pd=?Iex!K3w_rT|035)h9U#t!8Ew zY0mf8!e1;rw3eqLXnlkWq51McO0N5j=O1OvjZ#%dmEQM*j7;cnw&@H7}6e1W*ogm5KFT7Vb z&0r4vTjMJDbTs$zx2TAS@)5YX*z>jufyL{|0S6aXTJaMO364}$3UhA0Y@8ZkES6Hf z2}VXxsEE;8JynVHR4MAXB(Ga{90+Jv6qk#ss~;WH<(=0 zP@55^j!we&UK>(HqUhulA?sW_VMaY{^0@N2+esfBcGcsdQ*E|OR>qJNDa5*D6-DgY z2l+f<=&R#w&*Vq&9R>Aw{6~JfZOVx_(Pt@cTG%`?9Zi^^FF)lb28(vHe~b~Wi;;EM zzHK^M^^e#4LWJF@VRF_9rfzv8cb=gxSJhu;@$Gol)#z zpR@guNUDLNU4CFm>_;Z&VZz4OQso5%Ys~l4X;WsV&{_6=ua{;T)9;UUK9^chZo7$S zvvg?h#^&ayXLI6-)~X`$t3&A_B-ugJzl=$O@@1-uC*HW#$uJHJEv`TQrgj2^{aOeP z)BbuyXJPirBlfF*{pn;%Zi&I&e8Y{j~Tg1Q65zC<~{s{1-pQ4NbZCcI4egdi}%O)+ojCit#`I7 zv{43Ppt8KkHq)RvN{VqiI~0w~+M{A;{Br(rg~J zGw8jHdgVEfBW-#z-cvuu&}&Ihlm?TbLGg=oN`L35Q^nt^W(p{K`24P7I<*i7I^Q` zFOmt)m#aiVBs`QM{gjO$=scx5!$Dc{xOXh6w-8c%ZRmP2Vh`eIGE+FJGpg7t!J1>^ zL1(J)H$j&=>$o>(8C2=_+lVcNW;h{`CBo>2Od$XD_2;?)HBIj4&aF z?-78cXk`__Y}y=k$miGvMSEHvxT?g9YEtf6Gzu11=Amm!LaBRLt+isKSPnzysIAB zC(pAW04XV%dE*+|ef}ZwrlPffQW9OMU_!faa)j+k4y2k5hq)CcD0uK4M~ND%cR!&H z=AefOr8aWdoDxC)jX)skiNMg|K`SpPZy?!RwNtrzCOKuSm%@O)|2=wfXfLzjkaIXf zq~%~A?U&QcMvs4zI@WkWe=94JN;Sf?2X%GC*v%Kfm#uQxmV1+w)B7Lr9_-yI;LG}$ z%)U?J`tAjzlL-w<;Zbj;jv-T3I4+?(g;0JB zRXj!UPHRv~?hWbrB_>`R2wa`WnOb`#`t}hM`~Yw`Oz1%N}ZjI3wa_gLMc& zV<7ki?BS5v^b#XR8=I@U-*1qm1w*2_$a6k0r-x^BF5 zawF=hkg$(~+#=)RQlyE_V+hQqvchc60*#ARu#B*_k@3PPP-l2pE9yO%vKZeGOV$va z_o9(3KUXC!%%K**K4)$iyn`&KD4A5*X|s=zF>KY$AQ$aAsN^X}Oi4I4z^ajjwYNV) zE%TePu{`=xE%Wn<2LTbGKzG6cv-if+;48hT>L&=Nfd#V4wMynS&a&4CyWz@8nBX04 zmhy#u6=c@a^MRj-uHe`gUG$U>;!G4=3LOwb{z8GR!#?KsIoaz$@elUib_uH}+nIdh zc$0FY#-9FDrql1S*`#KQic+>s#nt_58f4KZ#6q+g(nhELGqj*^cVhl+9@M`U7x;wS zgci+ToM};C4h;=MbQR?u#krEl1m_V81B-Bn6|lIFhpq4vmg-hGX1JDp0GJ!cepP`niy7=$#efh^L}{1Fds_^Z)yO$TMv zbSjtEE~DnHWrQsJoS16*2-7l1Jgzgy3U2soT<^3n1PLOs;{!9h4Fh=Y4Dp@mqaKLw zEGz1w<Dm~77Az~pb z9*dYDn$RPPM*O%r^=cn0@$8SA5onA-z#!ny2sjB0{2~1rF95)jd70;c!1-!mKLl{- zNUQ2Ne~2=fJbfd;O~t07y-ws7^CA=`CnYXtH1H8Pi*4C$p4||01qD(}REW%%LEMlR zP%y?IaCsmAe!>(<7*B(^+(U@6j2>_EVz|cuDbyAN^3w7eBCFZ01~Ov$@{mq+-C)A+ ze2lg^R+SoK5HJW_9tfb1=kInYkJmEE`8Mdre(CTo ztG+ZTA$i|J9)5PXX>)J<%)LS2@<0IZtl%sASBLD0sLP}7rj|7Xfio2+B`z(X_dWc5 z`Ki3I4FU!Me@6f#FPQhjMh`(jE+(-+Lty^i=%#)K0fT@+z#kC6HWVN+tl6-4Oyci> zQ85h3IDh_7SyKmtfI+|@U=Z*h1Y{DyF?<8g3b5JCUfK?~PLTUgwM|V70tNwtfI*

rt0fT@+z#!m12q=lULPA3MLsdRf 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 G;Qs*$(^&!l literal 0 HcmV?d00001 diff --git a/docs/user/dashboard/images/lens_logsDashboard_8.3.png b/docs/user/dashboard/images/lens_logsDashboard_8.3.png new file mode 100644 index 0000000000000000000000000000000000000000..089fd5dcadb0c293d6fe06a073e60668d96d0e88 GIT binary patch literal 143659 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%0AT&Zyr7KZ0u%0sIlfqs? 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%0A#vF_YVLMP4vw6-# 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⁡bTep!Olr3d1xkXaJ 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�X|c}lP8;JC*>PSzNvDvwxvI*AD!)ghvBQgA?@ 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

Yi( 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ℜP4*;l&^6R>UlvGa4Qlg{8()dGVEfnx?e0IAV-+ z+Yqq21tHh1V!@0(&JOK-pk7Lga2^X|GE_`E&3sOZuWw|hev(hxr30EPPbp-0o4wm+)wh6 zj*~RHg6HuTYz*CjnusQA14Tte@*BVYt2lab4l++Qwj`D+j}3kz7(raXfq($(9d_y!=6 z0wvqt;1KQsYq=mBv8S3V7ZiMtpK8&ieJWy>E>@8kM`7~5d+$+LxiHDTW5>2wNfU-q z$=ZXv5W6rQHa6DlRSIX$w#sVUZJ32~K)j%tt8{Cd8gQqf+umpW#*LILi&Jtgt-{EQ z4wjpXe0QytTq-zNHK6c|6d^jef&tTZAwO3apf+d{P04sT>#KyxFoxo2;ffoG;KZFD2 zAnp7aey*7G4mp$HS=a{2)sakHWuub7l`SY8fJ=ozO9XNqY@<8O7b+d;UfF@vQKQk} zGz?@+h$aS*9zGXw9z1+5_TU;$<$)@84llzeVbFto&V;2zt|YLcO>cZNY&1&P(2f$)j8i+!m;e6;T*Opv#nHCWGT-Xe*Dxq*|U55 zqGT~Y*_WT6Cp&kz^s|tic=j`J0S5vO1RRLR0ULjKS7{aQSIo)D(WJNs?2-x#o7S(< zfMfmR-+|NHO#2l?hV{sck?@6w3%35Z8h5PqX@fQ^Sv+Xg;DbhKi4 zvZq}QYV=NFrXTlo?ZOtrN^CJS)A7392?`m-0_I9i)FJf11ssUY0UMu+aAn0B7?I%C zKCS{$5L&;sUT3(O)6y+~f~L$ku3kO$jlY%0AKxqI&$r1l&paoe`|PI{Bws9mt6Kb- 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. @@ -34,7 +34,7 @@ Open the visualization editor, then make sure the correct fields appear. . On the dashboard, click *Create visualization*. -. Make sure the *kibana_sample_data_ecommerce* {data-source} appears, then set the <> to *Last 30 days*. +. Make sure the *Kibana Sample Data eCommerce* {data-source} appears, then set the <> to *Last 30 days*. [discrete] [[custom-time-interval]] @@ -55,7 +55,7 @@ image::images/lens_clickAndDragZoom_7.16.gif[Cursor clicking and dragging across . In the layer pane, click *Count of Records*. -.. In the *Display name* field, enter `Number of orders`. +.. In the *Name* field, enter `Number of orders`. .. Click *Add advanced options > Normalize by unit*. @@ -63,7 +63,7 @@ image::images/lens_clickAndDragZoom_7.16.gif[Cursor clicking and dragging across + *Normalize unit* converts *Average sales per 12 hours* into *Average sales per 12 hours (per hour)* by dividing the number of hours. -. To hide the *Horizontal axis* label, open the *Bottom Axis* menu, then deselect *Show*. +. To hide the *Horizontal axis* label, open the *Bottom Axis* menu, then select *None* from the *Axis title* dropdown. To identify the 75th percentile of orders, add a reference line: @@ -71,13 +71,17 @@ To identify the 75th percentile of orders, add a reference line: . Click *Static value*. -. Click the *Percentile* function, then enter `75` in the *Percentile* field. +.. Click *Quick functions*, then click *Percentile*. + +.. From the *Field* dropdown, select *total_quantity*. + +.. In the *Percentile* field, enter `75`. . Configure the display options. -.. In the *Display name* field, enter `75th`. +.. In the *Name* field, enter `75th`. -.. Select *Show display name*. +.. To display the name, select *Name* from *Text decoration*. .. From the *Icon* dropdown, select *Tag*. @@ -86,7 +90,7 @@ To identify the 75th percentile of orders, add a reference line: . Click *Close*. + [role="screenshot"] -image::images/lens_barChartCustomTimeInterval_7.16.png[Orders per day] +image::images/lens_barChartCustomTimeInterval_8.3.png[Orders per day] . Click *Save and return*. @@ -110,7 +114,7 @@ Create the 95th price distribution percentile: . Click the *Percentile* function. -. In the *Display name* field, enter `95th`, then click *Close*. +. In the *Name* field, enter `95th`, then click *Close*. To copy a function, you drag it to the *Drop a field or click to add* field within the same group. To create the 90th percentile, duplicate the `95th` percentile: @@ -121,11 +125,11 @@ image::images/lens_advanced_2_2.gif[Easily duplicate the items with drag and dro . Click *95th [1]*, then enter `90` in the *Percentile* field. -. In the *Display name* field enter `90th`, then click *Close*. +. In the *Name* field enter `90th`, then click *Close*. . To create the `50th` and `10th` percentiles, repeat the duplication steps. -. Open the *Left Axis* menu, then enter `Percentiles for product prices` in the *Axis name* field. +. Open the *Left Axis* menu, select *Custom* from the *Axis title* dropdown, then enter `Percentiles for product prices` in the *Axis title* field. + [role="screenshot"] image::images/lens_lineChartMultipleDataSeries_7.16.png[Percentiles for product prices chart] @@ -148,7 +152,7 @@ To analyze multiple visualization types, create an area chart that displays the .. Click the *Average* function. -.. In the *Display name* field, enter `Average price`, then click *Close*. +.. In the *Name* field, enter `Average price`, then click *Close*. . Open the *Visualization type* dropdown, then select *Area*. @@ -160,7 +164,7 @@ Add a layer to display the customer traffic: . In the layer pane, click *Unique count of customer_id*. -.. In the *Display name* field, enter `Number of customers`. +.. In the *Name* field, enter `Number of customers`. .. In the *Series color* field, enter *#D36086*. @@ -223,7 +227,7 @@ For each order category, create a filter: . Open the *Legend* menu, then select the *Alignment* arrow that points up. + [role="screenshot"] -image::images/lens_areaPercentageNumberOfOrdersByCategory_7.16.png[Prices share by category] +image::images/lens_areaPercentageNumberOfOrdersByCategory_8.3.png[Prices share by category] . Click *Save and return*. @@ -245,7 +249,7 @@ Configure the cumulative sum of store orders: . Click the *Cumulative sum* function. -. In the *Display name* field, enter `Cumulative weekend orders`, then click *Close*. +. In the *Name* field, enter `Cumulative weekend orders`, then click *Close*. Filter the results to display the data for only Saturday and Sunday: @@ -261,7 +265,7 @@ Filter the results to display the data for only Saturday and Sunday: + The <> displays all documents where `day_of_week` matches `Saturday` or `Sunday`. -. Open the *Legend* menu, then click *Hide*. +. Open the *Legend* menu, then click *Hide* next to *Display*. + [role="screenshot"] image::images/lens_areaChartCumulativeNumberOfSalesOnWeekend_7.16.png[Area chart with cumulative sum of orders made on the weekend] @@ -318,7 +322,7 @@ To compare time range changes as a percent, create a bar chart that compares the . Open the *Value format* dropdown, select *Percent*, then enter `0` in the *Decimals* field. -. In the *Display name* field, enter `Percent of change`, then click *Close*. +. In the *Name* field, enter `Percent of change`, then click *Close*. + [role="screenshot"] image::images/lens_percent_chage.png[Bar chart with percent change in sales between the current time and the previous week] @@ -341,17 +345,15 @@ Create a date histogram table and group the customer count metric by category, s .. In the layer pane, click *Unique count of customer_id*. -.. In the *Display name* field, enter `Customers`, then click *Close*. +.. In the *Name* field, enter `Customers`, then click *Close*. . From the *Available fields* list, drag *order_date* to the *Rows* field in the layer pane. .. In the layer pane, click the *order_date*. -.. Select *Customize time interval*. - -.. Change the *Minimum interval* to *1 days*. +.. In the *Minimum interval* field, enter *1d*. -.. In the *Display name* field, enter `Sales`, then click *Close*. +.. In the *Name* field, enter `Sales`, then click *Close*. To split the metric, add columns for each continent using the *Columns* field: @@ -376,4 +378,4 @@ Now that you have a complete overview of your ecommerce sales data, save the das . Click *Save*. [role="screenshot"] -image::images/lens_timeSeriesDataTutorialDashboard_7.16.png[Final dashboard with ecommerce sample data] +image::images/lens_timeSeriesDataTutorialDashboard_8.3.png[Final dashboard with ecommerce sample data] diff --git a/docs/user/dashboard/lens.asciidoc b/docs/user/dashboard/lens.asciidoc index b062dcc3349ad..8e8ffe902a565 100644 --- a/docs/user/dashboard/lens.asciidoc +++ b/docs/user/dashboard/lens.asciidoc @@ -40,7 +40,7 @@ If you already know the visualization type you want to use, and how you want to Choose the visualization type. -. Before you drag fields to the workspace, open the *Chart type* dropdown, then select the visualization type. +. Before you drag fields to the workspace, open the *Visualization type* dropdown, then select the visualization you want to use. . To view more visualizations that *Lens* automatically created for the fields, click *Suggestions*. If one of the *Suggestions* meets your visualization needs, click *Save and return* to add it to the dashboard. @@ -66,14 +66,14 @@ TIP: You can manually apply the changes you make, which is helpful when creating Change the fields list to display a different {data-source}, different time range, or add your own fields. -* To create a visualization with fields in a different {data-source}, open the *Data view* dropdown, then select the {data-source}. +* To create a visualization with fields in a different {data-source}, open the {data-source} dropdown, then select the {data-source}. * If the fields list is empty, change the <>. -* To add fields, open the action menu (*...*) next to the *Data view* dropdown, then select *Add field to {data-source}*. +* To add fields, open the {data-source} dropdown, then select *Add a field to this {data-source}*. + [role="screenshot"] -image:images/runtime-field-menu.png[Dropdown menu located next to {data-source} field with items for adding and managing fields, width=50%] +image:images/lens_dataViewDropDown_8.3.png[Dropdown menu located next to {data-source} field with items for adding and managing fields] + For more information about adding fields to {data-sources} and examples, refer to <>. @@ -83,7 +83,7 @@ For more information about adding fields to {data-sources} and examples, refer t Tables are highly customizable, and provide you with text alignment, value formatting, coloring options, and more. -. From the *Chart type* dropdown, select *Table*. +. From the *Visualization type* dropdown, select *Table*. . Drag the fields you want to visualize to the workspace. @@ -91,9 +91,9 @@ Tables are highly customizable, and provide you with text alignment, value forma + All columns that belong to the same layer pane group are sorted in the table. -. To change the display options, click a *Metrics* field, then configure the following options: +. To change the display options, click a *Metrics* field in the layer pane, then configure the following options: -* *Display name* — Specifies the field display name. +* *Name* — Specifies the field display name. * *Value format* — Specifies how the field value displays in the table. @@ -111,9 +111,6 @@ All columns that belong to the same layer pane group are sorted in the table. To use a keyboard instead of a mouse, use the *Lens* fully accessible and continuously improved drag system. -[role="screenshot"] -image::images/lens_drag_drop_1.gif[Presented Lens drag and drop] - . Select the field in the fields list or layer pane. Most fields have an inner and outer select state. The inner state opens a panel with detailed information or options. The outer state allows you to drag the field. Tab through the fields until you get the outer state on the field. + @@ -197,7 +194,13 @@ image::images/lens_annotations_8.2.0.png[Lens annotations] . To open the annotation options, click *Event*. -. Specify the *Annotation date*, then change the *Appearance* options you want to display. +. Specify the *Annotation date*. + +. To display the annotation as a time range, select *Apply as range*, then specify the *From* and *To* time range. + +. Enter the annotation *Name*. + +. Change the *Appearance* options for how you want the annotation to display. . Click *Close*. diff --git a/docs/user/dashboard/make-dashboards-interactive.asciidoc b/docs/user/dashboard/make-dashboards-interactive.asciidoc index 0e20237c2ebc0..7c80fa8588538 100644 --- a/docs/user/dashboard/make-dashboards-interactive.asciidoc +++ b/docs/user/dashboard/make-dashboards-interactive.asciidoc @@ -172,12 +172,14 @@ To use saved search interactions, open the panel menu, then click *More > View s Panels have built-in interactive capabilities that apply filters to the dashboard data. For example, when you drag a time range or click a pie slice, a filter for the time range or pie slice is applied. Drilldowns let you customize the interactive behavior while keeping the context of the interaction. -There are two types of drilldowns you can add to dashboards: +There are three types of drilldowns you can add to dashboards: -* *Dashboard* — Navigates you from one dashboard to another dashboard. For example, when can create a drilldown for a *Lens* panel that navigates you from a summary dashboard to a dashboard with a filter for a specific host name. +* *Dashboard* — Navigates you from one dashboard to another dashboard. For example, create a drilldown for a *Lens* panel that navigates you from a summary dashboard to a dashboard with a filter for a specific host name. * *URL* — Navigates you from a dashboard to an external website. For example, a website with the specific host name as a parameter. +* *Discover* — Navigates you from a *Lens* dashboard panel to *Discover*. For example, create a drilldown for a *Lens* visualization that opens the visualization data in *Discover* for further exploration. + Third-party developers can create drilldowns. To learn how to code drilldowns, refer to {kib-repo}blob/{branch}/x-pack/examples/ui_actions_enhanced_examples[this example plugin]. [float] @@ -189,7 +191,7 @@ Dashboard drilldowns enable you to open a dashboard from another dashboard, taki For example, if you have a dashboard that shows the logs and metrics for multiple data centers, you can create a drilldown that navigates from the dashboard that shows multiple data centers, to a dashboard that shows a single data center or server. [role="screenshot"] -image:images/drilldown_on_data_table.gif[Drilldown on data table that navigates to another dashboard] +image:images/dashboard_drilldownOnDataTable_8.3.gif[Drilldown on data table that navigates to another dashboard] The panels you create using the following editors support dashboard drilldowns: @@ -220,7 +222,7 @@ Use the <> data to create a dashboard + [%hardbreaks] Search: `extension.keyword: ("gz" or "css" or "deb")` -Filter: `geo.src: CN` +Filter: `geo.src: US` [float] ===== Create the dashboard drilldown @@ -244,7 +246,7 @@ Create a drilldown that opens the *Detailed logs* dashboard from the *[Logs] Web . In the data table panel, hover over a value, click *+*, then select `View details`. + [role="screenshot"] -image::images/drilldown_on_panel.png[Drilldown on data table that navigates to another dashboard] +image::images/dashboard_drilldownOnPanel_8.3.png[Drilldown on data table that navigates to another dashboard] [float] [[url-drilldowns]] @@ -253,7 +255,7 @@ image::images/drilldown_on_panel.png[Drilldown on data table that navigates to a URL drilldowns enable you to navigate from a dashboard to external websites. Destination URLs can be dynamic, depending on the dashboard context or user interaction with a panel. To create URL drilldowns, you add <> to a URL template, which configures the behavior of the drilldown. All panels that you create with the visualization editors support dashboard drilldowns. [role="screenshot"] -image:images/url_drilldown_go_to_github.gif[Drilldown on pie chart that navigates to Github] +image:images/dashboard_urlDrilldownGoToGitHub_8.3.gif[Drilldown on pie chart that navigates to Github] Some panels support multiple interactions, also known as triggers. The <> you use to create a <> depends on the trigger you choose. URL drilldowns support these types of triggers: @@ -269,7 +271,7 @@ For example, *Single click* has `{{event.value}}` and *Range selection* has `{{e For example, if you have a dashboard that shows data from a Github repository, you can create a URL drilldown that opens Github from the dashboard panel. -. Add the *Sample web logs* data. +. Add the <> data. . Open the *[Logs] Web Traffic* dashboard. @@ -277,13 +279,11 @@ For example, if you have a dashboard that shows data from a Github repository, y . Create a donut chart -.. In the toolbar, click *Edit*. - .. Click *Create visualization*. .. From the *Chart type* dropdown, select *Donut*. -.. From the *Available fields* list, drag and drop the *machine.os.keyword* field onto the visualization builder. +.. From the *Available fields* list, drag *machine.os.keyword* to the workspace. .. Click *Save and return*. @@ -311,12 +311,47 @@ https://github.com/elastic/kibana/issues?q=is:issue+is:open+{{event.value}} . On the donut chart panel, click any chart slice, then select *Show on Github*. + [role="screenshot"] -image:images/url_drilldown_popup.png[URL drilldown popup] +image:images/dashboard_urlDrilldownPopup_8.3.png[URL drilldown popup] . In the list of {kib} repository issues, verify that the slice value appears. + [role="screenshot"] -image:images/url_drilldown_github.png[Github] +image:images/dashboard_urlDrilldownGithub_8.3.png[Open ios issues in the elastic/kibana repository on Github] + +[float] +[[discover-drilldowns]] +==== Create Discover drilldowns + +Discover drilldowns enable you to open *Discover* from a *Lens* dashboard panel, taking the time range, filters, and other parameters with you so the context remains the same. + +For example, when you create a Discover drilldown for a pie chart, you can click a slice in the pie chart, and only the documents for the slice appear in *Discover*. + +[role="screenshot"] +image:images/dashboard_discoverDrilldown_8.3.gif[Drilldown on bar vertical stacked chart that navigates to Discover] + +NOTE: Discover drilldowns are supported only by *Lens* panels. To open all of the *Lens* dashboard panel data in *Discover*, check <>. + +[float] +===== Create the Discover drilldown + +Create a drilldown that opens *Discover* from the <> data *[Logs] Web Traffic* dashboard. + +. Click *Edit*, open the panel menu for the *[Logs] Bytes distribution* bar vertical stacked chart, then select *Create drilldown*. + +. Click *Open in Discover*. + +. Give the drilldown a name. For example, `View bytes distribution in Discover`. + +. To open the Discover drilldown in a new tab, select *Open in new tab*. + +. Click *Create drilldown*. + +. Save the dashboard. + +. On the *[Logs] Bytes distribution* bar vertical stacked chart, click a bar, then select *View bytes distribution in Discover*. ++ +[role="screenshot"] +image::images/dashboard_discoverDrilldown_8.3.png[Drilldown on bar vertical stacked chart that navigates to Discover] [float] [[manage-drilldowns]] diff --git a/docs/user/dashboard/timelion.asciidoc b/docs/user/dashboard/timelion.asciidoc index 19962d11f7335..7e5b753973ea2 100644 --- a/docs/user/dashboard/timelion.asciidoc +++ b/docs/user/dashboard/timelion.asciidoc @@ -13,8 +13,6 @@ The syntax enables some features that classical point series charts don't offer, [role="screenshot"] image:dashboard/images/timelion.png[Timelion] -deprecated::[7.0.0,"*Timelion* is still supported. The *Timelion app* is deprecated in 7.0, replaced by dashboard features. In 7.16 and later, the *Timelion app* is removed from {kib}. To prepare for the removal of *Timelion app*, you must migrate *Timelion app* worksheets to a dashboard. For information on how to migrate *Timelion app* worksheets, refer to <>."] - [float] ==== Timelion expressions diff --git a/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc b/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc index 7437eb480e73f..1d4d5d70e879e 100644 --- a/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc +++ b/docs/user/dashboard/tutorial-create-a-dashboard-of-lens-panels.asciidoc @@ -8,7 +8,7 @@ at website logs, but this type of dashboard works on any type of data. When you're done, you'll have a complete overview of the sample web logs data. [role="screenshot"] -image::images/lens_logsDashboard_7.16.png[Logs dashboard] +image::images/lens_logsDashboard_8.3.png[Logs dashboard] Before you begin, you should be familiar with the <>. @@ -38,10 +38,10 @@ Open the visualization editor, then make sure the correct fields appear. . On the dashboard, click *Create visualization*. -. Make sure the *kibana_sample_data_logs* index appears. +. Make sure the *kibana_sample_data_logs* data view appears. + [role="screenshot"] -image::images/lens_dataViewDropDown_8.0.png[Data view dropdown] +image::images/lens_dataViewDropDown_8.3.png[Data view dropdown] To create the visualizations in this tutorial, you'll use the following fields: @@ -79,12 +79,9 @@ In the layer pane, *Unique count of clientip* appears because the editor automat . In the layer pane, click *Unique count of clientip*. -.. In the *Display name* field, enter `Unique visitors`. +.. In the *Name* field, enter `Unique visitors`. .. Click *Close*. -+ -[role="screenshot"] -image::images/lens_metricUniqueVisitors_7.16.png[Metric visualization that displays number of unique visitors] . Click *Save and return*. + @@ -122,23 +119,21 @@ To increase the minimum time interval: . In the layer pane, click *timestamp*. -. Select *Customize time interval*. - -. Change the *Minimum interval* to *1 days*, then click *Close*. +. Change the *Minimum interval* to *1d*, then click *Close*. + -You can increase and decrease the minimum interval, but you are unable to decrease the interval below the <>. +You can increase and decrease the minimum interval, but you are unable to decrease the interval below the configured <>. To save space on the dashboard, hide the axis labels. -. Open the *Left axis* menu, then deselect *Show*. +. Open the *Left axis* menu, then select *None* from the *Axis title* dropdown. + [role="screenshot"] -image::images/lens_leftAxisMenu_7.16.png[Left axis menu] +image::images/lens_lineChartMetricOverTimeLeftAxis_8.3.png[Left axis menu] -. Open the *Bottom axis* menu, then deselect *Show*. +. Open the *Bottom axis* menu, then select *None* from the *Axis title* dropdown. + [role="screenshot"] -image::images/lens_lineChartMetricOverTime_7.16.png[Line chart that displays metric data over time] +image::images/lens_lineChartMetricOverTimeBottomAxis_8.3.png[Line chart that displays metric data over time] . Click *Save and return* @@ -183,7 +178,7 @@ image::images/lens_end_to_end_2_1_2.png[Table with top values of request.keyword .. In the *Number of values* field, enter `10`. -.. In the *Display name* field, enter `Page URL`. +.. In the *Name* field, enter `Page URL`. .. Click *Close*. + @@ -204,7 +199,9 @@ Create a proportional visualization that helps you determine if your users trans . From the *Available fields* list, drag *bytes* to the *Vertical axis* field in the layer pane. -. Click *Median of bytes*, click the *Sum* function, then click *Close*. +. In the layer pane, click *Median of bytes*. + +. Click the *Sum* function, then click *Close*. . From the *Available fields* list, drag *bytes* to the *Break down by* field in the layer pane. @@ -261,7 +258,7 @@ The distribution of a number can help you find patterns. For example, you can an .. Click the *Sum* function. -.. In the *Display name* field, enter `Transferred bytes`. +.. In the *Name* field, enter `Transferred bytes`. .. From the *Value format* dropdown, select *Bytes (1024)*, then click *Close*. @@ -292,11 +289,11 @@ Add a panel title: . From the *Available fields* list, drag *Records* to the *Size by* field in the layer pane. -. In the editor, click *Add or drag-and-drop a field* for *Group by*. +. In the layer pane, click *Add or drag-and-drop a field* for *Group by*. Create a filter for each website traffic source: -. From *Select a function*, click *Filters*. +. Click the *Filters* function. . Click *All records*, enter the following in the query bar, then press Return: @@ -331,7 +328,7 @@ Remove the documents that do not match the filter criteria: . In the layer pane, click *Top values of geo.srcdest*. -. Click *Advanced*, then deselect *Group other values as "Other"*, the click *Close*. +. Click *Advanced*, deselect *Group other values as "Other"*, then click *Close*. + [role="screenshot"] image::images/lens_treemapMultiLevelChart_7.16.png[Treemap visualization] @@ -361,7 +358,7 @@ Decrease the size of the following panels, then move the panels to the first row * *Website traffic* + [role="screenshot"] -image::images/lens_logsDashboard_7.16.png[Logs dashboard] +image::images/lens_logsDashboard_8.3.png[Logs dashboard] [discrete] === Save the dashboard From decdafab3121de2272bfc00782615b93dd31e89c Mon Sep 17 00:00:00 2001 From: Kevin Logan <56395104+kevinlog@users.noreply.github.com> Date: Tue, 21 Jun 2022 16:44:09 -0400 Subject: [PATCH 16/61] [Security Solution] Advnaced policy option for Rollback, Platinum only (#132282) --- .../common/endpoint/models/policy_config.ts | 7 ++++ .../common/endpoint/types/index.ts | 5 ++- .../common/license/policy_config.test.ts | 32 +++++++++++++++++++ .../common/license/policy_config.ts | 19 ++++++++++- .../policy/models/advanced_policy_schema.ts | 12 +++++++ .../pages/policy/view/policy_advanced.tsx | 19 ++++++----- .../pages/policy/view/policy_details_form.tsx | 2 +- 7 files changed, 85 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts b/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts index 6b470c85aa1b8..e2cb3503910be 100644 --- a/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts +++ b/x-pack/plugins/security_solution/common/endpoint/models/policy_config.ts @@ -149,6 +149,13 @@ export const policyFactoryWithoutPaidFeatures = ( ...policy, windows: { ...policy.windows, + advanced: + policy.windows.advanced === undefined + ? undefined + : { + ...policy.windows.advanced, + rollback: undefined, + }, ransomware: { mode: ProtectionModes.off, supported: false, diff --git a/x-pack/plugins/security_solution/common/endpoint/types/index.ts b/x-pack/plugins/security_solution/common/endpoint/types/index.ts index 72a1b3e2a4bee..28aa5052db48c 100644 --- a/x-pack/plugins/security_solution/common/endpoint/types/index.ts +++ b/x-pack/plugins/security_solution/common/endpoint/types/index.ts @@ -911,7 +911,10 @@ type KbnConfigSchemaNonOptionalProps> = Pi */ export interface PolicyConfig { windows: { - advanced?: {}; + advanced?: { + [key: string]: unknown; + rollback?: string | boolean; + }; events: { dll_and_driver_load: boolean; dns: boolean; diff --git a/x-pack/plugins/security_solution/common/license/policy_config.test.ts b/x-pack/plugins/security_solution/common/license/policy_config.test.ts index e62b063fd3dfe..40b57207a4d72 100644 --- a/x-pack/plugins/security_solution/common/license/policy_config.test.ts +++ b/x-pack/plugins/security_solution/common/license/policy_config.test.ts @@ -123,6 +123,23 @@ describe('policy_config and licenses', () => { expect(valid).toBeTruthy(); }); + it('allows advanced rollback option when Platinum', () => { + const policy = policyFactory(); + policy.windows.advanced = { rollback: true }; // make policy change + const valid = isEndpointPolicyValidForLicense(policy, Platinum); + expect(valid).toBeTruthy(); + }); + + it('blocks advanced rollback option when below Platinum', () => { + const policy = policyFactory(); + policy.windows.advanced = { rollback: true }; // make policy change + let valid = isEndpointPolicyValidForLicense(policy, Gold); + expect(valid).toBeFalsy(); + + valid = isEndpointPolicyValidForLicense(policy, Basic); + expect(valid).toBeFalsy(); + }); + describe('ransomware protection checks', () => { it('blocks ransomware to be turned on for Gold and below licenses', () => { const policy = policyFactoryWithoutPaidFeatures(); @@ -474,6 +491,21 @@ describe('policy_config and licenses', () => { ); }); + it('resets Platinum-paid advanced fields for lower license tiers', () => { + const defaults = policyFactoryWithoutPaidFeatures(); // reference + const policy = policyFactory(); // what we will modify, and should be reset + + policy.windows.advanced = { rollback: true }; + policy.windows.advanced = { another_advanced: true }; + + const retPolicy = unsetPolicyFeaturesAccordingToLicenseLevel(policy, Gold); + + expect(retPolicy.windows.advanced?.rollback).toEqual(defaults.windows.advanced?.rollback); + + // Preserves non-license gated advanced settings. + expect(retPolicy.windows.advanced?.another_advanced).toEqual(true); + }); + it('sets ransomware supported field to false when license is below Platinum', () => { const defaults = policyFactoryWithoutPaidFeatures(); // reference const policy = policyFactory(); // what we will modify, and should be reset diff --git a/x-pack/plugins/security_solution/common/license/policy_config.ts b/x-pack/plugins/security_solution/common/license/policy_config.ts index 7827722c410b3..0ac19a448c4e4 100644 --- a/x-pack/plugins/security_solution/common/license/policy_config.ts +++ b/x-pack/plugins/security_solution/common/license/policy_config.ts @@ -202,6 +202,22 @@ function isEndpointBehaviorPolicyValidForLicense(policy: PolicyConfig, license: return true; } +function isEndpointAdvancedPolicyValidForLicense(policy: PolicyConfig, license: ILicense | null) { + if (isAtLeast(license, 'platinum')) { + // platinum allows all advanced features + return true; + } + + const defaults = policyFactoryWithoutPaidFeatures(); + + // only platinum or higher may use rollback + if (policy.windows.advanced?.rollback !== defaults.windows.advanced?.rollback) { + return false; + } + + return true; +} + /** * Given an endpoint package policy, verifies that all enabled features that * require a certain license level have a valid license for them. @@ -214,7 +230,8 @@ export const isEndpointPolicyValidForLicense = ( isEndpointMalwarePolicyValidForLicense(policy, license) && isEndpointRansomwarePolicyValidForLicense(policy, license) && isEndpointMemoryPolicyValidForLicense(policy, license) && - isEndpointBehaviorPolicyValidForLicense(policy, license) + isEndpointBehaviorPolicyValidForLicense(policy, license) && + isEndpointAdvancedPolicyValidForLicense(policy, license) ); }; diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts b/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts index 28d0a3a91029d..dc230057d637c 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts +++ b/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts @@ -12,6 +12,7 @@ interface AdvancedPolicySchemaType { first_supported_version: string; last_supported_version?: string; documentation: string; + license?: string; } export const AdvancedPolicySchema: AdvancedPolicySchemaType[] = [ @@ -936,4 +937,15 @@ export const AdvancedPolicySchema: AdvancedPolicySchemaType[] = [ } ), }, + { + key: 'windows.advanced.rollback', + first_supported_version: '8.4', + documentation: i18n.translate( + 'xpack.securitySolution.endpoint.policy.advanced.windows.rollback', + { + defaultMessage: 'Experimental', + } + ), + license: 'platinum', + }, ]; diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_advanced.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_advanced.tsx index 7da01f80fd047..e6eab89e4f18f 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_advanced.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_advanced.tsx @@ -95,7 +95,7 @@ const warningMessage = i18n.translate( } ); -export const AdvancedPolicyForms = React.memo(() => { +export const AdvancedPolicyForms = React.memo(({ isPlatinumPlus }: { isPlatinumPlus: boolean }) => { return ( <> @@ -113,14 +113,17 @@ export const AdvancedPolicyForms = React.memo(() => { {AdvancedPolicySchema.map((advancedField, index) => { const configPath = advancedField.key.split('.'); + const failsPlatinumLicenseCheck = !isPlatinumPlus && advancedField.license === 'platinum'; return ( - + !failsPlatinumLicenseCheck && ( + + ) ); })} diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details_form.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details_form.tsx index 747bde112d89a..794e7533371d4 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details_form.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_details_form.tsx @@ -104,7 +104,7 @@ export const PolicyDetailsForm = memo(() => { - {showAdvancedPolicy && } + {showAdvancedPolicy && } ); }); From ee1bbf2f41f8c33495c06be677202dac1e79b52b Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Tue, 21 Jun 2022 15:06:28 -0600 Subject: [PATCH 17/61] [ML] Anomaly Detection: allow snapshot to be reverted from the view datafeed flyout (#133842) * show revert snapshot flyout on snapshot annotation click * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' * use latest_record_time_stamp and fetch all models to ensure they show up * move model snapshot fetch to client to get all snapshots * filter model data to chart timerange * add permission check * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' * only show revert message in tooltip with correct permissions * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' * remove unnecessary undefined check * move snapshot to be on top of annotation when timestamp is the same Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- x-pack/plugins/ml/common/types/results.ts | 6 +- .../datafeed_chart_flyout.tsx | 131 +++++++++++++----- .../components/job_details/job_details.js | 24 ++++ .../models/results_service/results_service.ts | 18 +-- 4 files changed, 129 insertions(+), 50 deletions(-) diff --git a/x-pack/plugins/ml/common/types/results.ts b/x-pack/plugins/ml/common/types/results.ts index e5393515194a6..9997bc4751b41 100644 --- a/x-pack/plugins/ml/common/types/results.ts +++ b/x-pack/plugins/ml/common/types/results.ts @@ -9,7 +9,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { LineAnnotationDatum, RectAnnotationDatum } from '@elastic/charts'; import type { ErrorType } from '../util/errors'; import type { EntityField } from '../util/anomaly_utils'; -import type { Datafeed, JobId } from './anomaly_detection_jobs'; +import type { Datafeed, JobId, ModelSnapshot } from './anomaly_detection_jobs'; import { ES_AGGREGATION, ML_JOB_AGGREGATION } from '../constants/aggregation_types'; import type { RecordForInfluencer } from './anomalies'; @@ -20,12 +20,14 @@ export interface GetStoppedPartitionResult { export interface MLRectAnnotationDatum extends RectAnnotationDatum { header: number; } +export interface LineAnnotationDatumWithModelSnapshot extends LineAnnotationDatum { + modelSnapshot?: ModelSnapshot; +} export interface GetDatafeedResultsChartDataResult { bucketResults: number[][]; datafeedResults: number[][]; annotationResultsRect: MLRectAnnotationDatum[]; annotationResultsLine: LineAnnotationDatum[]; - modelSnapshotResultsLine: LineAnnotationDatum[]; } export interface DatafeedResultsChartDataParams { diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/datafeed_chart_flyout/datafeed_chart_flyout.tsx b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/datafeed_chart_flyout/datafeed_chart_flyout.tsx index d14bc0943a988..cce322156af3a 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/datafeed_chart_flyout/datafeed_chart_flyout.tsx +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/datafeed_chart_flyout/datafeed_chart_flyout.tsx @@ -42,11 +42,17 @@ import { ScaleType, Settings, timeFormatter, + RectAnnotationEvent, + LineAnnotationEvent, } from '@elastic/charts'; import { DATAFEED_STATE } from '../../../../../../common/constants/states'; -import { CombinedJobWithStats } from '../../../../../../common/types/anomaly_detection_jobs'; +import { + CombinedJobWithStats, + ModelSnapshot, +} from '../../../../../../common/types/anomaly_detection_jobs'; import { JobMessage } from '../../../../../../common/types/audit_message'; +import { LineAnnotationDatumWithModelSnapshot } from '../../../../../../common/types/results'; import { useToastNotificationService } from '../../../../services/toast_notification_service'; import { useMlApiContext } from '../../../../contexts/kibana'; import { useCurrentEuiTheme } from '../../../../components/color_range_legend'; @@ -58,14 +64,23 @@ import { checkPermission } from '../../../../capabilities/check_capabilities'; const dateFormatter = timeFormatter('MM-DD HH:mm:ss'); const MAX_CHART_POINTS = 480; +const revertSnapshotMessage = i18n.translate( + 'xpack.ml.jobsList.datafeedChart.revertSnapshotMessage', + { + defaultMessage: 'Click to revert to this model snapshot.', + } +); interface DatafeedChartFlyoutProps { jobId: string; end: number; onClose: () => void; + onModelSnapshotAnnotationClick: (modelSnapshot: ModelSnapshot) => void; } -function setLineAnnotationHeader(lineDatum: LineAnnotationDatum) { +function setLineAnnotationHeader( + lineDatum: LineAnnotationDatum | LineAnnotationDatumWithModelSnapshot +) { lineDatum.header = dateFormatter(lineDatum.dataValue); return lineDatum; } @@ -78,12 +93,23 @@ const customTooltip: CustomAnnotationTooltip = ({ details, datum }) => (

uEhqHcC+N*(%3^uB7G-kK}SH5mnr&xlEfFLaE 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

); -export const DatafeedChartFlyout: FC = ({ jobId, end, onClose }) => { +export const DatafeedChartFlyout: FC = ({ + jobId, + end, + onClose, + onModelSnapshotAnnotationClick, +}) => { const [data, setData] = useState<{ datafeedConfig: CombinedJobWithStats['datafeed_config'] | undefined; bucketSpan: string | undefined; isInitialized: boolean; - }>({ datafeedConfig: undefined, bucketSpan: undefined, isInitialized: false }); + modelSnapshotData: LineAnnotationDatumWithModelSnapshot[]; + }>({ + datafeedConfig: undefined, + bucketSpan: undefined, + isInitialized: false, + modelSnapshotData: [], + }); const [endDate, setEndDate] = useState(moment(end)); const [isLoadingChartData, setIsLoadingChartData] = useState(false); const [bucketData, setBucketData] = useState([]); @@ -91,15 +117,20 @@ export const DatafeedChartFlyout: FC = ({ jobId, end, rect: RectAnnotationDatum[]; line: LineAnnotationDatum[]; }>({ rect: [], line: [] }); - const [modelSnapshotData, setModelSnapshotData] = useState([]); + const [modelSnapshotDataForTimeRange, setModelSnapshotDataForTimeRange] = useState< + LineAnnotationDatumWithModelSnapshot[] + >([]); const [messageData, setMessageData] = useState([]); const [sourceData, setSourceData] = useState([]); const [showAnnotations, setShowAnnotations] = useState(true); const [showModelSnapshots, setShowModelSnapshots] = useState(true); const [range, setRange] = useState<{ start: string; end: string } | undefined>(); const canUpdateDatafeed = useMemo(() => checkPermission('canUpdateDatafeed'), []); + const canCreateJob = useMemo(() => checkPermission('canCreateJob'), []); + const canStartStopDatafeed = useMemo(() => checkPermission('canStartStopDatafeed'), []); const { + getModelSnapshots, results: { getDatafeedResultChartData }, } = useMlApiContext(); const { displayErrorToast } = useToastNotificationService(); @@ -144,7 +175,11 @@ export const DatafeedChartFlyout: FC = ({ jobId, end, rect: chartData.annotationResultsRect, line: chartData.annotationResultsLine.map(setLineAnnotationHeader), }); - setModelSnapshotData(chartData.modelSnapshotResultsLine.map(setLineAnnotationHeader)); + setModelSnapshotDataForTimeRange( + data.modelSnapshotData.filter( + (datum) => datum.dataValue >= startTimestamp && datum.dataValue <= endTimestamp + ) + ); } catch (error) { const title = i18n.translate('xpack.ml.jobsList.datafeedChart.errorToastTitle', { defaultMessage: 'Error fetching data', @@ -154,21 +189,37 @@ export const DatafeedChartFlyout: FC = ({ jobId, end, setIsLoadingChartData(false); }, [endDate, data.bucketSpan]); - const getJobData = useCallback(async () => { + const getJobAndSnapshotData = useCallback(async () => { try { const job: CombinedJobWithStats = await loadFullJob(jobId); + const modelSnapshotResultsLine: LineAnnotationDatumWithModelSnapshot[] = []; + const modelSnapshotsResp = await getModelSnapshots(jobId); + const modelSnapshots = modelSnapshotsResp.model_snapshots ?? []; + modelSnapshots.forEach((modelSnapshot) => { + const timestamp = Number(modelSnapshot.latest_record_time_stamp); + + modelSnapshotResultsLine.push({ + dataValue: timestamp, + details: `${modelSnapshot.description}. ${ + canCreateJob && canStartStopDatafeed ? revertSnapshotMessage : '' + }`, + modelSnapshot, + }); + }); + setData({ datafeedConfig: job.datafeed_config, bucketSpan: job.analysis_config.bucket_span, isInitialized: true, + modelSnapshotData: modelSnapshotResultsLine.map(setLineAnnotationHeader), }); } catch (error) { displayErrorToast(error); } }, [jobId]); - useEffect(function loadJobWithDatafeed() { - getJobData(); + useEffect(function loadInitialData() { + getJobAndSnapshotData(); }, []); useEffect( @@ -323,6 +374,24 @@ export const DatafeedChartFlyout: FC = ({ jobId, end, { + // If it's not a line annotation or if it's not a model snapshot annotation then do nothing + if ( + !(canCreateJob && canStartStopDatafeed) || + annotations.lines?.length === 0 || + (annotations.lines && + !annotations.lines[0].id.includes('Model snapshots')) + ) + return; + + onModelSnapshotAnnotationClick( + // @ts-expect-error property 'modelSnapshot' does not exist on type + annotations.lines[0].datum.modelSnapshot + ); + }} // TODO use the EUI charts theme see src/plugins/charts/public/services/theme/README.md theme={{ lineSeriesStyle: { @@ -349,28 +418,6 @@ export const DatafeedChartFlyout: FC = ({ jobId, end, })} position={Position.Left} /> - {showModelSnapshots ? ( - } - markerPosition={Position.Top} - style={{ - line: { - strokeWidth: 3, - stroke: euiTheme.euiColorVis1, - opacity: 0.5, - }, - }} - /> - ) : null} {showAnnotations ? ( <> = ({ jobId, end, /> ) : null} + {showModelSnapshots ? ( + } + markerPosition={Position.Top} + style={{ + line: { + strokeWidth: 3, + stroke: euiTheme.euiColorVis1, + opacity: 0.5, + }, + }} + /> + ) : null} {messageData.length > 0 ? ( <> this.updateJob(j)); @@ -151,10 +154,31 @@ export class JobDetailsUI extends Component { datafeedChartFlyoutVisible: false, }); }} + onModelSnapshotAnnotationClick={(modelSnapshot) => { + this.setState({ + modelSnapshot, + revertSnapshotFlyoutVisible: true, + datafeedChartFlyoutVisible: false, + }); + }} end={job.data_counts.latest_bucket_timestamp} jobId={this.props.jobId} /> ) : null} + {this.state.revertSnapshotFlyoutVisible === true && + this.state.modelSnapshot !== null ? ( + { + this.setState({ + revertSnapshotFlyoutVisible: false, + }); + }} + refresh={refreshJobList} + /> + ) : null} ), }, diff --git a/x-pack/plugins/ml/server/models/results_service/results_service.ts b/x-pack/plugins/ml/server/models/results_service/results_service.ts index 5af471bf44997..ec4a3425eaa2b 100644 --- a/x-pack/plugins/ml/server/models/results_service/results_service.ts +++ b/x-pack/plugins/ml/server/models/results_service/results_service.ts @@ -657,7 +657,6 @@ export function resultsServiceProvider(mlClient: MlClient, client?: IScopedClust datafeedResults: [], annotationResultsRect: [], annotationResultsLine: [], - modelSnapshotResultsLine: [], }; const { getDatafeedByJobId } = datafeedsProvider(client!, mlClient); @@ -739,7 +738,7 @@ export function resultsServiceProvider(mlClient: MlClient, client?: IScopedClust const { getAnnotations } = annotationServiceProvider(client!); - const [bucketResp, annotationResp, modelSnapshotsResp] = await Promise.all([ + const [bucketResp, annotationResp] = await Promise.all([ mlClient.getBuckets({ job_id: jobId, body: { desc: true, start: String(start), end: String(end), page: { from: 0, size: 1000 } }, @@ -750,11 +749,6 @@ export function resultsServiceProvider(mlClient: MlClient, client?: IScopedClust latestMs: end, maxAnnotations: 1000, }), - mlClient.getModelSnapshots({ - job_id: jobId, - start: String(start), - end: String(end), - }), ]); const bucketResults = bucketResp?.buckets ?? []; @@ -786,16 +780,6 @@ export function resultsServiceProvider(mlClient: MlClient, client?: IScopedClust } }); - const modelSnapshots = modelSnapshotsResp?.model_snapshots ?? []; - modelSnapshots.forEach((modelSnapshot) => { - const timestamp = Number(modelSnapshot?.timestamp); - - finalResults.modelSnapshotResultsLine.push({ - dataValue: timestamp, - details: modelSnapshot.description, - }); - }); - return finalResults; } From 2336f33632dc6bf34ea626dffa93f4324bb24283 Mon Sep 17 00:00:00 2001 From: Greg Thompson Date: Tue, 21 Jun 2022 17:08:15 -0500 Subject: [PATCH 18/61] Upgrade EUI to v59.0.1 (#133927) * eui to v59.0.0 * i18n tokens * update theme var tokens * mock mouseevent for euiselectable * mock mouseevent for euiselectable * update theme var tokens * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' * mock mouseevent for euiselectable * update theme var tokens * update theme var tokens mocks * WIP: forwardRef type * update snapshots * euiTextColor * snapshot updates * jest test updates * euiTextColor updates * jest test updates * update getVisualizeError selector * euiPaddingSizes * snapshot update * WIP: accordion cy.react * DetailPanelMetadataTab test updates * eui to v59.0.1 * snapshot updates * WIP: osquery cypress * WIP: osquery cypress * use data-test-subj * log standard console errors * snapshot * paddingSizes update * euiaccordion class type comment * snapshots Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- package.json | 2 +- .../src/core_theme_provider.tsx | 1 + .../__snapshots__/page_template.test.tsx.snap | 4 +- packages/kbn-storybook/src/lib/decorators.tsx | 1 + packages/kbn-test/src/jest/setup/emotion.js | 15 + .../__snapshots__/no_data_card.test.tsx.snap | 24 +- .../collapsible_nav.test.tsx.snap | 50 +- .../__snapshots__/i18n_service.test.tsx.snap | 1 + src/core/public/i18n/i18n_eui_mapping.tsx | 6 + .../__snapshots__/modal_service.test.tsx.snap | 4 +- src/dev/license_checker/config.ts | 2 +- .../static/components/common_chart_styles.ts | 4 +- .../dashboard_empty_screen.test.tsx.snap | 40 +- .../sessions_mgmt/components/status.test.tsx | 8 +- .../sessions_mgmt/lib/get_columns.test.tsx | 2 +- .../__snapshots__/data_view.test.tsx.snap | 26 +- .../header/__snapshots__/header.test.tsx.snap | 2 +- .../warning_call_out.test.tsx.snap | 40 +- .../__snapshots__/source.test.tsx.snap | 687 ++---------------- .../doc_viewer_source/source.test.tsx | 4 +- .../lib/embeddables/error_embeddable.test.tsx | 2 +- .../view_api_request_flyout.test.tsx.snap | 2 +- .../react_expression_renderer.tsx | 6 +- .../saved_objects_installer.test.js.snap | 8 +- .../exit_full_screen_button.test.tsx.snap | 147 ++-- .../exit_full_screen_button.test.tsx | 2 +- .../__snapshots__/page_template.test.tsx.snap | 10 +- .../__snapshots__/no_data_card.test.tsx.snap | 16 +- .../not_found_errors.test.tsx.snap | 228 +++--- .../components/overwrite_modal.tsx | 2 +- .../dataview_picker/dataview_list.test.tsx | 5 +- .../__snapshots__/filter_label.test.tsx.snap | 4 +- .../__snapshots__/agg.test.tsx.snap | 10 +- .../public/components/agg.test.tsx | 2 +- .../components/data_format_picker.tsx | 2 +- .../value_axes_panel.test.tsx.snap | 20 +- .../value_axis_options.test.tsx.snap | 10 +- .../visualization_noresults.test.js.snap | 16 +- .../public/components/visualization_error.tsx | 2 +- .../components/visualization_noresults.tsx | 2 +- .../public/wizard/new_vis_modal.test.tsx | 8 +- .../page_objects/visual_builder_page.ts | 2 +- .../select_anomaly_severity.tsx | 5 +- .../context_popover/context_popover.tsx | 2 +- .../failed_transactions_correlations.tsx | 4 +- .../components/app/service_map/controls.tsx | 6 +- .../app/service_map/cytoscape_options.ts | 12 +- .../service_profiling_flamegraph.tsx | 2 +- .../link_preview.test.tsx | 7 +- .../waterfall/waterfall_item.tsx | 2 +- .../custom_tooltip.tsx | 6 +- .../charts/timeline/marker/agent_marker.tsx | 4 +- .../shared/kuery_bar/typeahead/suggestion.js | 4 +- .../stacktrace/cause_stacktrace.test.tsx | 4 +- .../shared/stacktrace/cause_stacktrace.tsx | 2 +- .../components/shared/stacktrace/context.tsx | 4 +- .../shared/stacktrace/variables.tsx | 3 +- .../components/shared/summary/index.tsx | 2 +- .../shared/time_comparison/index.tsx | 2 +- .../time_filter.stories.storyshot | 32 +- .../extended_template.stories.storyshot | 14 +- .../__snapshots__/asset.stories.storyshot | 12 +- .../asset_manager.stories.storyshot | 48 +- .../custom_element_modal.stories.storyshot | 18 +- .../datasource_component.stories.storyshot | 16 +- .../element_card.stories.storyshot | 16 +- .../home/__snapshots__/home.stories.storyshot | 2 +- .../empty_prompt.stories.storyshot | 50 +- .../my_workpads.stories.storyshot | 2 +- .../workpad_table.stories.storyshot | 2 +- .../workpad_templates.stories.storyshot | 2 +- .../element_grid.stories.storyshot | 12 +- .../saved_elements_modal.stories.storyshot | 40 +- .../shape_picker_popover.stories.storyshot | 6 +- .../group_settings.stories.storyshot | 2 +- .../multi_element_settings.stories.storyshot | 2 +- .../tool_tip_shortcut.stories.storyshot | 98 +-- .../delete_var.stories.storyshot | 10 +- .../__snapshots__/edit_var.stories.storyshot | 6 +- .../var_config.stories.storyshot | 10 +- .../filter.component.stories.storyshot | 62 +- .../filters_group.component.stories.storyshot | 16 +- ...orkpad_filters.component.stories.storyshot | 50 +- .../simple_template.stories.storyshot | 20 +- .../api/__snapshots__/shareable.test.tsx.snap | 10 +- .../__snapshots__/canvas.stories.storyshot | 76 +- .../__snapshots__/footer.stories.storyshot | 50 +- .../page_controls.stories.storyshot | 42 +- .../__snapshots__/title.stories.storyshot | 36 +- .../__snapshots__/settings.test.tsx.snap | 10 +- .../public/components/all_cases/table.tsx | 2 +- .../components/configure_cases/index.tsx | 4 +- .../create/flyout/create_case_flyout.tsx | 2 +- .../components/header_page/index.test.tsx | 4 +- .../public/components/header_page/index.tsx | 4 +- .../public/components/user_actions/index.tsx | 6 +- .../public/components/utility_bar/styles.tsx | 6 +- .../utility_bar/utility_bar.test.tsx | 4 +- .../public/components/wrappers/index.tsx | 2 +- .../layout/findings_distribution_bar.tsx | 2 +- .../search_index_selectable.test.tsx | 7 +- .../steps/create_service_token.tsx | 2 +- .../components/steps/step_select_hosts.tsx | 2 +- .../single_page_layout/index.tsx | 2 +- .../agent_details_integrations.tsx | 6 +- .../components/search_and_filter_bar.tsx | 2 +- .../epm/components/assets_facet_group.tsx | 4 +- .../sections/epm/components/requirements.tsx | 2 +- .../danger_eui_context_menu_item.tsx | 2 +- .../fleet/public/components/header.tsx | 6 +- .../field_manager/field_manager.test.tsx | 10 +- .../extend_index_management.test.tsx.snap | 10 +- .../__snapshots__/policy_table.test.tsx.snap | 26 +- .../components/data_tier_allocation.tsx | 12 +- .../constants/field_options.tsx | 2 +- .../inventory/components/expression.test.tsx | 7 +- .../components/expression_row.test.tsx | 11 +- .../quality_warning_notices.tsx | 2 +- .../logging/log_highlights_menu.tsx | 2 +- .../components/bottom_drawer.tsx | 2 +- .../inventory_view/components/layout.tsx | 2 +- .../components/node_details/overlay.tsx | 6 +- .../tabs/processes/process_row.tsx | 2 +- .../components/node_details/tabs/shared.tsx | 2 +- .../components/nodes_overview.tsx | 2 +- .../components/timeline/timeline.tsx | 8 +- .../components/waffle/conditional_tooltip.tsx | 4 +- .../metric_control/custom_metric_form.tsx | 6 +- .../waffle/waffle_sort_controls.tsx | 2 +- .../components/metadata_details.tsx | 6 +- .../workspace_panel/workspace_panel.test.tsx | 6 +- .../layerpanel.test.tsx | 5 +- .../__snapshots__/add_license.test.js.snap | 4 +- .../license_page_header.test.js.snap | 4 +- .../request_trial_extension.test.js.snap | 8 +- .../revert_to_basic.test.js.snap | 6 +- .../__snapshots__/start_trial.test.js.snap | 8 +- .../upload_license.test.tsx.snap | 108 ++- .../ordinal_data_mapping_popover.tsx | 4 +- .../custom_icon_modal.test.tsx.snap | 10 +- .../edit_layer_panel.test.tsx.snap | 11 +- .../select_severity/select_severity.tsx | 2 +- .../revert_model_snapshot_flyout.tsx | 2 +- .../job_map/components/cytoscape_options.tsx | 9 +- .../__snapshots__/helpers.test.js.snap | 16 +- .../__snapshots__/ccr_shard.test.js.snap | 10 +- .../nodes/__snapshots__/cells.test.js.snap | 4 +- .../__snapshots__/checker_errors.test.js.snap | 58 +- .../__snapshots__/no_data.test.js.snap | 12 +- .../collection_enabled.test.js.snap | 6 +- .../collection_interval.test.js.snap | 14 +- .../__snapshots__/exporters.test.js.snap | 12 +- .../__snapshots__/plugin_enabled.test.js.snap | 6 +- .../__snapshots__/reason_found.test.js.snap | 24 +- .../__snapshots__/we_tried.test.js.snap | 2 +- .../__snapshots__/page_loading.test.js.snap | 2 +- .../__snapshots__/summary_status.test.js.snap | 16 +- .../series_editor/series_editor.tsx | 2 +- .../field_value_selection.tsx | 2 +- .../alerts_table_t_grid.tsx | 4 +- .../integration/roles/t2_analyst.spec.ts | 4 +- .../osquery/cypress/screens/integrations.ts | 2 +- .../public/components/layouts/header.tsx | 6 +- .../public/packs/active_state_switch.tsx | 2 +- .../public/application/constants.tsx | 6 +- ...screen_capture_panel_content.test.tsx.snap | 120 ++- .../roles_grid_page.test.tsx.snap | 28 +- .../__snapshots__/prompt_page.test.tsx.snap | 4 +- .../unauthenticated_page.test.tsx.snap | 2 +- .../reset_session_page.test.tsx.snap | 2 +- .../authentications_host_table.test.tsx.snap | 2 +- .../authentications_user_table.test.tsx.snap | 2 +- .../drag_and_drop/droppable_wrapper.tsx | 2 +- .../draggables/field_badge/index.tsx | 2 +- .../__snapshots__/link_to_app.test.tsx.snap | 68 +- .../endpoint_host_isolation_status.test.tsx | 2 +- .../enrichment_accordion_group.tsx | 8 +- .../__snapshots__/index.test.tsx.snap | 12 +- .../event_details/overview/overview_card.tsx | 4 +- .../exceptions/add_exception_comments.tsx | 4 +- .../edit_exception_flyout/index.test.tsx | 4 +- .../viewer/exceptions_utility.test.tsx | 4 +- .../exceptions/viewer/index.test.tsx | 4 +- .../components/exit_full_screen/index.tsx | 2 +- .../components/header_page/index.test.tsx | 5 +- .../components/header_section/index.test.tsx | 4 +- .../components/header_section/index.tsx | 2 +- .../common/components/hover_actions/index.tsx | 2 +- .../public/common/components/loader/index.tsx | 2 +- .../components/paginated_table/index.test.tsx | 4 +- .../components/risk_score_over_time/index.tsx | 2 +- .../components/severity/common/index.tsx | 6 +- .../modal_all_errors.test.tsx.snap | 10 +- .../common/components/utility_bar/styles.tsx | 6 +- .../utility_bar/utility_bar.test.tsx | 4 +- .../visualization_actions/index.tsx | 2 +- .../alerts_table/alerts_utility_bar/index.tsx | 2 +- .../rules/description_step/helpers.tsx | 2 +- .../preview_table_control_columns.tsx | 4 +- .../step_about_rule_details/index.test.tsx | 2 +- .../rules/step_define_rule/index.tsx | 2 +- .../rules/all/utility_bar.test.tsx | 2 +- .../detection_engine/rules/create/index.tsx | 4 + .../first_last_seen_host/index.test.tsx | 8 +- .../pages/navigation/host_risk_tab_body.tsx | 2 +- .../components/landing_links_icons.tsx | 4 +- .../components/landing_links_images.tsx | 4 +- .../public/landing_pages/pages/manage.tsx | 4 +- .../components/grid_header.tsx | 2 +- .../back_to_external_app_button.tsx | 4 +- .../command_input/command_input.tsx | 4 +- .../console/components/history_item.tsx | 2 +- .../management/components/console/console.tsx | 11 +- .../effected_policy_select.tsx | 2 +- .../endpoint_agent_and_isolation_status.tsx | 2 +- .../components/page_overlay/page_overlay.tsx | 10 +- .../paginated_content/paginated_content.tsx | 2 +- .../policy_response/policy_response.tsx | 4 +- .../policy_response_action_item.tsx | 2 +- .../view/components/endpoint_agent_status.tsx | 2 +- .../activity_log_date_range_picker/index.tsx | 2 +- .../view/components/events_form/index.tsx | 2 +- .../exception_items_summary.test.tsx | 2 +- .../components/link_with_icon.tsx | 2 +- .../pages/policy/view/vertical_divider.ts | 15 +- .../view/components/condition_group/index.tsx | 6 +- .../embeddables/embedded_map.test.tsx | 4 +- .../components/alerts_by_category/index.tsx | 2 +- .../alerts_by_status/chart_label.tsx | 2 +- .../components/events_by_dataset/index.tsx | 2 +- .../link_panel/inner_link_panel.tsx | 8 +- .../components/overview_cti_links/mock.ts | 3 +- .../__snapshots__/index.test.tsx.snap | 44 +- .../__snapshots__/index.test.tsx.snap | 33 +- .../create_field_button/index.tsx | 2 +- .../open_timeline/open_timeline.test.tsx | 4 +- .../open_timeline_modal_body.test.tsx | 2 +- .../open_timeline/title_row/index.test.tsx | 2 +- .../__snapshots__/index.test.tsx.snap | 6 +- .../side_panel/event_details/flyout/body.tsx | 2 +- .../expandable_host.test.tsx.snap | 2 +- .../side_panel/host_details/index.tsx | 2 +- .../side_panel/network_details/index.tsx | 2 +- .../user_details/user_details_flyout.tsx | 2 +- .../timeline/body/actions/header_actions.tsx | 2 +- .../timeline/body/renderers/cti/helpers.ts | 2 +- .../body/renderers/cti/threat_match_rows.tsx | 2 +- .../__snapshots__/empty.test.tsx.snap | 3 + .../timeline/data_providers/empty.tsx | 6 +- .../timeline/data_providers/index.tsx | 2 +- .../timeline/eql_tab_content/index.tsx | 2 +- .../timeline/query_tab_content/index.tsx | 2 +- .../timeline/search_or_filter/helpers.tsx | 4 +- .../timelines/components/timeline/styles.tsx | 14 +- .../timeline/tabs_content/index.tsx | 2 +- .../pages/navigation/user_risk_tab_body.tsx | 2 +- .../__snapshots__/index.test.tsx.snap | 4 +- .../detail_panel_metadata_tab/index.test.tsx | 8 +- .../__snapshots__/index.test.tsx.snap | 4 +- .../session_view_search_bar/styles.ts | 2 +- .../components/space_result_details.tsx | 2 +- .../space_selector/components/space_card.tsx | 6 +- .../components/index_select_popover.test.tsx | 6 +- .../entity_by_expression.test.tsx.snap | 185 +---- .../expressions/entity_by_expression.test.tsx | 2 +- .../uptime_page_template.test.tsx.snap | 4 +- .../__snapshots__/cert_status.test.tsx.snap | 8 +- .../__snapshots__/expanded_row.test.tsx.snap | 88 ++- .../__snapshots__/ping_headers.test.tsx.snap | 11 +- .../ssl_certificate.test.tsx.snap | 2 +- .../waterfall/components/legend.tsx | 2 +- .../synthetics/waterfall/components/styles.ts | 8 +- .../alerts/anomaly_alert/select_severity.tsx | 2 +- .../down_number_select.test.tsx.snap | 6 +- .../time_expression_select.test.tsx.snap | 12 +- .../columns/monitor_status_column.tsx | 2 +- .../step_expanded_row/screenshot_link.tsx | 2 +- .../step_expanded_row/step_screenshots.tsx | 2 +- .../components/synthetics/executed_step.tsx | 4 +- .../t_grid/event_rendered_view/index.tsx | 4 +- .../t_grid/integrated/index.test.tsx | 2 +- .../public/components/t_grid/styles.tsx | 21 +- .../components/add_message_variables.test.tsx | 9 +- .../components/add_message_variables.tsx | 2 +- ...son_editor_with_message_variables.test.tsx | 10 +- .../text_area_with_message_variables.test.tsx | 10 +- ...text_field_with_message_variables.test.tsx | 10 +- .../expression_items/threshold.test.tsx | 4 +- .../common/expression_items/value.test.tsx | 4 +- yarn.lock | 8 +- 290 files changed, 1420 insertions(+), 2508 deletions(-) diff --git a/package.json b/package.json index 57492fc0c6b6a..75ae3a7198703 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "@elastic/datemath": "5.0.3", "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.2.0-canary.2", "@elastic/ems-client": "8.3.3", - "@elastic/eui": "58.0.0", + "@elastic/eui": "59.0.1", "@elastic/filesaver": "1.1.2", "@elastic/node-crypto": "1.2.1", "@elastic/numeral": "^2.5.1", diff --git a/packages/core/theme/core-theme-browser-internal/src/core_theme_provider.tsx b/packages/core/theme/core-theme-browser-internal/src/core_theme_provider.tsx index 975c201ba3097..82264534ab554 100644 --- a/packages/core/theme/core-theme-browser-internal/src/core_theme_provider.tsx +++ b/packages/core/theme/core-theme-browser-internal/src/core_theme_provider.tsx @@ -28,6 +28,7 @@ const emotionCache = createCache({ key: 'eui-styles', container: document.querySelector(`meta[name="${EUI_STYLES_GLOBAL}"]`) as HTMLElement, }); +emotionCache.compat = true; /** * Wrapper around `EuiProvider` converting (and exposing) core's theme to EUI theme. diff --git a/packages/kbn-shared-ux-components/src/page_template/__snapshots__/page_template.test.tsx.snap b/packages/kbn-shared-ux-components/src/page_template/__snapshots__/page_template.test.tsx.snap index e41292f549c99..e535354b3f084 100644 --- a/packages/kbn-shared-ux-components/src/page_template/__snapshots__/page_template.test.tsx.snap +++ b/packages/kbn-shared-ux-components/src/page_template/__snapshots__/page_template.test.tsx.snap @@ -22,7 +22,7 @@ exports[`KibanaPageTemplate render basic template 1`] = ` class="euiFlexItem" >

test @@ -46,7 +46,7 @@ exports[`KibanaPageTemplate render basic template 1`] = `

{ key: 'eui-styles', container: document.querySelector(`meta[name="eui-styles-global"]`) as HTMLElement, }); + emotionCache.compat = true; return ( diff --git a/packages/kbn-test/src/jest/setup/emotion.js b/packages/kbn-test/src/jest/setup/emotion.js index dc135f4e56c5a..8a5e90e0c53b4 100644 --- a/packages/kbn-test/src/jest/setup/emotion.js +++ b/packages/kbn-test/src/jest/setup/emotion.js @@ -12,3 +12,18 @@ module.exports = createSerializer({ classNameReplacer: (className) => className, includeStyles: false, }); + +const consoleError = console.error; +console.error = (message, ...rest) => { + // @see https://github.com/emotion-js/emotion/issues/1105 + // This error that Emotion throws doesn't apply to Jest, so + // we're just going to remove the first/nth-child warning + if ( + typeof message === 'string' && + message.includes('The pseudo class') && + message.includes('is potentially unsafe when doing server-side rendering. Try changing it to') + ) { + return; + } + consoleError(message, ...rest); +}; diff --git a/packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.test.tsx.snap b/packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.test.tsx.snap index 1f4277ffd139f..92e0c62af3de6 100644 --- a/packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.test.tsx.snap +++ b/packages/shared-ux/card/no_data/src/__snapshots__/no_data_card.test.tsx.snap @@ -3,7 +3,7 @@ exports[`NoDataCard props button 1`] = `

@@ -77,7 +77,7 @@ exports[`NoDataCard props button 1`] = ` exports[`NoDataCard props extends EuiCardProps 1`] = `

@@ -151,7 +151,7 @@ exports[`NoDataCard props extends EuiCardProps 1`] = ` exports[`NoDataCard props href 1`] = `

@@ -225,7 +225,7 @@ exports[`NoDataCard props href 1`] = ` exports[`NoDataCard props no access to Fleet 1`] = `

Contact your administrator

This integration is not yet enabled. Your administrator has the required permissions to turn it on. @@ -284,7 +284,7 @@ exports[`NoDataCard props no access to Fleet 1`] = ` exports[`NoDataCard renders 1`] = `

diff --git a/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap b/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap index 404df945ae561..5cc46d20dc3a6 100644 --- a/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap +++ b/src/core/public/chrome/ui/header/__snapshots__/collapsible_nav.test.tsx.snap @@ -104,12 +104,12 @@ Array [ data-test-subj="collapsibleNavGroup-recentlyViewed" >

{ defaultMessage: 'Select sorting method for {display}', values: { display }, }), + 'euiColumnSortingDraggable.dragHandleAriaLabel': i18n.translate( + 'core.euiColumnSortingDraggable.dragHandleAriaLabel', + { + defaultMessage: 'Drag handle', + } + ), 'euiComboBox.listboxAriaLabel': i18n.translate('core.euiComboBox.listboxAriaLabel', { defaultMessage: 'Choose from the following options', }), diff --git a/src/core/public/overlays/modal/__snapshots__/modal_service.test.tsx.snap b/src/core/public/overlays/modal/__snapshots__/modal_service.test.tsx.snap index a04210758053e..944cbf12ecaf9 100644 --- a/src/core/public/overlays/modal/__snapshots__/modal_service.test.tsx.snap +++ b/src/core/public/overlays/modal/__snapshots__/modal_service.test.tsx.snap @@ -89,7 +89,7 @@ Array [ ] `; -exports[`ModalService openConfirm() renders a mountpoint confirm message 2`] = `"
Modal content
"`; +exports[`ModalService openConfirm() renders a mountpoint confirm message 2`] = `"
Modal content
"`; exports[`ModalService openConfirm() renders a string confirm message 1`] = ` Array [ @@ -217,7 +217,7 @@ Array [ ] `; -exports[`ModalService openConfirm() renders a string confirm message 2`] = `"

Some message

"`; +exports[`ModalService openConfirm() renders a string confirm message 2`] = `"

Some message

"`; exports[`ModalService openConfirm() with a currently active confirm replaces the current confirm with the new one 1`] = ` Array [ diff --git a/src/dev/license_checker/config.ts b/src/dev/license_checker/config.ts index dd6ac0e4cab49..d011ce465305c 100644 --- a/src/dev/license_checker/config.ts +++ b/src/dev/license_checker/config.ts @@ -77,6 +77,6 @@ export const LICENSE_OVERRIDES = { 'jsts@1.6.2': ['Eclipse Distribution License - v 1.0'], // cf. https://github.com/bjornharrtell/jsts '@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint '@elastic/ems-client@8.3.3': ['Elastic License 2.0'], - '@elastic/eui@58.0.0': ['SSPL-1.0 OR Elastic License 2.0'], + '@elastic/eui@59.0.1': ['SSPL-1.0 OR Elastic License 2.0'], 'language-subtag-registry@0.3.21': ['CC-BY-4.0'], // retired ODC‑By license https://github.com/mattcg/language-subtag-registry }; diff --git a/src/plugins/charts/public/static/components/common_chart_styles.ts b/src/plugins/charts/public/static/components/common_chart_styles.ts index 3050b5f4a74ba..f2c62dfdff927 100644 --- a/src/plugins/charts/public/static/components/common_chart_styles.ts +++ b/src/plugins/charts/public/static/components/common_chart_styles.ts @@ -17,9 +17,9 @@ export const useCommonChartStyles = () => { const subdued = useMemo( () => css` - fill: ${euiTheme.colors.subdued}; + fill: ${euiTheme.colors.subduedText}; `, - [euiTheme.colors.subdued] + [euiTheme.colors.subduedText] ); const accent = css` diff --git a/src/plugins/dashboard/public/application/embeddable/empty_screen/__snapshots__/dashboard_empty_screen.test.tsx.snap b/src/plugins/dashboard/public/application/embeddable/empty_screen/__snapshots__/dashboard_empty_screen.test.tsx.snap index 88ca645d44057..2234dcdba4dd9 100644 --- a/src/plugins/dashboard/public/application/embeddable/empty_screen/__snapshots__/dashboard_empty_screen.test.tsx.snap +++ b/src/plugins/dashboard/public/application/embeddable/empty_screen/__snapshots__/dashboard_empty_screen.test.tsx.snap @@ -21,15 +21,11 @@ exports[`DashboardEmptyScreen renders correctly with edit mode 1`] = ` class="euiSpacer euiSpacer--s css-78drzl-euiSpacer-s" />
-
- - Create content that tells a story about your data. - -
+ + Create content that tells a story about your data. +
`; @@ -44,7 +40,7 @@ exports[`DashboardEmptyScreen renders correctly with readonly mode 1`] = ` class="euiPageBody euiPageBody--borderRadiusNone" >

-
- You need additional privileges to edit this dashboard. -
+ You need additional privileges to edit this dashboard.
@@ -89,7 +81,7 @@ exports[`DashboardEmptyScreen renders correctly with view mode 1`] = ` class="euiPageBody euiPageBody--borderRadiusNone" >

-
-

- Click edit in the menu bar above to start adding panels. -

-
+

+ Click edit in the menu bar above to start adding panels. +

diff --git a/src/plugins/data/public/search/session/sessions_mgmt/components/status.test.tsx b/src/plugins/data/public/search/session/sessions_mgmt/components/status.test.tsx index 5cee810997393..0dbd14591e10e 100644 --- a/src/plugins/data/public/search/session/sessions_mgmt/components/status.test.tsx +++ b/src/plugins/data/public/search/session/sessions_mgmt/components/status.test.tsx @@ -65,9 +65,11 @@ describe('Background Search Session management status labels', () => { ); - const label = statusIndicator.find( - `.euiText[data-test-subj="sessionManagementStatusLabel"][data-test-status="in_progress"]` - ); + const label = statusIndicator + .find( + `.euiText[data-test-subj="sessionManagementStatusLabel"][data-test-status="in_progress"]` + ) + .last(); expect(label.text()).toMatchInlineSnapshot(`"In progress"`); }); diff --git a/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.test.tsx b/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.test.tsx index 39f20fec462a2..690713ac9232f 100644 --- a/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.test.tsx +++ b/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.test.tsx @@ -262,7 +262,7 @@ describe('Search Sessions Management table column factory', () => { const statusLine = mount(status.render!(mockSession.status, mockSession) as ReactElement); expect( - statusLine.find('.euiText[data-test-subj="sessionManagementStatusTooltip"]').text() + statusLine.find('.euiText[data-test-subj="sessionManagementStatusTooltip"]').last().text() ).toMatchInlineSnapshot(`"In progress"`); }); diff --git a/src/plugins/data/public/utils/table_inspector_view/components/__snapshots__/data_view.test.tsx.snap b/src/plugins/data/public/utils/table_inspector_view/components/__snapshots__/data_view.test.tsx.snap index 0169532453a64..cc03f542b01f3 100644 --- a/src/plugins/data/public/utils/table_inspector_view/components/__snapshots__/data_view.test.tsx.snap +++ b/src/plugins/data/public/utils/table_inspector_view/components/__snapshots__/data_view.test.tsx.snap @@ -2,7 +2,7 @@ exports[`Inspector Data View component should render empty state 1`] = `
No data available - +
-
-
-

- The element did not provide any data. -

-
- +

+ The element did not provide any data. +

+
@@ -463,7 +459,7 @@ Array [ class="euiFlexItem" >

diff --git a/src/plugins/data_view_management/public/components/field_editor/components/scripting_call_outs/__snapshots__/warning_call_out.test.tsx.snap b/src/plugins/data_view_management/public/components/field_editor/components/scripting_call_outs/__snapshots__/warning_call_out.test.tsx.snap index 958025649b107..9605634aa1a43 100644 --- a/src/plugins/data_view_management/public/components/field_editor/components/scripting_call_outs/__snapshots__/warning_call_out.test.tsx.snap +++ b/src/plugins/data_view_management/public/components/field_editor/components/scripting_call_outs/__snapshots__/warning_call_out.test.tsx.snap @@ -3,7 +3,7 @@ exports[`ScriptingWarningCallOut should render normally 1`] = ` Array [

@@ -33,7 +33,7 @@ Array [ class="euiSpacer euiSpacer--m css-jv9za2-euiSpacer-m" />,

-
-

- - For greater flexibility and Painless script support, use - - . - -

-
+

+ + For greater flexibility and Painless script support, use + + . + +

, diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/__snapshots__/source.test.tsx.snap b/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/__snapshots__/source.test.tsx.snap index 9b3cd1d056e03..c639e60dd9a7c 100644 --- a/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/__snapshots__/source.test.tsx.snap +++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/__snapshots__/source.test.tsx.snap @@ -2,7 +2,7 @@ exports[`Source Viewer component renders error state 1`] = `
An Error Occurred - +
-
-
-
- Could not fetch data at this time. Refresh the tab to try again. -
- -
+ +
- +
@@ -69,599 +65,64 @@ exports[`Source Viewer component renders error state 1`] = ` `; exports[`Source Viewer component renders json code editor 1`] = ` - - - +
- -
- -
- -
- - - - - - - - - - , - , - , - , - , - , - , - , - ], - }, - } - } - isStringTag={true} - serialized={ - Object { - "map": "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NwYWNlci9zcGFjZXIuc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9CUSIsImZpbGUiOiIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zcGFjZXIvc3BhY2VyLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgRWxhc3RpY3NlYXJjaCBCLlYuIGFuZC9vciBsaWNlbnNlZCB0byBFbGFzdGljc2VhcmNoIEIuVi4gdW5kZXIgb25lXG4gKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gTGljZW5zZWQgdW5kZXIgdGhlIEVsYXN0aWMgTGljZW5zZVxuICogMi4wIGFuZCB0aGUgU2VydmVyIFNpZGUgUHVibGljIExpY2Vuc2UsIHYgMTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHRcbiAqIGluIGNvbXBsaWFuY2Ugd2l0aCwgYXQgeW91ciBlbGVjdGlvbiwgdGhlIEVsYXN0aWMgTGljZW5zZSAyLjAgb3IgdGhlIFNlcnZlclxuICogU2lkZSBQdWJsaWMgTGljZW5zZSwgdiAxLlxuICovXG5cbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGxvZ2ljYWxzIH0gZnJvbSAnLi4vLi4vZ2xvYmFsX3N0eWxpbmcnO1xuaW1wb3J0IHsgVXNlRXVpVGhlbWUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbmV4cG9ydCBjb25zdCBldWlTcGFjZXJTdHlsZXMgPSAoeyBldWlUaGVtZSB9OiBVc2VFdWlUaGVtZSkgPT4gKHtcbiAgZXVpU3BhY2VyOiBjc3NgXG4gICAgZmxleC1zaHJpbms6IDA7IC8vIGRvbid0IGV2ZXIgbGV0IHRoaXMgc2hyaW5rIGluIGhlaWdodCBpZiBkaXJlY3QgZGVzY2VuZGVudCBvZiBmbGV4O1xuICBgLFxuICAvLyBTaXplc1xuICB4czogY3NzYFxuICAgICR7bG9naWNhbHMuaGVpZ2h0fTogJHtldWlUaGVtZS5zaXplLnhzfTtcbiAgYCxcbiAgczogY3NzYFxuICAgICR7bG9naWNhbHMuaGVpZ2h0fTogJHtldWlUaGVtZS5zaXplLnN9O1xuICBgLFxuICBtOiBjc3NgXG4gICAgJHtsb2dpY2Fscy5oZWlnaHR9OiAke2V1aVRoZW1lLnNpemUuYmFzZX07XG4gIGAsXG4gIGw6IGNzc2BcbiAgICAke2xvZ2ljYWxzLmhlaWdodH06ICR7ZXVpVGhlbWUuc2l6ZS5sfTtcbiAgYCxcbiAgeGw6IGNzc2BcbiAgICAke2xvZ2ljYWxzLmhlaWdodH06ICR7ZXVpVGhlbWUuc2l6ZS54bH07XG4gIGAsXG4gIHh4bDogY3NzYFxuICAgICR7bG9naWNhbHMuaGVpZ2h0fTogJHtldWlUaGVtZS5zaXplLnh4bH07XG4gIGAsXG59KTtcbiJdfQ== */", - "name": "78drzl-euiSpacer-s", - "next": undefined, - "styles": "flex-shrink:0;label:euiSpacer;;;block-size:8px;;label:s;;;", - "toString": [Function], - } - } - /> -
-
- -
- - - - - - - - - -
-
- - -
+ + - - - } - > - -
- -
-
-
-
-
-
-
-
- - - - + Copy to clipboard + + + + +
+
+
+
+
+
`; exports[`Source Viewer component renders loading state 1`] = ` - +
- - - - - - - - , - , - , - , - ], - }, - } - } - isStringTag={true} - serialized={ - Object { - "map": "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZ19zcGlubmVyLnN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0RFUiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nX3NwaW5uZXIuc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCBFbGFzdGljc2VhcmNoIEIuVi4gYW5kL29yIGxpY2Vuc2VkIHRvIEVsYXN0aWNzZWFyY2ggQi5WLiB1bmRlciBvbmVcbiAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiBMaWNlbnNlZCB1bmRlciB0aGUgRWxhc3RpYyBMaWNlbnNlXG4gKiAyLjAgYW5kIHRoZSBTZXJ2ZXIgU2lkZSBQdWJsaWMgTGljZW5zZSwgdiAxOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdFxuICogaW4gY29tcGxpYW5jZSB3aXRoLCBhdCB5b3VyIGVsZWN0aW9uLCB0aGUgRWxhc3RpYyBMaWNlbnNlIDIuMCBvciB0aGUgU2VydmVyXG4gKiBTaWRlIFB1YmxpYyBMaWNlbnNlLCB2IDEuXG4gKi9cblxuaW1wb3J0IHsgY3NzLCBrZXlmcmFtZXMgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBfRXVpVGhlbWVTaXplLCBldWlDYW5BbmltYXRlIH0gZnJvbSAnLi4vLi4vZ2xvYmFsX3N0eWxpbmcnO1xuaW1wb3J0IHsgVXNlRXVpVGhlbWUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBFdWlMb2FkaW5nU3Bpbm5lclNpemUgfSBmcm9tICcuL2xvYWRpbmdfc3Bpbm5lcic7XG5cbmNvbnN0IF9sb2FkaW5nU3Bpbm5lciA9IGtleWZyYW1lc2BcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKTtcbiAgfVxuYDtcblxuY29uc3Qgc3Bpbm5lclNpemVzOiB7XG4gIFtzaXplIGluIEV1aUxvYWRpbmdTcGlubmVyU2l6ZV06IF9FdWlUaGVtZVNpemU7XG59ID0ge1xuICBzOiAnbScsXG4gIG06ICdiYXNlJyxcbiAgbDogJ2wnLFxuICB4bDogJ3hsJyxcbiAgeHhsOiAneHhsJyxcbn07XG5cbmNvbnN0IHNwaW5uZXJDb2xvcnMgPSAobWFpbjogc3RyaW5nLCBoaWdobGlnaHQ6IHN0cmluZykgPT4ge1xuICByZXR1cm4gYCR7aGlnaGxpZ2h0fSAke21haW59ICR7bWFpbn0gJHttYWlufWA7XG59O1xuXG5leHBvcnQgY29uc3QgZXVpTG9hZGluZ1NwaW5uZXJTdHlsZXMgPSAoeyBldWlUaGVtZSB9OiBVc2VFdWlUaGVtZSkgPT4ge1xuICByZXR1cm4ge1xuICAgIGV1aUxvYWRpbmdTcGlubmVyOiBjc3NgXG4gICAgICBmbGV4LXNocmluazogMDsgLy8gRW5zdXJlcyBpdCBuZXZlciBzY2FsZXMgZG93biBiZWxvdyBpdHMgaW50ZW5kZWQgc2l6ZVxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYm9yZGVyOiAke2V1aVRoZW1lLmJvcmRlci50aGlja307XG4gICAgICBib3JkZXItY29sb3I6ICR7c3Bpbm5lckNvbG9ycyhcbiAgICAgICAgZXVpVGhlbWUuYm9yZGVyLmNvbG9yLFxuICAgICAgICBldWlUaGVtZS5jb2xvcnMucHJpbWFyeVxuICAgICAgKX07XG5cbiAgICAgICR7ZXVpQ2FuQW5pbWF0ZX0ge1xuICAgICAgICBhbmltYXRpb246ICR7X2xvYWRpbmdTcGlubmVyfSAwLjZzIGluZmluaXRlIGxpbmVhcjtcbiAgICAgIH1cbiAgICBgLFxuXG4gICAgLy8gU2l6ZXNcbiAgICBzOiBjc3NgXG4gICAgICB3aWR0aDogJHtldWlUaGVtZS5zaXplW3NwaW5uZXJTaXplcy5zXX07XG4gICAgICBoZWlnaHQ6ICR7ZXVpVGhlbWUuc2l6ZVtzcGlubmVyU2l6ZXMuc119O1xuICAgICAgYm9yZGVyLXdpZHRoOiBjYWxjKCR7ZXVpVGhlbWUuYm9yZGVyLndpZHRoLnRoaW59ICogMS41KTtcbiAgICBgLFxuICAgIG06IGNzc2BcbiAgICAgIHdpZHRoOiAke2V1aVRoZW1lLnNpemVbc3Bpbm5lclNpemVzLm1dfTtcbiAgICAgIGhlaWdodDogJHtldWlUaGVtZS5zaXplW3NwaW5uZXJTaXplcy5tXX07XG4gICAgICBib3JkZXItd2lkdGg6IGNhbGMoJHtldWlUaGVtZS5ib3JkZXIud2lkdGgudGhpbn0gKiAxLjUpO1xuICAgIGAsXG4gICAgbDogY3NzYFxuICAgICAgd2lkdGg6ICR7ZXVpVGhlbWUuc2l6ZVtzcGlubmVyU2l6ZXMubF19O1xuICAgICAgaGVpZ2h0OiAke2V1aVRoZW1lLnNpemVbc3Bpbm5lclNpemVzLmxdfTtcbiAgICBgLFxuICAgIHhsOiBjc3NgXG4gICAgICB3aWR0aDogJHtldWlUaGVtZS5zaXplW3NwaW5uZXJTaXplcy54bF19O1xuICAgICAgaGVpZ2h0OiAke2V1aVRoZW1lLnNpemVbc3Bpbm5lclNpemVzLnhsXX07XG4gICAgYCxcbiAgICB4eGw6IGNzc2BcbiAgICAgIHdpZHRoOiAke2V1aVRoZW1lLnNpemVbc3Bpbm5lclNpemVzLnh4bF19O1xuICAgICAgaGVpZ2h0OiAke2V1aVRoZW1lLnNpemVbc3Bpbm5lclNpemVzLnh4bF19O1xuICAgIGAsXG4gIH07XG59O1xuIl19 */", - "name": "155ohbx-euiLoadingSpinner-m", - "next": Object { - "name": "animation-c24ia8", - "next": undefined, - "styles": "@keyframes animation-c24ia8{ - from { - transform: rotate(0deg); - } - - to { - transform: rotate(359deg); - } -}", - }, - "styles": "flex-shrink:0;display:inline-block;border-radius:50%;border:2px solid #D3DAE6;border-color:#07C #D3DAE6 #D3DAE6 #D3DAE6;@media screen and (prefers-reduced-motion: no-preference){animation:animation-c24ia8 0.6s infinite linear;};label:euiLoadingSpinner;;;width:16px;height:16px;border-width:calc(1px * 1.5);;label:m;;;", - "toString": [Function], - } - } - /> - - - - -
- -
- - Loading JSON - -
-
-
-
+ Loading JSON
-
+
`; diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.test.tsx b/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.test.tsx index 537cdf6d3dc4a..2f08caa4f6817 100644 --- a/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.test.tsx +++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.test.tsx @@ -51,7 +51,7 @@ describe('Source Viewer component', () => { /> ); - expect(comp.children()).toMatchSnapshot(); + expect(comp.children().render()).toMatchSnapshot(); const loadingIndicator = comp.find(EuiLoadingSpinner); expect(loadingIndicator).not.toBe(null); }); @@ -111,7 +111,7 @@ describe('Source Viewer component', () => { /> ); - expect(comp.children()).toMatchSnapshot(); + expect(comp.children().render()).toMatchSnapshot(); const jsonCodeEditor = comp.find(JsonCodeEditorCommon); expect(jsonCodeEditor).not.toBe(null); }); diff --git a/src/plugins/embeddable/public/lib/embeddables/error_embeddable.test.tsx b/src/plugins/embeddable/public/lib/embeddables/error_embeddable.test.tsx index 6b8cd4cd55a5f..8d87b1d781f20 100644 --- a/src/plugins/embeddable/public/lib/embeddables/error_embeddable.test.tsx +++ b/src/plugins/embeddable/public/lib/embeddables/error_embeddable.test.tsx @@ -40,7 +40,7 @@ test('ErrorEmbeddable renders in compact mode', async () => { class="euiPopover__anchor errorEmbeddableCompact__popoverAnchor" >
+
+
+
-
- - - -
- - - - -
+

+ Exit full screen +

+
+
+
+
+ +
+ +
- +
`; diff --git a/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.test.tsx b/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.test.tsx index 6b45111df836e..8201133b0d2d6 100644 --- a/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.test.tsx +++ b/src/plugins/kibana_react/public/exit_full_screen_button/exit_full_screen_button.test.tsx @@ -26,7 +26,7 @@ describe('', () => { ); - expect(component).toMatchSnapshot(); + expect(component.render()).toMatchSnapshot(); }); test('passing `false` to toggleChrome does not toggle chrome', () => { diff --git a/src/plugins/kibana_react/public/page_template/__snapshots__/page_template.test.tsx.snap b/src/plugins/kibana_react/public/page_template/__snapshots__/page_template.test.tsx.snap index 4f2fd7cee4a5a..3f61ab83ff1fa 100644 --- a/src/plugins/kibana_react/public/page_template/__snapshots__/page_template.test.tsx.snap +++ b/src/plugins/kibana_react/public/page_template/__snapshots__/page_template.test.tsx.snap @@ -22,7 +22,7 @@ exports[`KibanaPageTemplate render basic template 1`] = ` class="euiFlexItem" >

test @@ -46,7 +46,7 @@ exports[`KibanaPageTemplate render basic template 1`] = `

test @@ -237,7 +237,7 @@ exports[`KibanaPageTemplate render solutionNav 1`] = `

@@ -45,7 +45,7 @@ exports[`NoDataCard props button 1`] = ` exports[`NoDataCard props href 1`] = `

@@ -95,7 +95,7 @@ exports[`NoDataCard props href 1`] = ` exports[`NoDataCard props recommended 1`] = `

@@ -131,7 +131,7 @@ exports[`NoDataCard props recommended 1`] = ` exports[`NoDataCard renders 1`] = `

diff --git a/src/plugins/saved_objects_management/public/management_section/object_view/components/__snapshots__/not_found_errors.test.tsx.snap b/src/plugins/saved_objects_management/public/management_section/object_view/components/__snapshots__/not_found_errors.test.tsx.snap index f0ca2221d207b..7cf46888594f7 100644 --- a/src/plugins/saved_objects_management/public/management_section/object_view/components/__snapshots__/not_found_errors.test.tsx.snap +++ b/src/plugins/saved_objects_management/public/management_section/object_view/components/__snapshots__/not_found_errors.test.tsx.snap @@ -2,7 +2,7 @@ exports[`NotFoundErrors component renders correctly for index-pattern type 1`] = `

-
-
- The data view associated with this object no longer exists. -
-
- If you know what this error means, you can use the - + The data view associated with this object no longer exists. +
+ + (opens in a new tab or window) + + + to fix it — otherwise click the delete button above.
@@ -55,7 +51,7 @@ exports[`NotFoundErrors component renders correctly for index-pattern type 1`] = exports[`NotFoundErrors component renders correctly for index-pattern-field type 1`] = `

-
-
- A field associated with this object no longer exists in the data view. -
-
- If you know what this error means, you can use the - + A field associated with this object no longer exists in the data view. +
+ + (opens in a new tab or window) + + + to fix it — otherwise click the delete button above.
@@ -108,7 +100,7 @@ exports[`NotFoundErrors component renders correctly for index-pattern-field type exports[`NotFoundErrors component renders correctly for search type 1`] = `

-
-
- The saved search associated with this object no longer exists. -
-
- If you know what this error means, you can use the - + The saved search associated with this object no longer exists. +
+ + (opens in a new tab or window) + + + to fix it — otherwise click the delete button above.
@@ -161,7 +149,7 @@ exports[`NotFoundErrors component renders correctly for search type 1`] = ` exports[`NotFoundErrors component renders correctly for unknown type 1`] = `

- diff --git a/src/plugins/saved_objects_management/public/management_section/objects_table/components/overwrite_modal.tsx b/src/plugins/saved_objects_management/public/management_section/objects_table/components/overwrite_modal.tsx index cfe0b2be1d3c0..4458ed02f4f4c 100644 --- a/src/plugins/saved_objects_management/public/management_section/objects_table/components/overwrite_modal.tsx +++ b/src/plugins/saved_objects_management/public/management_section/objects_table/components/overwrite_modal.tsx @@ -46,7 +46,7 @@ export const OverwriteModal = ({ conflict, onFinish }: OverwriteModalProps) => { {header} -

+

{idText}
{lastUpdatedText} diff --git a/src/plugins/unified_search/public/dataview_picker/dataview_list.test.tsx b/src/plugins/unified_search/public/dataview_picker/dataview_list.test.tsx index 813beae20369c..6bbbe6d8df05b 100644 --- a/src/plugins/unified_search/public/dataview_picker/dataview_list.test.tsx +++ b/src/plugins/unified_search/public/dataview_picker/dataview_list.test.tsx @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import React from 'react'; +import React, { MouseEvent } from 'react'; import { EuiSelectable } from '@elastic/eui'; import { act } from 'react-dom/test-utils'; import { ShallowWrapper } from 'enzyme'; @@ -22,6 +22,7 @@ function getDataViewPickerOptions(instance: ShallowWrapper) { } function selectDataViewPickerOption(instance: ShallowWrapper, selectedLabel: string) { + const event = {} as MouseEvent; const options: Array<{ label: string; checked?: 'on' | 'off' }> = getDataViewPickerOptions( instance ).map((option: { label: string }) => @@ -29,7 +30,7 @@ function selectDataViewPickerOption(instance: ShallowWrapper, selectedLabel: str ? { ...option, checked: 'on' } : { ...option, checked: undefined } ); - return getDataViewPickerList(instance).prop('onChange')!(options); + return getDataViewPickerList(instance).prop('onChange')!(options, event); } describe('DataView list component', () => { diff --git a/src/plugins/unified_search/public/filter_bar/filter_editor/lib/__snapshots__/filter_label.test.tsx.snap b/src/plugins/unified_search/public/filter_bar/filter_editor/lib/__snapshots__/filter_label.test.tsx.snap index 82ac1e09386c1..58e9fa6307687 100644 --- a/src/plugins/unified_search/public/filter_bar/filter_editor/lib/__snapshots__/filter_label.test.tsx.snap +++ b/src/plugins/unified_search/public/filter_bar/filter_editor/lib/__snapshots__/filter_label.test.tsx.snap @@ -10,7 +10,7 @@ exports[`alias 1`] = ` exports[`alias with error status 1`] = `

NOT @@ -27,7 +27,7 @@ exports[`alias with error status 1`] = ` exports[`alias with warning status 1`] = `
NOT diff --git a/src/plugins/vis_default_editor/public/components/__snapshots__/agg.test.tsx.snap b/src/plugins/vis_default_editor/public/components/__snapshots__/agg.test.tsx.snap index dd9a923269294..becf550348d50 100644 --- a/src/plugins/vis_default_editor/public/components/__snapshots__/agg.test.tsx.snap +++ b/src/plugins/vis_default_editor/public/components/__snapshots__/agg.test.tsx.snap @@ -1,9 +1,8 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`DefaultEditorAgg component should init with the default set of props 1`] = ` - @@ -12,10 +11,8 @@ exports[`DefaultEditorAgg component should init with the default set of props 1` } buttonContentClassName="visEditorSidebar__aggGroupAccordionButtonContent eui-textTruncate" - buttonElement="button" className="visEditorSidebar__section visEditorSidebar__collapsible visEditorSidebar__collapsible--marginBottom" data-test-subj="visEditorAggAccordion1" - element="div" extraAction={ - + `; diff --git a/src/plugins/vis_default_editor/public/components/agg.test.tsx b/src/plugins/vis_default_editor/public/components/agg.test.tsx index c6a4057c9b415..c8ffb3abc0463 100644 --- a/src/plugins/vis_default_editor/public/components/agg.test.tsx +++ b/src/plugins/vis_default_editor/public/components/agg.test.tsx @@ -129,7 +129,7 @@ describe('DefaultEditorAgg component', () => { const comp = mount(); expect(defaultProps.setAggsState).toBeCalledTimes(0); - comp.find('.euiAccordion__button').simulate('click'); + comp.find('.euiAccordion__button').last().simulate('click'); // make sure that the accordion is collapsed expect(comp.find('.euiAccordion-isOpen').exists()).toBeFalsy(); diff --git a/src/plugins/vis_types/timeseries/public/application/components/data_format_picker.tsx b/src/plugins/vis_types/timeseries/public/application/components/data_format_picker.tsx index fdfdd1427b51d..c057a741a0037 100644 --- a/src/plugins/vis_types/timeseries/public/application/components/data_format_picker.tsx +++ b/src/plugins/vis_types/timeseries/public/application/components/data_format_picker.tsx @@ -46,7 +46,7 @@ const getDataFormatPickerOptions = ( <> {defaultOptionLabel} -

+

{i18n.translate('visTypeTimeseries.dataFormatPicker.defaultLabelDescription', { defaultMessage: 'Applies common formatting', })} diff --git a/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axes_panel.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axes_panel.test.tsx.snap index 1dd916f827fe6..7017d6f278565 100644 --- a/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axes_panel.test.tsx.snap +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axes_panel.test.tsx.snap @@ -45,9 +45,8 @@ exports[`ValueAxesPanel component should init with the default set of props 1`] - @@ -66,10 +65,8 @@ exports[`ValueAxesPanel component should init with the default set of props 1`] } buttonContentClassName="visEditorSidebar__aggGroupAccordionButtonContent eui-textTruncate" - buttonElement="button" className="visEditorSidebar__section visEditorSidebar__collapsible" data-test-subj="toggleYAxisOptions-ValueAxis-1" - element="div" extraAction={ - - + @@ -178,10 +171,8 @@ exports[`ValueAxesPanel component should init with the default set of props 1`] } buttonContentClassName="visEditorSidebar__aggGroupAccordionButtonContent eui-textTruncate" - buttonElement="button" className="visEditorSidebar__section visEditorSidebar__collapsible" data-test-subj="toggleYAxisOptions-ValueAxis-2" - element="div" extraAction={ - + `; diff --git a/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axis_options.test.tsx.snap b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axis_options.test.tsx.snap index b036cd93d300b..73025e7f49c0f 100644 --- a/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axis_options.test.tsx.snap +++ b/src/plugins/vis_types/xy/public/editor/components/options/metrics_axes/__snapshots__/value_axis_options.test.tsx.snap @@ -112,19 +112,13 @@ exports[`ValueAxisOptions component should init with the default set of props 1` - - + `; diff --git a/src/plugins/visualizations/public/components/__snapshots__/visualization_noresults.test.js.snap b/src/plugins/visualizations/public/components/__snapshots__/visualization_noresults.test.js.snap index 98d37568e4541..b01fd0095c438 100644 --- a/src/plugins/visualizations/public/components/__snapshots__/visualization_noresults.test.js.snap +++ b/src/plugins/visualizations/public/components/__snapshots__/visualization_noresults.test.js.snap @@ -6,7 +6,7 @@ exports[`VisualizationNoResults should render according to snapshot 1`] = ` data-test-subj="visNoResult" >

-
-
- No results found -
+ No results found
-
+
diff --git a/src/plugins/visualizations/public/components/visualization_error.tsx b/src/plugins/visualizations/public/components/visualization_error.tsx index 8ec9f3c71f00c..8e49211b4b949 100644 --- a/src/plugins/visualizations/public/components/visualization_error.tsx +++ b/src/plugins/visualizations/public/components/visualization_error.tsx @@ -22,7 +22,7 @@ export class VisualizationError extends React.Component iconColor="danger" data-test-subj="visualization-error" body={ - + {typeof this.props.error === 'string' ? this.props.error : this.props.error.message} } diff --git a/src/plugins/visualizations/public/components/visualization_noresults.tsx b/src/plugins/visualizations/public/components/visualization_noresults.tsx index 5b03da62fbf42..e733b6b51bf17 100644 --- a/src/plugins/visualizations/public/components/visualization_noresults.tsx +++ b/src/plugins/visualizations/public/components/visualization_noresults.tsx @@ -23,7 +23,7 @@ export class VisualizationNoResults extends React.Component + {i18n.translate('visualizations.noResultsFoundTitle', { defaultMessage: 'No results found', })} diff --git a/src/plugins/visualizations/public/wizard/new_vis_modal.test.tsx b/src/plugins/visualizations/public/wizard/new_vis_modal.test.tsx index cdbaab8e73abf..36d756d63f660 100644 --- a/src/plugins/visualizations/public/wizard/new_vis_modal.test.tsx +++ b/src/plugins/visualizations/public/wizard/new_vis_modal.test.tsx @@ -151,7 +151,7 @@ describe('NewVisModal', () => { savedObjects={{} as SavedObjectsStart} /> ); - const visCard = wrapper.find('[data-test-subj="visType-vis"]').at(0); + const visCard = wrapper.find('[data-test-subj="visType-vis"]').last(); visCard.simulate('click'); expect(window.location.assign).toBeCalledWith('testbasepath/app/visualize#/create?type=vis'); }); @@ -170,7 +170,7 @@ describe('NewVisModal', () => { savedObjects={{} as SavedObjectsStart} /> ); - const visCard = wrapper.find('[data-test-subj="visType-vis"]').at(0); + const visCard = wrapper.find('[data-test-subj="visType-vis"]').last(); visCard.simulate('click'); expect(window.location.assign).toBeCalledWith( 'testbasepath/app/visualize#/create?type=vis&foo=true&bar=42' @@ -196,7 +196,7 @@ describe('NewVisModal', () => { savedObjects={{} as SavedObjectsStart} /> ); - const visCard = wrapper.find('[data-test-subj="visType-visWithAliasUrl"]').at(0); + const visCard = wrapper.find('[data-test-subj="visType-visWithAliasUrl"]').last(); visCard.simulate('click'); expect(stateTransfer.navigateToEditor).toBeCalledWith('otherApp', { path: '#/aliasUrl', @@ -221,7 +221,7 @@ describe('NewVisModal', () => { savedObjects={{} as SavedObjectsStart} /> ); - const visCard = wrapper.find('[data-test-subj="visType-visWithAliasUrl"]').at(0); + const visCard = wrapper.find('[data-test-subj="visType-visWithAliasUrl"]').last(); visCard.simulate('click'); expect(navigateToApp).toBeCalledWith('otherApp', { path: '#/aliasUrl' }); expect(onClose).toHaveBeenCalled(); diff --git a/test/functional/page_objects/visual_builder_page.ts b/test/functional/page_objects/visual_builder_page.ts index da1253926a74d..377c844f7a446 100644 --- a/test/functional/page_objects/visual_builder_page.ts +++ b/test/functional/page_objects/visual_builder_page.ts @@ -936,7 +936,7 @@ export class VisualBuilderPageObject extends FtrService { public async getVisualizeError() { const visError = await this.testSubjects.find(`visualization-error`); - const errorSpans = await visError.findAllByClassName('euiText--extraSmall'); + const errorSpans = await visError.findAllByTestSubject('visualization-error-text'); return await errorSpans[0].getVisibleText(); } diff --git a/x-pack/plugins/apm/public/components/alerting/transaction_duration_anomaly_alert_trigger/select_anomaly_severity.tsx b/x-pack/plugins/apm/public/components/alerting/transaction_duration_anomaly_alert_trigger/select_anomaly_severity.tsx index 70d4702a326ef..f8d414ff326cc 100644 --- a/x-pack/plugins/apm/public/components/alerting/transaction_duration_anomaly_alert_trigger/select_anomaly_severity.tsx +++ b/x-pack/plugins/apm/public/components/alerting/transaction_duration_anomaly_alert_trigger/select_anomaly_severity.tsx @@ -46,10 +46,7 @@ export function SelectAnomalySeverity({ onChange, value }: Props) { -

+

} diff --git a/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations.tsx b/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations.tsx index c689c06ec45a4..a330b08c0ad6f 100644 --- a/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations.tsx +++ b/x-pack/plugins/apm/public/components/app/correlations/failed_transactions_correlations.tsx @@ -513,7 +513,7 @@ export function FailedTransactionsCorrelations({ style={{ display: 'flex', flexDirection: 'row', - paddingLeft: euiTheme.eui.paddingSizes.s, + paddingLeft: euiTheme.eui.euiSizeS, }} > theme.eui.paddingSizes.xs}; + margin: ${({ theme }) => theme.eui.euiSizeXS}; `; const ZoomInButton = euiStyled(Button)` - margin-bottom: ${({ theme }) => theme.eui.paddingSizes.s}; + margin-bottom: ${({ theme }) => theme.eui.euiSizeS}; `; const Panel = euiStyled(EuiPanel)` - margin-bottom: ${({ theme }) => theme.eui.paddingSizes.s}; + margin-bottom: ${({ theme }) => theme.eui.euiSizeS}; `; const steps = 5; diff --git a/x-pack/plugins/apm/public/components/app/service_map/cytoscape_options.ts b/x-pack/plugins/apm/public/components/app/service_map/cytoscape_options.ts index 2c9a471b6621e..524006967cbf5 100644 --- a/x-pack/plugins/apm/public/components/app/service_map/cytoscape_options.ts +++ b/x-pack/plugins/apm/public/components/app/service_map/cytoscape_options.ts @@ -153,9 +153,9 @@ const getStyle = ( 'text-background-color': theme.eui.euiColorPrimary, 'text-background-opacity': (el: cytoscape.NodeSingular) => el.hasClass('primary') || el.selected() ? 0.1 : 0, - 'text-background-padding': theme.eui.paddingSizes.xs, + 'text-background-padding': theme.eui.euiSizeXS, 'text-background-shape': 'roundrectangle', - 'text-margin-y': parseInt(theme.eui.paddingSizes.s, 10), + 'text-margin-y': parseInt(theme.eui.euiSizeS, 10), 'text-max-width': '200px', 'text-valign': 'bottom', 'text-wrap': 'ellipsis', @@ -175,9 +175,7 @@ const getStyle = ( // fairly new. // // @ts-expect-error - 'target-distance-from-node': isIE11 - ? undefined - : theme.eui.paddingSizes.xs, + 'target-distance-from-node': isIE11 ? undefined : theme.eui.euiSizeXS, width: 1, 'source-arrow-shape': 'none', 'z-index': zIndexEdge, @@ -192,10 +190,10 @@ const getStyle = ( // @ts-expect-error 'source-distance-from-node': isIE11 ? undefined - : parseInt(theme.eui.paddingSizes.xs, 10), + : parseInt(theme.eui.euiSizeXS, 10), 'target-distance-from-node': isIE11 ? undefined - : parseInt(theme.eui.paddingSizes.xs, 10), + : parseInt(theme.eui.euiSizeXS, 10), }, }, { diff --git a/x-pack/plugins/apm/public/components/app/service_profiling/service_profiling_flamegraph.tsx b/x-pack/plugins/apm/public/components/app/service_profiling/service_profiling_flamegraph.tsx index 1c92d6831e87f..064b33d2dd9c0 100644 --- a/x-pack/plugins/apm/public/components/app/service_profiling/service_profiling_flamegraph.tsx +++ b/x-pack/plugins/apm/public/components/app/service_profiling/service_profiling_flamegraph.tsx @@ -60,7 +60,7 @@ const TooltipContainer = euiStyled.div` background-color: ${(props) => props.theme.eui.euiColorDarkestShade}; border-radius: ${(props) => props.theme.eui.euiBorderRadius}; color: ${(props) => props.theme.eui.euiColorLightestShade}; - padding: ${(props) => props.theme.eui.paddingSizes.s}; + padding: ${(props) => props.theme.eui.euiSizeS}; `; const formatValue = ( diff --git a/x-pack/plugins/apm/public/components/app/settings/custom_link/create_edit_custom_link_flyout/link_preview.test.tsx b/x-pack/plugins/apm/public/components/app/settings/custom_link/create_edit_custom_link_flyout/link_preview.test.tsx index 4c8a5bc00285e..00145dff25754 100644 --- a/x-pack/plugins/apm/public/components/app/settings/custom_link/create_edit_custom_link_flyout/link_preview.test.tsx +++ b/x-pack/plugins/apm/public/components/app/settings/custom_link/create_edit_custom_link_flyout/link_preview.test.tsx @@ -23,12 +23,7 @@ export const removeExternalLinkText = (str: string) => describe('LinkPreview', () => { const getElementValue = (container: HTMLElement, id: string) => - getNodeText( - ( - (getByTestId(container, id) as HTMLDivElement) - .children as HTMLCollection - )[0] as HTMLDivElement - ); + getNodeText(getByTestId(container, id)); it('shows label and url default values', () => { act(() => { diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/waterfall_item.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/waterfall_item.tsx index 1b16840e566cd..329141612dcec 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/waterfall_item.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/waterfall_item.tsx @@ -44,7 +44,7 @@ const Container = euiStyled.div` position: relative; display: block; user-select: none; - padding-top: ${({ theme }) => theme.eui.paddingSizes.s}; + padding-top: ${({ theme }) => theme.eui.euiSizeS}; padding-bottom: ${({ theme }) => theme.eui.euiSizeM}; margin-right: ${(props) => props.timelineMargins.right}px; margin-left: ${(props) => diff --git a/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.tsx b/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.tsx index 39451002efcb2..63e8ff6bdd850 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/instances_latency_distribution_chart/custom_tooltip.tsx @@ -156,7 +156,7 @@ function MultipleInstanceCustomTooltip({

{latencyLabel} @@ -176,7 +176,7 @@ function MultipleInstanceCustomTooltip({
{throughputLabel} @@ -211,7 +211,7 @@ export function CustomTooltip( ) : ( )} -
+
{clickToFilterDescription}
diff --git a/x-pack/plugins/apm/public/components/shared/charts/timeline/marker/agent_marker.tsx b/x-pack/plugins/apm/public/components/shared/charts/timeline/marker/agent_marker.tsx index 46c04983464e8..37ddfbda58c3b 100644 --- a/x-pack/plugins/apm/public/components/shared/charts/timeline/marker/agent_marker.tsx +++ b/x-pack/plugins/apm/public/components/shared/charts/timeline/marker/agent_marker.tsx @@ -15,12 +15,12 @@ import { Legend } from '../legend'; const NameContainer = euiStyled.div` border-bottom: 1px solid ${({ theme }) => theme.eui.euiColorMediumShade}; - padding-bottom: ${({ theme }) => theme.eui.paddingSizes.s}; + padding-bottom: ${({ theme }) => theme.eui.euiSizeS}; `; const TimeContainer = euiStyled.div` color: ${({ theme }) => theme.eui.euiColorMediumShade}; - padding-top: ${({ theme }) => theme.eui.paddingSizes.s}; + padding-top: ${({ theme }) => theme.eui.euiSizeS}; `; interface Props { diff --git a/x-pack/plugins/apm/public/components/shared/kuery_bar/typeahead/suggestion.js b/x-pack/plugins/apm/public/components/shared/kuery_bar/typeahead/suggestion.js index 9c2ee835b8f72..3a300cea12173 100644 --- a/x-pack/plugins/apm/public/components/shared/kuery_bar/typeahead/suggestion.js +++ b/x-pack/plugins/apm/public/components/shared/kuery_bar/typeahead/suggestion.js @@ -36,7 +36,7 @@ const Description = euiStyled.div` span { font-family: ${({ theme }) => theme.eui.euiCodeFontFamily}; color: ${({ theme }) => theme.eui.euiColorFullShade}; - padding: 0 ${({ theme }) => theme.eui.paddingSizes.xs}; + padding: 0 ${({ theme }) => theme.eui.euiSizeXS}; display: inline-block; } } @@ -75,7 +75,7 @@ const Icon = euiStyled.div` const TextValue = euiStyled.div` flex: 0 0 ${unit * 16}px; color: ${({ theme }) => theme.eui.euiColorDarkestShade}; - padding: 0 ${({ theme }) => theme.eui.paddingSizes.s}; + padding: 0 ${({ theme }) => theme.eui.euiSizeS}; `; function getEuiIconType(type) { diff --git a/x-pack/plugins/apm/public/components/shared/stacktrace/cause_stacktrace.test.tsx b/x-pack/plugins/apm/public/components/shared/stacktrace/cause_stacktrace.test.tsx index 5b8cf6e4ad496..07d5c29eb34c6 100644 --- a/x-pack/plugins/apm/public/components/shared/stacktrace/cause_stacktrace.test.tsx +++ b/x-pack/plugins/apm/public/components/shared/stacktrace/cause_stacktrace.test.tsx @@ -46,7 +46,9 @@ describe('CauseStacktrace', () => { }; expect( - shallow().find('Styled(EuiAccordion)') + shallow().find( + 'Styled(WithEuiTheme(EuiAccordionClass))' + ) ).toHaveLength(1); }); }); diff --git a/x-pack/plugins/apm/public/components/shared/stacktrace/cause_stacktrace.tsx b/x-pack/plugins/apm/public/components/shared/stacktrace/cause_stacktrace.tsx index b132239902f9d..8a24405a586ba 100644 --- a/x-pack/plugins/apm/public/components/shared/stacktrace/cause_stacktrace.tsx +++ b/x-pack/plugins/apm/public/components/shared/stacktrace/cause_stacktrace.tsx @@ -30,7 +30,7 @@ const CausedByHeading = euiStyled('span')` `; const FramesContainer = euiStyled('div')` - padding-left: ${({ theme }) => theme.eui.paddingSizes.m}; + padding-left: ${({ theme }) => theme.eui.euiSizeM}; `; function CausedBy({ message }: { message: string }) { diff --git a/x-pack/plugins/apm/public/components/shared/stacktrace/context.tsx b/x-pack/plugins/apm/public/components/shared/stacktrace/context.tsx index 9ba8919affc74..7c8688969f05f 100644 --- a/x-pack/plugins/apm/public/components/shared/stacktrace/context.tsx +++ b/x-pack/plugins/apm/public/components/shared/stacktrace/context.tsx @@ -49,8 +49,8 @@ const LineNumberContainer = euiStyled.div<{ isLibraryFrame: boolean }>` const LineNumber = euiStyled.div<{ highlight: boolean }>` position: relative; min-width: 42px; - padding-left: ${({ theme }) => theme.eui.paddingSizes.s}; - padding-right: ${({ theme }) => theme.eui.paddingSizes.xs}; + padding-left: ${({ theme }) => theme.eui.euiSizeS}; + padding-right: ${({ theme }) => theme.eui.euiSizeXS}; color: ${({ theme }) => theme.eui.euiColorMediumShade}; line-height: ${LINE_HEIGHT}px; text-align: right; diff --git a/x-pack/plugins/apm/public/components/shared/stacktrace/variables.tsx b/x-pack/plugins/apm/public/components/shared/stacktrace/variables.tsx index 2844589cc60a8..9b7ddea51de44 100644 --- a/x-pack/plugins/apm/public/components/shared/stacktrace/variables.tsx +++ b/x-pack/plugins/apm/public/components/shared/stacktrace/variables.tsx @@ -17,8 +17,7 @@ const VariablesContainer = euiStyled.div` background: ${({ theme }) => theme.eui.euiColorEmptyShade}; border-radius: 0 0 ${({ theme }) => `${theme.eui.euiBorderRadiusSmall} ${theme.eui.euiBorderRadiusSmall}`}; - padding: ${({ theme }) => - `${theme.eui.paddingSizes.s} ${theme.eui.paddingSizes.m}`}; + padding: ${({ theme }) => `${theme.eui.euiSizeS} ${theme.eui.euiSizeM}`}; `; interface Props { diff --git a/x-pack/plugins/apm/public/components/shared/summary/index.tsx b/x-pack/plugins/apm/public/components/shared/summary/index.tsx index 649d9bdb66447..e0f6c1e090978 100644 --- a/x-pack/plugins/apm/public/components/shared/summary/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/summary/index.tsx @@ -17,7 +17,7 @@ interface Props { const Item = euiStyled(EuiFlexItem)` flex-wrap: nowrap; border-right: 1px solid ${({ theme }) => theme.eui.euiColorLightShade}; - padding-right: ${({ theme }) => theme.eui.paddingSizes.s}; + padding-right: ${({ theme }) => theme.eui.euiSizeS}; flex-flow: row nowrap; line-height: 1.5; align-items: center !important; diff --git a/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx b/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx index 8b49fe388bcf2..ed157810f0617 100644 --- a/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx +++ b/x-pack/plugins/apm/public/components/shared/time_comparison/index.tsx @@ -30,7 +30,7 @@ const PrependContainer = euiStyled.div` align-items: center; background-color: ${({ theme }) => theme.eui.euiFormInputGroupLabelBackground}; - padding: 0 ${({ theme }) => theme.eui.paddingSizes.m}; + padding: 0 ${({ theme }) => theme.eui.euiSizeM}; `; export function TimeComparison() { diff --git a/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/components/__stories__/__snapshots__/time_filter.stories.storyshot b/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/components/__stories__/__snapshots__/time_filter.stories.storyshot index e82b6bf082b05..6fe10111cf188 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/components/__stories__/__snapshots__/time_filter.stories.storyshot +++ b/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/components/__stories__/__snapshots__/time_filter.stories.storyshot @@ -195,16 +195,16 @@ exports[`Storyshots renderers/TimeFilter with absolute time bounds 1`] = `
-
-
- → -
-
+ + +
@@ -573,16 +573,16 @@ exports[`Storyshots renderers/TimeFilter with relative time bounds 1`] = `
-
-
- → -
-
+ + +
diff --git a/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/axis_config/__stories__/__snapshots__/extended_template.stories.storyshot b/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/axis_config/__stories__/__snapshots__/extended_template.stories.storyshot index 38ea65195ee1c..3ea98bee12639 100644 --- a/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/axis_config/__stories__/__snapshots__/extended_template.stories.storyshot +++ b/x-pack/plugins/canvas/canvas_plugin_src/uis/arguments/axis_config/__stories__/__snapshots__/extended_template.stories.storyshot @@ -171,16 +171,12 @@ exports[`Storyshots arguments/AxisConfig/components extended disabled 1`] = ` } >
-
-

- Switch on to view axis settings -

-
+

+ Switch on to view axis settings +

`; diff --git a/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset.stories.storyshot b/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset.stories.storyshot index 515fc29fc9d56..f04bd35abd188 100644 --- a/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset.stories.storyshot @@ -12,7 +12,7 @@ exports[`Storyshots components/Assets/Asset airplane 1`] = ` className="euiFlexItem" >


@@ -199,7 +199,7 @@ exports[`Storyshots components/Assets/Asset marker 1`] = ` className="euiFlexItem" >


diff --git a/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset_manager.stories.storyshot b/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset_manager.stories.storyshot index 8252d2e3aed45..b1352056915a9 100644 --- a/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset_manager.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/asset_manager/__stories__/__snapshots__/asset_manager.stories.storyshot @@ -96,25 +96,21 @@ exports[`Storyshots components/Assets/AssetManager no assets 1`] = ` className="euiModalBody__overflow" >

-
-

- Below are the image assets in this workpad. Any assets that are currently in use cannot be determined at this time. To reclaim space, delete assets. -

-
+

+ Below are the image assets in this workpad. Any assets that are currently in use cannot be determined at this time. To reclaim space, delete assets. +

0% space used @@ -300,16 +296,12 @@ exports[`Storyshots components/Assets/AssetManager two assets 1`] = ` className="euiModalBody__overflow" >
-
-

- Below are the image assets in this workpad. Any assets that are currently in use cannot be determined at this time. To reclaim space, delete assets. -

-
+

+ Below are the image assets in this workpad. Any assets that are currently in use cannot be determined at this time. To reclaim space, delete assets. +


@@ -497,7 +489,7 @@ exports[`Storyshots components/Assets/AssetManager two assets 1`] = ` className="euiFlexItem" >


@@ -694,7 +686,7 @@ exports[`Storyshots components/Assets/AssetManager two assets 1`] = ` className="euiFlexItem euiFlexItem--flexGrowZero eui-textNoWrap" >

0% space used diff --git a/x-pack/plugins/canvas/public/components/custom_element_modal/__stories__/__snapshots__/custom_element_modal.stories.storyshot b/x-pack/plugins/canvas/public/components/custom_element_modal/__stories__/__snapshots__/custom_element_modal.stories.storyshot index 229ad82b350ee..55ed666cdaa90 100644 --- a/x-pack/plugins/canvas/public/components/custom_element_modal/__stories__/__snapshots__/custom_element_modal.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/custom_element_modal/__stories__/__snapshots__/custom_element_modal.stories.storyshot @@ -200,7 +200,7 @@ exports[`Storyshots components/Elements/CustomElementModal with description 1`]

Take a screenshot of your element and upload it here. This can also be done after saving. @@ -219,7 +219,7 @@ exports[`Storyshots components/Elements/CustomElementModal with description 1`] className="euiSpacer euiSpacer--s css-78drzl-euiSpacer-s" />

@@ -517,7 +517,7 @@ exports[`Storyshots components/Elements/CustomElementModal with image 1`] = `

Take a screenshot of your element and upload it here. This can also be done after saving. @@ -536,7 +536,7 @@ exports[`Storyshots components/Elements/CustomElementModal with image 1`] = ` className="euiSpacer euiSpacer--s css-78drzl-euiSpacer-s" />

Take a screenshot of your element and upload it here. This can also be done after saving. @@ -848,7 +848,7 @@ exports[`Storyshots components/Elements/CustomElementModal with name 1`] = ` className="euiSpacer euiSpacer--s css-78drzl-euiSpacer-s" />

Take a screenshot of your element and upload it here. This can also be done after saving. @@ -1157,7 +1157,7 @@ exports[`Storyshots components/Elements/CustomElementModal with title 1`] = ` className="euiSpacer euiSpacer--s css-78drzl-euiSpacer-s" />

-
-

- The datasource has an argument controlled by an expression. Use the expression editor to modify the datasource. -

-
+

+ The datasource has an argument controlled by an expression. Use the expression editor to modify the datasource. +

diff --git a/x-pack/plugins/canvas/public/components/element_card/__stories__/__snapshots__/element_card.stories.storyshot b/x-pack/plugins/canvas/public/components/element_card/__stories__/__snapshots__/element_card.stories.storyshot index d07f8b44feb62..c02fdeeb3fa85 100644 --- a/x-pack/plugins/canvas/public/components/element_card/__stories__/__snapshots__/element_card.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/element_card/__stories__/__snapshots__/element_card.stories.storyshot @@ -9,7 +9,7 @@ exports[`Storyshots components/Elements/ElementCard with click handler 1`] = ` } >

@@ -64,7 +64,7 @@ exports[`Storyshots components/Elements/ElementCard with image 1`] = ` } >

@@ -112,7 +112,7 @@ exports[`Storyshots components/Elements/ElementCard with tags 1`] = ` } >

@@ -282,7 +282,7 @@ exports[`Storyshots components/Elements/ElementCard with title and description 1 } >

diff --git a/x-pack/plugins/canvas/public/components/home/__snapshots__/home.stories.storyshot b/x-pack/plugins/canvas/public/components/home/__snapshots__/home.stories.storyshot index 3655c2e693353..b53ae524a7219 100644 --- a/x-pack/plugins/canvas/public/components/home/__snapshots__/home.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/home/__snapshots__/home.stories.storyshot @@ -119,7 +119,7 @@ exports[`Storyshots Home Home Page 1`] = `

Add your first workpad - +
-
-
-

- Create a new workpad, start from a template, or import a workpad JSON file by dropping it here. -

-

- New to Canvas? - - - Add your first workpad - - . -

-
- +

+ Create a new workpad, start from a template, or import a workpad JSON file by dropping it here. +

+

+ New to Canvas? + + + Add your first workpad + + . +

+
diff --git a/x-pack/plugins/canvas/public/components/home/my_workpads/__snapshots__/my_workpads.stories.storyshot b/x-pack/plugins/canvas/public/components/home/my_workpads/__snapshots__/my_workpads.stories.storyshot index 61ee76f0f2450..f8f2252a098cc 100644 --- a/x-pack/plugins/canvas/public/components/home/my_workpads/__snapshots__/my_workpads.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/home/my_workpads/__snapshots__/my_workpads.stories.storyshot @@ -2,7 +2,7 @@ exports[`Storyshots Home/Tabs/My Workpads My Workpads 1`] = `

@@ -126,7 +126,7 @@ exports[`Storyshots components/SavedElementsModal/ElementGrid default 1`] = ` className="euiFlexItem canvasElementCard__wrapper" >

@@ -237,7 +237,7 @@ exports[`Storyshots components/SavedElementsModal/ElementGrid default 1`] = ` className="euiFlexItem canvasElementCard__wrapper" >

diff --git a/x-pack/plugins/canvas/public/components/saved_elements_modal/__stories__/__snapshots__/saved_elements_modal.stories.storyshot b/x-pack/plugins/canvas/public/components/saved_elements_modal/__stories__/__snapshots__/saved_elements_modal.stories.storyshot index 0ebe1be89972f..b763f274433bf 100644 --- a/x-pack/plugins/canvas/public/components/saved_elements_modal/__stories__/__snapshots__/saved_elements_modal.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/saved_elements_modal/__stories__/__snapshots__/saved_elements_modal.stories.storyshot @@ -91,7 +91,7 @@ exports[`Storyshots components/SavedElementsModal no custom elements 1`] = ` className="euiSpacer euiSpacer--l css-p2o3x6-euiSpacer-l" />

Add new elements - +
-
-
-

- Group and save workpad elements to create new elements -

-
- +

+ Group and save workpad elements to create new elements +

+
@@ -267,7 +263,7 @@ exports[`Storyshots components/SavedElementsModal with custom elements 1`] = ` className="euiFlexItem canvasElementCard__wrapper" >

@@ -378,7 +374,7 @@ exports[`Storyshots components/SavedElementsModal with custom elements 1`] = ` className="euiFlexItem canvasElementCard__wrapper" >

@@ -489,7 +485,7 @@ exports[`Storyshots components/SavedElementsModal with custom elements 1`] = ` className="euiFlexItem canvasElementCard__wrapper" >

@@ -745,7 +741,7 @@ exports[`Storyshots components/SavedElementsModal with text filter 1`] = ` className="euiFlexItem canvasElementCard__wrapper" >

diff --git a/x-pack/plugins/canvas/public/components/shape_picker_popover/__stories__/__snapshots__/shape_picker_popover.stories.storyshot b/x-pack/plugins/canvas/public/components/shape_picker_popover/__stories__/__snapshots__/shape_picker_popover.stories.storyshot index 4f2d16975521d..6059fa1cd5c15 100644 --- a/x-pack/plugins/canvas/public/components/shape_picker_popover/__stories__/__snapshots__/shape_picker_popover.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/shape_picker_popover/__stories__/__snapshots__/shape_picker_popover.stories.storyshot @@ -8,7 +8,7 @@ exports[`Storyshots components/Shapes/ShapePickerPopover default 1`] = ` className="euiPopover__anchor" >

`; @@ -92,18 +68,10 @@ exports[`Storyshots components/ToolTipShortcut with left arrow 1`] = ` } >
-
-
- ← -
-
+ ←
`; @@ -119,18 +87,10 @@ exports[`Storyshots components/ToolTipShortcut with right arrow 1`] = ` } >
-
-
- → -
-
+ →
`; @@ -146,18 +106,10 @@ exports[`Storyshots components/ToolTipShortcut with shortcut 1`] = ` } >
-
-
- G -
-
+ G
`; @@ -173,18 +125,10 @@ exports[`Storyshots components/ToolTipShortcut with up arrow 1`] = ` } >
-
-
- ⌘ + SHIFT + ↑ -
-
+ ⌘ + SHIFT + ↑
`; diff --git a/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/delete_var.stories.storyshot b/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/delete_var.stories.storyshot index bfcb274d3e343..1b4ab35de123e 100644 --- a/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/delete_var.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/delete_var.stories.storyshot @@ -44,14 +44,10 @@ Array [ className="euiFlexItem euiFlexItem--flexGrowZero" >
-
- Deleting this variable may adversely affect the workpad. Are you sure you wish to continue? -
+ Deleting this variable may adversely affect the workpad. Are you sure you wish to continue?
diff --git a/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/edit_var.stories.storyshot b/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/edit_var.stories.storyshot index e99d6d658d45f..e21f422723c1c 100644 --- a/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/edit_var.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/var_config/__stories__/__snapshots__/edit_var.stories.storyshot @@ -38,7 +38,7 @@ Array [ >

Type @@ -32,7 +32,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent default 1`] = ` } >
exactly
@@ -46,7 +46,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent default 1`] = ` } >

Column @@ -62,7 +62,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent default 1`] = ` } >
project
@@ -76,7 +76,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent default 1`] = ` } >

Value @@ -92,7 +92,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent default 1`] = ` } >
kibana
@@ -106,7 +106,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent default 1`] = ` } >

Filter group @@ -122,7 +122,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent default 1`] = ` } >
Group 1
@@ -133,7 +133,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent default 1`] = ` exports[`Storyshots components/WorkpadFilters/FilterComponent with component field 1`] = `

Type @@ -163,7 +163,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with component fie } >
exactly
@@ -177,7 +177,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with component fie } >

Column @@ -193,7 +193,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with component fie } >
project
@@ -207,7 +207,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with component fie } >

Value @@ -223,13 +223,13 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with component fie } >

@@ -248,7 +248,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with component fie } >

Filter group @@ -264,7 +264,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with component fie } >
Group 1
@@ -275,7 +275,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with component fie exports[`Storyshots components/WorkpadFilters/FilterComponent with custom filter fields 1`] = `

Type @@ -305,7 +305,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with custom filter } >
exactly
@@ -319,7 +319,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with custom filter } >

Column @@ -335,7 +335,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with custom filter } >
project
@@ -349,7 +349,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with custom filter } >

Value @@ -365,7 +365,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with custom filter } >
kibana
@@ -379,7 +379,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with custom filter } >

Filter group @@ -395,7 +395,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with custom filter } >
Group 1
@@ -409,7 +409,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with custom filter } >

Custom Field @@ -425,7 +425,7 @@ exports[`Storyshots components/WorkpadFilters/FilterComponent with custom filter } >
Some unknown field
diff --git a/x-pack/plugins/canvas/public/components/workpad_filters/__stories__/__snapshots__/filters_group.component.stories.storyshot b/x-pack/plugins/canvas/public/components/workpad_filters/__stories__/__snapshots__/filters_group.component.stories.storyshot index 57fbd4c2109cd..ea2946f0200f8 100644 --- a/x-pack/plugins/canvas/public/components/workpad_filters/__stories__/__snapshots__/filters_group.component.stories.storyshot +++ b/x-pack/plugins/canvas/public/components/workpad_filters/__stories__/__snapshots__/filters_group.component.stories.storyshot @@ -16,13 +16,13 @@ exports[`Storyshots components/WorkpadFilters/FiltersGroupComponent default 1`] } >

markdown mock
My Canvas Workpad

" +
markdown mock

My Canvas Workpad

" `; exports[`Canvas Shareable Workpad API Placed successfully with height specified 1`] = `"
"`; @@ -21,7 +21,7 @@ exports[`Canvas Shareable Workpad API Placed successfully with height specified
markdown mock
markdown mock
My Canvas Workpad
" +
markdown mock
My Canvas Workpad
" `; exports[`Canvas Shareable Workpad API Placed successfully with page specified 1`] = `"
"`; @@ -33,7 +33,7 @@ exports[`Canvas Shareable Workpad API Placed successfully with page specified 2`
markdown mock
markdown mock
My Canvas Workpad
" +
markdown mock
My Canvas Workpad
" `; exports[`Canvas Shareable Workpad API Placed successfully with width and height specified 1`] = `"
"`; @@ -45,7 +45,7 @@ exports[`Canvas Shareable Workpad API Placed successfully with width and height
markdown mock
markdown mock
My Canvas Workpad
" +
markdown mock
My Canvas Workpad
" `; exports[`Canvas Shareable Workpad API Placed successfully with width specified 1`] = `"
"`; @@ -57,5 +57,5 @@ exports[`Canvas Shareable Workpad API Placed successfully with width specified 2
markdown mock
markdown mock
My Canvas Workpad
" +
markdown mock
My Canvas Workpad
" `; diff --git a/x-pack/plugins/canvas/shareable_runtime/components/__stories__/__snapshots__/canvas.stories.storyshot b/x-pack/plugins/canvas/shareable_runtime/components/__stories__/__snapshots__/canvas.stories.storyshot index 425a5311c74f9..b3ab4e04a32d6 100644 --- a/x-pack/plugins/canvas/shareable_runtime/components/__stories__/__snapshots__/canvas.stories.storyshot +++ b/x-pack/plugins/canvas/shareable_runtime/components/__stories__/__snapshots__/canvas.stories.storyshot @@ -1342,17 +1342,13 @@ exports[`Storyshots shareables/Canvas component 1`] = ` } >
-
- Elastic{ON} - Austin from Clint Andrew Hall with a title that just goes and goes and goes -
+ Elastic{ON} - Austin from Clint Andrew Hall with a title that just goes and goes and goes
@@ -1411,16 +1407,12 @@ exports[`Storyshots shareables/Canvas component 1`] = ` className="euiButtonEmpty__text" >
-
- Page - 1 - of 28 -
+ Page + 1 + of 28
@@ -2832,17 +2824,13 @@ exports[`Storyshots shareables/Canvas contextual: austin 1`] = ` } >
-
- Elastic{ON} - Austin from Clint Andrew Hall with a title that just goes and goes and goes -
+ Elastic{ON} - Austin from Clint Andrew Hall with a title that just goes and goes and goes
@@ -2901,16 +2889,12 @@ exports[`Storyshots shareables/Canvas contextual: austin 1`] = ` className="euiButtonEmpty__text" >
-
- Page - 1 - of 28 -
+ Page + 1 + of 28
@@ -3138,17 +3122,13 @@ exports[`Storyshots shareables/Canvas contextual: hello 1`] = ` } >
-
- My Canvas Workpad -
+ My Canvas Workpad
@@ -3207,15 +3187,11 @@ exports[`Storyshots shareables/Canvas contextual: hello 1`] = ` className="euiButtonEmpty__text" >
-
- Page - 1 -
+ Page + 1
diff --git a/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/footer.stories.storyshot b/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/footer.stories.storyshot index ff71dcc92d5a6..0b92eb8357f35 100644 --- a/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/footer.stories.storyshot +++ b/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/footer.stories.storyshot @@ -1295,17 +1295,13 @@ exports[`Storyshots shareables/Footer contextual: austin 1`] = ` } >
-
- Elastic{ON} - Austin from Clint Andrew Hall with a title that just goes and goes and goes -
+ Elastic{ON} - Austin from Clint Andrew Hall with a title that just goes and goes and goes
@@ -1364,16 +1360,12 @@ exports[`Storyshots shareables/Footer contextual: austin 1`] = ` className="euiButtonEmpty__text" >
-
- Page - 1 - of 28 -
+ Page + 1 + of 28
@@ -1555,17 +1547,13 @@ exports[`Storyshots shareables/Footer contextual: hello 1`] = ` } >
-
- My Canvas Workpad -
+ My Canvas Workpad
@@ -1624,15 +1612,11 @@ exports[`Storyshots shareables/Footer contextual: hello 1`] = ` className="euiButtonEmpty__text" >
-
- Page - 1 -
+ Page + 1
diff --git a/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/page_controls.stories.storyshot b/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/page_controls.stories.storyshot index f2b92754b6d6f..4acf22b3e3fc2 100644 --- a/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/page_controls.stories.storyshot +++ b/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/page_controls.stories.storyshot @@ -56,16 +56,12 @@ exports[`Storyshots shareables/Footer/PageControls component 1`] = ` className="euiButtonEmpty__text" >
-
- Page - 1 - of 10 -
+ Page + 1 + of 10
@@ -157,16 +153,12 @@ exports[`Storyshots shareables/Footer/PageControls contextual: austin 1`] = ` className="euiButtonEmpty__text" >
-
- Page - 1 - of 28 -
+ Page + 1 + of 28
@@ -258,16 +250,12 @@ exports[`Storyshots shareables/Footer/PageControls contextual: hello 1`] = ` className="euiButtonEmpty__text" >
-
- Page - 1 - of 28 -
+ Page + 1 + of 28
diff --git a/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/title.stories.storyshot b/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/title.stories.storyshot index 6d50d0b00fcad..069f58bdee1c5 100644 --- a/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/title.stories.storyshot +++ b/x-pack/plugins/canvas/shareable_runtime/components/footer/__stories__/__snapshots__/title.stories.storyshot @@ -49,17 +49,13 @@ exports[`Storyshots shareables/Footer/Title component 1`] = ` } >
-
- This is a test title. -
+ This is a test title.
@@ -116,17 +112,13 @@ exports[`Storyshots shareables/Footer/Title contextual: austin 1`] = ` } >
-
- Elastic{ON} - Austin from Clint Andrew Hall with a title that just goes and goes and goes -
+ Elastic{ON} - Austin from Clint Andrew Hall with a title that just goes and goes and goes
@@ -183,17 +175,13 @@ exports[`Storyshots shareables/Footer/Title contextual: hello 1`] = ` } >
-
- My Canvas Workpad -
+ My Canvas Workpad
diff --git a/x-pack/plugins/canvas/shareable_runtime/components/footer/settings/__snapshots__/settings.test.tsx.snap b/x-pack/plugins/canvas/shareable_runtime/components/footer/settings/__snapshots__/settings.test.tsx.snap index f89c77601e375..451f12c25b7ce 100644 --- a/x-pack/plugins/canvas/shareable_runtime/components/footer/settings/__snapshots__/settings.test.tsx.snap +++ b/x-pack/plugins/canvas/shareable_runtime/components/footer/settings/__snapshots__/settings.test.tsx.snap @@ -9,7 +9,7 @@ exports[` can navigate Autoplay Settings 1`] = ` aria-describedby="generated-id" aria-live="off" aria-modal="true" - class="euiPanel euiPanel--borderRadiusMedium euiPanel--plain euiPanel--noShadow euiPopover__panel euiPopover__panel--top" + class="euiPanel euiPanel--plain euiPopover__panel euiPopover__panel--top css-1pupmsc-euiPanel-grow-m-plain" data-popover-panel="true" role="dialog" style="top: -16px; left: -22px; will-change: transform, opacity; z-index: 2000;" @@ -108,7 +108,7 @@ exports[` can navigate Autoplay Settings 2`] = ` aria-describedby="generated-id" aria-live="off" aria-modal="true" - class="euiPanel euiPanel--borderRadiusMedium euiPanel--plain euiPanel--noShadow euiPopover__panel euiPopover__panel--top euiPopover__panel-isOpen" + class="euiPanel euiPanel--plain euiPopover__panel euiPopover__panel--top euiPopover__panel-isOpen css-1pupmsc-euiPanel-grow-m-plain" data-popover-panel="true" role="dialog" style="top: -16px; left: -22px; z-index: 2000;" @@ -360,7 +360,7 @@ exports[` can navigate Toolbar Settings, closes when activated 1`] = aria-describedby="generated-id" aria-live="off" aria-modal="true" - class="euiPanel euiPanel--borderRadiusMedium euiPanel--plain euiPanel--noShadow euiPopover__panel euiPopover__panel--top" + class="euiPanel euiPanel--plain euiPopover__panel euiPopover__panel--top css-1pupmsc-euiPanel-grow-m-plain" data-popover-panel="true" role="dialog" style="top: -16px; left: -22px; will-change: transform, opacity; z-index: 2000;" @@ -459,7 +459,7 @@ exports[` can navigate Toolbar Settings, closes when activated 2`] = aria-describedby="generated-id" aria-live="off" aria-modal="true" - class="euiPanel euiPanel--borderRadiusMedium euiPanel--plain euiPanel--noShadow euiPopover__panel euiPopover__panel--top euiPopover__panel-isOpen" + class="euiPanel euiPanel--plain euiPopover__panel euiPopover__panel--top euiPopover__panel-isOpen css-1pupmsc-euiPanel-grow-m-plain" data-popover-panel="true" role="dialog" style="top: -16px; left: -22px; z-index: 2000;" @@ -635,4 +635,4 @@ exports[` can navigate Toolbar Settings, closes when activated 2`] =
`; -exports[` can navigate Toolbar Settings, closes when activated 3`] = `"

You are in a dialog. To close this dialog, hit escape.

Settings
Hide Toolbar
Hide the toolbar when the mouse is not within the Canvas?
"`; +exports[` can navigate Toolbar Settings, closes when activated 3`] = `"

You are in a dialog. To close this dialog, hit escape.

Settings
Hide Toolbar
Hide the toolbar when the mouse is not within the Canvas?
"`; diff --git a/x-pack/plugins/cases/public/components/all_cases/table.tsx b/x-pack/plugins/cases/public/components/all_cases/table.tsx index ce3442e734b43..6d76e009403b8 100644 --- a/x-pack/plugins/cases/public/components/all_cases/table.tsx +++ b/x-pack/plugins/cases/public/components/all_cases/table.tsx @@ -46,7 +46,7 @@ interface CasesTableProps { } const Div = styled.div` - margin-top: ${({ theme }) => theme.eui.paddingSizes.m}; + margin-top: ${({ theme }) => theme.eui.euiSizeM}; `; export const CasesTable: FunctionComponent = ({ diff --git a/x-pack/plugins/cases/public/components/configure_cases/index.tsx b/x-pack/plugins/cases/public/components/configure_cases/index.tsx index 2c04f9f0aa7da..e7542ba39f382 100644 --- a/x-pack/plugins/cases/public/components/configure_cases/index.tsx +++ b/x-pack/plugins/cases/public/components/configure_cases/index.tsx @@ -42,8 +42,8 @@ const FormWrapper = styled.div` margin-top: 0; } - padding-top: ${theme.eui.paddingSizes.xl}; - padding-bottom: ${theme.eui.paddingSizes.xl}; + padding-top: ${theme.eui.euiSizeXL}; + padding-bottom: ${theme.eui.euiSizeXL}; .euiFlyout { z-index: ${theme.eui.euiZNavigation + 1}; } diff --git a/x-pack/plugins/cases/public/components/create/flyout/create_case_flyout.tsx b/x-pack/plugins/cases/public/components/create/flyout/create_case_flyout.tsx index 148cfa119bebd..94e72c43f6ad9 100644 --- a/x-pack/plugins/cases/public/components/create/flyout/create_case_flyout.tsx +++ b/x-pack/plugins/cases/public/components/create/flyout/create_case_flyout.tsx @@ -60,7 +60,7 @@ const StyledEuiFlyoutBody = styled(EuiFlyoutBody)` && .euiFlyoutBody__overflowContent { display: block; - padding: ${theme.eui.paddingSizes.l} ${theme.eui.paddingSizes.l} 70px; + padding: ${theme.eui.euiSizeL} ${theme.eui.euiSizeL} 70px; height: auto; } `} diff --git a/x-pack/plugins/cases/public/components/header_page/index.test.tsx b/x-pack/plugins/cases/public/components/header_page/index.test.tsx index 55ca3671ce974..707cb9b7c4335 100644 --- a/x-pack/plugins/cases/public/components/header_page/index.test.tsx +++ b/x-pack/plugins/cases/public/components/header_page/index.test.tsx @@ -124,7 +124,7 @@ describe('HeaderPage', () => { const casesHeaderPage = wrapper.find('.casesHeaderPage').first(); expect(casesHeaderPage).toHaveStyleRule('border-bottom', euiDarkVars.euiBorderThin); - expect(casesHeaderPage).toHaveStyleRule('padding-bottom', euiDarkVars.paddingSizes.l); + expect(casesHeaderPage).toHaveStyleRule('padding-bottom', euiDarkVars.euiSizeL); }); test('it DOES NOT apply border styles when border is false', () => { @@ -136,7 +136,7 @@ describe('HeaderPage', () => { const casesHeaderPage = wrapper.find('.casesHeaderPage').first(); expect(casesHeaderPage).not.toHaveStyleRule('border-bottom', euiDarkVars.euiBorderThin); - expect(casesHeaderPage).not.toHaveStyleRule('padding-bottom', euiDarkVars.paddingSizes.l); + expect(casesHeaderPage).not.toHaveStyleRule('padding-bottom', euiDarkVars.euiSizeL); }); describe('Badges', () => { diff --git a/x-pack/plugins/cases/public/components/header_page/index.tsx b/x-pack/plugins/cases/public/components/header_page/index.tsx index 7d0bf6a4cb9c5..6bec4035ca823 100644 --- a/x-pack/plugins/cases/public/components/header_page/index.tsx +++ b/x-pack/plugins/cases/public/components/header_page/index.tsx @@ -30,9 +30,9 @@ const Header = styled.header.attrs({ ${border && css` border-bottom: ${theme.eui.euiBorderThin}; - padding-bottom: ${theme.eui.paddingSizes.l}; + padding-bottom: ${theme.eui.euiSizeL}; .euiProgress { - top: ${theme.eui.paddingSizes.l}; + top: ${theme.eui.euiSizeL}; } `} `} diff --git a/x-pack/plugins/cases/public/components/user_actions/index.tsx b/x-pack/plugins/cases/public/components/user_actions/index.tsx index 8dfa0a5ca84c4..7d59d5ba58a50 100644 --- a/x-pack/plugins/cases/public/components/user_actions/index.tsx +++ b/x-pack/plugins/cases/public/components/user_actions/index.tsx @@ -58,8 +58,8 @@ const MyEuiCommentList = styled(EuiCommentList)` & .comment-alert .euiCommentEvent { background-color: ${theme.eui.euiColorLightestShade}; border: ${theme.eui.euiFlyoutBorder}; - padding: ${theme.eui.paddingSizes.s}; - border-radius: ${theme.eui.paddingSizes.xs}; + padding: ${theme.eui.euiSizeS}; + border-radius: ${theme.eui.euiSizeXS}; } & .comment-alert .euiCommentEvent__headerData { @@ -69,7 +69,7 @@ const MyEuiCommentList = styled(EuiCommentList)` & .comment-action.empty-comment .euiCommentEvent--regular { box-shadow: none; .euiCommentEvent__header { - padding: ${theme.eui.euiSizeM} ${theme.eui.paddingSizes.s}; + padding: ${theme.eui.euiSizeM} ${theme.eui.euiSizeS}; border-bottom: 0; } } diff --git a/x-pack/plugins/cases/public/components/utility_bar/styles.tsx b/x-pack/plugins/cases/public/components/utility_bar/styles.tsx index 158f0c5ebea15..4c4427ba23471 100644 --- a/x-pack/plugins/cases/public/components/utility_bar/styles.tsx +++ b/x-pack/plugins/cases/public/components/utility_bar/styles.tsx @@ -30,7 +30,7 @@ export const Bar = styled.aside.attrs({ ${border && css` border-bottom: ${theme.eui.euiBorderThin}; - padding-bottom: ${theme.eui.paddingSizes.s}; + padding-bottom: ${theme.eui.euiSizeS}; `} @media only screen and (min-width: ${theme.eui.euiBreakpoints.l}) { @@ -83,8 +83,8 @@ export const BarGroup = styled.div.attrs({ @media only screen and (min-width: ${theme.eui.euiBreakpoints.m}) { border-right: ${theme.eui.euiBorderThin}; flex-wrap: nowrap; - margin-right: ${theme.eui.paddingSizes.m}; - padding-right: ${theme.eui.paddingSizes.m}; + margin-right: ${theme.eui.euiSizeM}; + padding-right: ${theme.eui.euiSizeM}; & + & { margin-top: 0; diff --git a/x-pack/plugins/cases/public/components/utility_bar/utility_bar.test.tsx b/x-pack/plugins/cases/public/components/utility_bar/utility_bar.test.tsx index 545b1f4ae13c2..62988a7a9dd76 100644 --- a/x-pack/plugins/cases/public/components/utility_bar/utility_bar.test.tsx +++ b/x-pack/plugins/cases/public/components/utility_bar/utility_bar.test.tsx @@ -74,7 +74,7 @@ describe('UtilityBar', () => { const casesUtilityBar = wrapper.find('.casesUtilityBar').first(); expect(casesUtilityBar).toHaveStyleRule('border-bottom', euiDarkVars.euiBorderThin); - expect(casesUtilityBar).toHaveStyleRule('padding-bottom', euiDarkVars.paddingSizes.s); + expect(casesUtilityBar).toHaveStyleRule('padding-bottom', euiDarkVars.euiSizeS); }); test('it DOES NOT apply border styles when border is false', () => { @@ -104,6 +104,6 @@ describe('UtilityBar', () => { const casesUtilityBar = wrapper.find('.casesUtilityBar').first(); expect(casesUtilityBar).not.toHaveStyleRule('border-bottom', euiDarkVars.euiBorderThin); - expect(casesUtilityBar).not.toHaveStyleRule('padding-bottom', euiDarkVars.paddingSizes.s); + expect(casesUtilityBar).not.toHaveStyleRule('padding-bottom', euiDarkVars.euiSizeS); }); }); diff --git a/x-pack/plugins/cases/public/components/wrappers/index.tsx b/x-pack/plugins/cases/public/components/wrappers/index.tsx index 54c575ab95316..c937d3e48729f 100644 --- a/x-pack/plugins/cases/public/components/wrappers/index.tsx +++ b/x-pack/plugins/cases/public/components/wrappers/index.tsx @@ -28,7 +28,7 @@ const gutterTimeline = '70px'; // seems to be a timeline reference from the orig export const ContentWrapper = styled.div` ${({ theme }) => ` - padding: ${theme.eui.paddingSizes.l} 0 ${gutterTimeline} 0; + padding: ${theme.eui.euiSizeL} 0 ${gutterTimeline} 0; `}; `; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/findings/layout/findings_distribution_bar.tsx b/x-pack/plugins/cloud_security_posture/public/pages/findings/layout/findings_distribution_bar.tsx index d1eb97832ab7c..647b5b4ea0464 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/findings/layout/findings_distribution_bar.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/findings/layout/findings_distribution_bar.tsx @@ -106,7 +106,7 @@ const DistributionBar: React.FC> = ({ passe gutterSize="none" css={css` height: 8px; - background: ${euiTheme.colors.subdued}; + background: ${euiTheme.colors.subduedText}; `} > diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/search_index_selectable.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/search_index_selectable.test.tsx index 4adaf4050ffe5..74836d6e0e202 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/search_index_selectable.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/search_index_selectable.test.tsx @@ -8,7 +8,7 @@ import '../../../__mocks__/shallow_useeffect.mock'; import { setMockActions, setMockValues } from '../../../__mocks__/kea_logic'; -import React from 'react'; +import React, { MouseEvent } from 'react'; import { shallow, mount } from 'enzyme'; @@ -121,7 +121,10 @@ describe('SearchIndexSelectable', () => { it('calls setSelectedIndex onChange', () => { const wrapper = shallow(); const onChangeHandler = wrapper.find(EuiSelectable).prop('onChange')!; - onChangeHandler(DEFAULT_VALUES.indicesFormatted as SearchIndexSelectableOption[]); + onChangeHandler( + DEFAULT_VALUES.indicesFormatted as SearchIndexSelectableOption[], + {} as MouseEvent + ); expect(MOCK_ACTIONS.setSelectedIndex).toHaveBeenCalledWith('search-test-index-2'); }); }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/create_service_token.tsx b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/create_service_token.tsx index dcfa150c2d32c..6d8d5014bbb61 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/create_service_token.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/create_service_token.tsx @@ -38,7 +38,7 @@ const CommandCode = styled.div.attrs(() => { className: 'eui-textBreakAll', }; })` - margin-right: ${(props) => props.theme.eui.paddingSizes.m}; + margin-right: ${(props) => props.theme.eui.euiSizeM}; `; export const getGenerateServiceTokenStep = ({ diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_select_hosts.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_select_hosts.tsx index 93aa2b37bfe3a..7c7b5194b39bf 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_select_hosts.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_select_hosts.tsx @@ -27,7 +27,7 @@ export enum SelectedPolicyTab { const StyledEuiTabbedContent = styled(EuiTabbedContent)` [role='tabpanel'] { - padding-top: ${(props) => props.theme.eui.paddingSizes.m}; + padding-top: ${(props) => props.theme.eui.euiSizeM}; } `; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx index 5ac9d65445f09..22ed7957666b1 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/index.tsx @@ -68,7 +68,7 @@ import { CreatePackagePolicySinglePageLayout, PostInstallAddAgentModal } from '. const StepsWithLessPadding = styled(EuiSteps)` .euiStep__content { - padding-bottom: ${(props) => props.theme.eui.paddingSizes.m}; + padding-bottom: ${(props) => props.theme.eui.euiSizeM}; } // compensating for EuiBottomBar hiding the content diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integrations.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integrations.tsx index c7948aff6c212..2e238d4142f1d 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integrations.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_details/agent_details_integrations.tsx @@ -36,18 +36,18 @@ const StyledEuiAccordion = styled(EuiAccordion)` } .euiAccordion__triggerWrapper { - padding-left: ${(props) => props.theme.eui.paddingSizes.m}; + padding-left: ${(props) => props.theme.eui.euiSizeM}; } &.euiAccordion-isOpen { .euiAccordion__childWrapper { - padding: ${(props) => props.theme.eui.paddingSizes.m}; + padding: ${(props) => props.theme.eui.euiSizeM}; padding-top: 0px; } } .ingest-integration-title-button { - padding: ${(props) => props.theme.eui.paddingSizes.s}; + padding: ${(props) => props.theme.eui.euiSizeS}; } .euiTableRow:last-child .euiTableRowCell { diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx index d3af03983fa0b..b359001750522 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_list_page/components/search_and_filter_bar.tsx @@ -65,7 +65,7 @@ const statusFilters = [ ]; const ClearAllTagsFilterItem = styled(EuiFilterSelectItem)` - padding: ${(props) => props.theme.eui.paddingSizes.s}; + padding: ${(props) => props.theme.eui.euiSizeS}; `; export const SearchAndFilterBar: React.FunctionComponent<{ diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/assets_facet_group.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/assets_facet_group.tsx index 0e9aae706f194..3bed1f7b5f84d 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/assets_facet_group.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/assets_facet_group.tsx @@ -34,11 +34,11 @@ import { } from '../constants'; const FirstHeaderRow = styled(EuiFlexGroup)` - padding: 0 0 ${(props) => props.theme.eui.paddingSizes.m} 0; + padding: 0 0 ${(props) => props.theme.eui.euiSizeM} 0; `; const HeaderRow = styled(EuiFlexGroup)` - padding: ${(props) => props.theme.eui.paddingSizes.m} 0; + padding: ${(props) => props.theme.eui.euiSizeM} 0; `; const FacetGroup = styled(EuiFacetGroup)` diff --git a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/requirements.tsx b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/requirements.tsx index 040d930e88a71..3d33b0bd32984 100644 --- a/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/requirements.tsx +++ b/x-pack/plugins/fleet/public/applications/integrations/sections/epm/components/requirements.tsx @@ -20,7 +20,7 @@ export interface RequirementsProps { } const FlexGroup = styled(EuiFlexGroup)` - padding: 0 0 ${(props) => props.theme.eui.paddingSizes.m} 0; + padding: 0 0 ${(props) => props.theme.eui.euiSizeM} 0; margin: 0; `; const StyledVersion = styled(Version)` diff --git a/x-pack/plugins/fleet/public/components/danger_eui_context_menu_item.tsx b/x-pack/plugins/fleet/public/components/danger_eui_context_menu_item.tsx index 969c8a4b07f74..87fb523121cfe 100644 --- a/x-pack/plugins/fleet/public/components/danger_eui_context_menu_item.tsx +++ b/x-pack/plugins/fleet/public/components/danger_eui_context_menu_item.tsx @@ -9,5 +9,5 @@ import styled from 'styled-components'; import { EuiContextMenuItem } from '@elastic/eui'; export const DangerEuiContextMenuItem = styled(EuiContextMenuItem)` - color: ${(props) => props.theme.eui.euiTextColors.danger}; + color: ${(props) => props.theme.eui.euiColorDangerText}; `; diff --git a/x-pack/plugins/fleet/public/components/header.tsx b/x-pack/plugins/fleet/public/components/header.tsx index 2a8b20240a4f6..5443477c976b7 100644 --- a/x-pack/plugins/fleet/public/components/header.tsx +++ b/x-pack/plugins/fleet/public/components/header.tsx @@ -26,9 +26,9 @@ const Wrapper = styled.div<{ maxWidth?: number }>` max-width: ${(props) => props.maxWidth || 1200}px; margin-left: auto; margin-right: auto; - padding-top: ${(props) => props.theme.eui.paddingSizes.xl}; - padding-left: ${(props) => props.theme.eui.paddingSizes.m}; - padding-right: ${(props) => props.theme.eui.paddingSizes.m}; + padding-top: ${(props) => props.theme.eui.euiSizeXL}; + padding-left: ${(props) => props.theme.eui.euiSizeM}; + padding-right: ${(props) => props.theme.eui.euiSizeM}; `; const Tabs = styled(EuiTabs)` diff --git a/x-pack/plugins/graph/public/components/field_manager/field_manager.test.tsx b/x-pack/plugins/graph/public/components/field_manager/field_manager.test.tsx index be905cd67c976..61682f0a8cc8c 100644 --- a/x-pack/plugins/graph/public/components/field_manager/field_manager.test.tsx +++ b/x-pack/plugins/graph/public/components/field_manager/field_manager.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { ReactElement } from 'react'; +import React, { ReactElement, MouseEvent } from 'react'; import { EuiColorPicker, EuiSelectable, EuiContextMenu, EuiButton } from '@elastic/eui'; import { FieldPicker } from './field_picker'; import { FieldEditor } from './field_editor'; @@ -98,6 +98,7 @@ describe('field_manager', () => { }); it('should select fields from picker', () => { + const event = {} as MouseEvent; expect( getInstance() .find(FieldPicker) @@ -108,9 +109,10 @@ describe('field_manager', () => { ).toEqual(['field1', 'field2', 'field3']); act(() => { - getInstance().find(FieldPicker).dive().find(EuiSelectable).prop('onChange')!([ - { checked: 'on', label: 'field3' }, - ]); + getInstance().find(FieldPicker).dive().find(EuiSelectable).prop('onChange')!( + [{ checked: 'on', label: 'field3' }], + event + ); }); expect(dispatchSpy).toHaveBeenCalledWith({ diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap b/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap index 13888c1d1d597..582b63d5d3c97 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap +++ b/x-pack/plugins/index_lifecycle_management/__jest__/__snapshots__/extend_index_management.test.tsx.snap @@ -105,7 +105,7 @@ Array [ class="euiSpacer euiSpacer--s css-78drzl-euiSpacer-s" />,

-
- illegal_argument_exception: setting [index.lifecycle.rollover_alias] for index [testy3] is empty or not defined -
+ illegal_argument_exception: setting [index.lifecycle.rollover_alias] for index [testy3] is empty or not defined
,
Create your first index lifecycle policy - +
-
-
-

- An index lifecycle policy helps you manage your indices as they age. -

-
- +

+ An index lifecycle policy helps you manage your indices as they age. +

+
diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx index 6ca0324d8972d..8d883cca0677b 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/phases/shared_fields/data_tier_allocation_field/components/data_tier_allocation.tsx @@ -121,9 +121,7 @@ const getSelectOptions = (phase: PhaseWithAllocation, disableDataTierOption: boo <> {i18nTexts.allocationOptions[phase].default.input} -

- {i18nTexts.allocationOptions[phase].default.helpText} -

+

{i18nTexts.allocationOptions[phase].default.helpText}

), @@ -136,9 +134,7 @@ const getSelectOptions = (phase: PhaseWithAllocation, disableDataTierOption: boo <> {i18nTexts.allocationOptions[phase].custom.inputDisplay} -

- {i18nTexts.allocationOptions[phase].custom.helpText} -

+

{i18nTexts.allocationOptions[phase].custom.helpText}

), @@ -151,9 +147,7 @@ const getSelectOptions = (phase: PhaseWithAllocation, disableDataTierOption: boo <> {i18nTexts.allocationOptions[phase].none.inputDisplay} -

- {i18nTexts.allocationOptions[phase].none.helpText} -

+

{i18nTexts.allocationOptions[phase].none.helpText}

), diff --git a/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/field_options.tsx b/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/field_options.tsx index 1bd7dcb004fdc..ec6b3e9cabd34 100644 --- a/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/field_options.tsx +++ b/x-pack/plugins/index_management/public/application/components/mappings_editor/constants/field_options.tsx @@ -43,7 +43,7 @@ export const getSuperSelectOption = ( <> {title} -

{description}

+

{description}

), diff --git a/x-pack/plugins/infra/public/alerting/inventory/components/expression.test.tsx b/x-pack/plugins/infra/public/alerting/inventory/components/expression.test.tsx index 591014472d81a..8ce04586c74b6 100644 --- a/x-pack/plugins/infra/public/alerting/inventory/components/expression.test.tsx +++ b/x-pack/plugins/infra/public/alerting/inventory/components/expression.test.tsx @@ -207,8 +207,11 @@ describe('ExpressionRow', () => { it('loads custom metrics passed in through the expression, even with an empty context', async () => { const { wrapper } = await setup(expression as InventoryMetricConditions); const [valueMatch] = - wrapper.html().match('Rate of some.system.field') ?? - []; + wrapper + .html() + .match( + 'Rate of some.system.field' + ) ?? []; expect(valueMatch).toBeTruthy(); }); }); diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_row.test.tsx b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_row.test.tsx index 6a0de2481e64a..a023270e65702 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_row.test.tsx +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/components/expression_row.test.tsx @@ -76,7 +76,11 @@ describe('ExpressionRow', () => { }; const { wrapper, update } = await setup(expression as MetricExpression); await update(); - const [valueMatch] = wrapper.html().match('50') ?? []; + const [valueMatch] = + wrapper + .html() + .match('50') ?? + []; expect(valueMatch).toBeTruthy(); }); @@ -91,7 +95,10 @@ describe('ExpressionRow', () => { }; const { wrapper } = await setup(expression as MetricExpression); const [valueMatch] = - wrapper.html().match('0.5') ?? []; + wrapper + .html() + .match('0.5') ?? + []; expect(valueMatch).toBeTruthy(); }); diff --git a/x-pack/plugins/infra/public/components/logging/log_analysis_job_status/quality_warning_notices.tsx b/x-pack/plugins/infra/public/components/logging/log_analysis_job_status/quality_warning_notices.tsx index cc218953e33f9..b86df4954c431 100644 --- a/x-pack/plugins/infra/public/components/logging/log_analysis_job_status/quality_warning_notices.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_analysis_job_status/quality_warning_notices.tsx @@ -86,7 +86,7 @@ export const CategoryQualityWarnings: React.FC<{ const QualityWarningReasonDescription = euiStyled(EuiDescriptionListDescription)` display: list-item; list-style-type: disc; - margin-left: ${(props) => props.theme.eui.paddingSizes.m}; + margin-left: ${(props) => props.theme.eui.euiSizeM}; `; const categoryQualityWarningCalloutTitle = i18n.translate( diff --git a/x-pack/plugins/infra/public/components/logging/log_highlights_menu.tsx b/x-pack/plugins/infra/public/components/logging/log_highlights_menu.tsx index 2fc287d405d6a..4b559c4de6f8c 100644 --- a/x-pack/plugins/infra/public/components/logging/log_highlights_menu.tsx +++ b/x-pack/plugins/infra/public/components/logging/log_highlights_menu.tsx @@ -169,7 +169,7 @@ const ActiveHighlightsIndicator = euiStyled(EuiIcon).attrs(({ theme }) => ({ size: 'm', color: theme?.eui.euiColorAccent, }))` - padding-left: ${(props) => props.theme.eui.paddingSizes.xs}; + padding-left: ${(props) => props.theme.eui.euiSizeXS}; `; const LogHighlightsMenuContent = euiStyled.div` diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/bottom_drawer.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/bottom_drawer.tsx index 9e81d1310e1f9..87c63cef36428 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/bottom_drawer.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/bottom_drawer.tsx @@ -66,7 +66,7 @@ export const BottomDrawer: React.FC<{ }; const BottomActionContainer = euiStyled.div<{ isOpen: boolean; outerWidth: number }>` - padding: ${(props) => props.theme.eui.paddingSizes.m} 0; + padding: ${(props) => props.theme.eui.euiSizeM} 0; position: fixed; bottom: 0; right: 0; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout.tsx index c05f07fb5e933..1bd8ea1d4f7d9 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/layout.tsx @@ -226,5 +226,5 @@ const MainContainer = euiStyled.div` `; const TopActionContainer = euiStyled.div` - padding: ${(props) => `12px ${props.theme.eui.paddingSizes.m}`}; + padding: ${(props) => `12px ${props.theme.eui.euiSizeM}`}; `; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/overlay.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/overlay.tsx index d4e0b351fbe44..ca52144367ea9 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/overlay.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/overlay.tsx @@ -182,9 +182,9 @@ export const NodeContextPopover = ({ }; const OverlayHeader = euiStyled.div` - padding-top: ${(props) => props.theme.eui.paddingSizes.m}; - padding-right: ${(props) => props.theme.eui.paddingSizes.m}; - padding-left: ${(props) => props.theme.eui.paddingSizes.m}; + padding-top: ${(props) => props.theme.eui.euiSizeM}; + padding-right: ${(props) => props.theme.eui.euiSizeM}; + padding-left: ${(props) => props.theme.eui.euiSizeM}; background-color: ${(props) => props.theme.eui.euiPageBackgroundColor}; box-shadow: inset 0 -1px ${(props) => props.theme.eui.euiBorderColor}; `; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row.tsx index d05c49c724579..34abcc4f6b56e 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/processes/process_row.tsx @@ -149,6 +149,6 @@ const ExpandedRowCell = euiStyled(EuiTableRowCell).attrs({ colSpan: 6, })<{ commandHeight: number }>` height: ${(props) => props.commandHeight + 240}px; - padding: 0 ${(props) => props.theme.eui.paddingSizes.m}; + padding: 0 ${(props) => props.theme.eui.euiSizeM}; background-color: ${(props) => props.theme.eui.euiColorLightestShade}; `; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/shared.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/shared.tsx index 41449e195ade8..2d65ef9c01fc6 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/shared.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/node_details/tabs/shared.tsx @@ -20,7 +20,7 @@ export interface TabProps { export const OVERLAY_Y_START = 266; export const OVERLAY_BOTTOM_MARGIN = 16; export const TabContent = euiStyled.div` - padding: ${(props) => props.theme.eui.paddingSizes.m}; + padding: ${(props) => props.theme.eui.euiSizeM}; flex: 1; overflow-y: auto; overflow-x: hidden; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/nodes_overview.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/nodes_overview.tsx index ab0a75e1cd9f5..edc112eda07df 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/nodes_overview.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/nodes_overview.tsx @@ -143,7 +143,7 @@ export const NodesOverview = ({ }; const TableContainer = euiStyled.div` - padding: ${(props) => props.theme.eui.paddingSizes.l}; + padding: ${(props) => props.theme.eui.euiSizeL}; `; const MapContainer = euiStyled.div<{ top: number; positionStatic: boolean }>` diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx index 7ea6d8c4e5224..7e8294974e440 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/timeline/timeline.tsx @@ -311,8 +311,7 @@ const TimelineContainer = euiStyled.div` border-top: 1px solid ${(props) => props.theme.eui.euiColorLightShade}; height: 220px; width: 100%; - padding: ${(props) => props.theme.eui.paddingSizes.s} ${(props) => - props.theme.eui.paddingSizes.m}; + padding: ${(props) => props.theme.eui.euiSizeS} ${(props) => props.theme.eui.euiSizeM}; display: flex; flex-direction: column; `; @@ -320,15 +319,14 @@ const TimelineContainer = euiStyled.div` const TimelineHeader = euiStyled.div` display: flex; width: 100%; - padding: ${(props) => props.theme.eui.paddingSizes.s} ${(props) => - props.theme.eui.paddingSizes.m}; + padding: ${(props) => props.theme.eui.euiSizeS} ${(props) => props.theme.eui.euiSizeM}; @media only screen and (max-width: 767px) { margin-top: 30px; } `; const TimelineChartContainer = euiStyled.div` - padding-left: ${(props) => props.theme.eui.paddingSizes.xs}; + padding-left: ${(props) => props.theme.eui.euiSizeXS}; width: 100%; height: 100%; `; diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx index fdc4ff0124cf6..f96d541afe9f8 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/conditional_tooltip.tsx @@ -59,8 +59,8 @@ export const ConditionalToolTip = withTheme(({ theme, node, nodeType, currentTim
{node.name} diff --git a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx index c55bdba5179b6..30d25cd183fad 100644 --- a/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/inventory_view/components/waffle/metric_control/custom_metric_form.tsx @@ -157,7 +157,7 @@ export const CustomMetricForm = withTheme(
@@ -218,11 +218,11 @@ export const CustomMetricForm = withTheme( />
-
+
return (
diff --git a/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/metadata_details.tsx b/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/metadata_details.tsx index 924e82fc4a4df..edd760bc17f64 100644 --- a/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/metadata_details.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/metric_detail/components/metadata_details.tsx @@ -169,13 +169,13 @@ border-top: ${(props) => props.theme.eui.euiBorderWidthThin} solid ${(props) => props.theme.eui.euiBorderColor}; border-bottom: ${(props) => props.theme.eui.euiBorderWidthThin} solid ${(props) => props.theme.eui.euiBorderColor}; -padding: ${(props) => props.theme.eui.paddingSizes.m} 0; -margin-bottom: ${(props) => props.theme.eui.paddingSizes.m}; +padding: ${(props) => props.theme.eui.euiSizeM} 0; +margin-bottom: ${(props) => props.theme.eui.euiSizeM}; display: flex; `; const Controls = euiStyled.div` flex-grow: 0; -margin-right: ${(props) => props.theme.eui.paddingSizes.m}; +margin-right: ${(props) => props.theme.eui.euiSizeM}; min-width: 0px; `; diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx index c85d2b4d7fbad..cc2397b820a91 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx @@ -134,7 +134,7 @@ describe('workspace_panel', () => { instance = mounted.instance; instance.update(); - expect(instance.find('[data-test-subj="workspace-drag-drop-prompt"]')).toHaveLength(2); + expect(instance.find('[data-test-subj="workspace-drag-drop-prompt"]')).toHaveLength(3); expect(instance.find(expressionRendererMock)).toHaveLength(0); }); @@ -152,7 +152,7 @@ describe('workspace_panel', () => { instance = mounted.instance; instance.update(); - expect(instance.find('[data-test-subj="workspace-drag-drop-prompt"]')).toHaveLength(2); + expect(instance.find('[data-test-subj="workspace-drag-drop-prompt"]')).toHaveLength(3); expect(instance.find(expressionRendererMock)).toHaveLength(0); }); @@ -174,7 +174,7 @@ describe('workspace_panel', () => { instance = mounted.instance; instance.update(); - expect(instance.find('[data-test-subj="workspace-drag-drop-prompt"]')).toHaveLength(2); + expect(instance.find('[data-test-subj="workspace-drag-drop-prompt"]')).toHaveLength(3); expect(instance.find(expressionRendererMock)).toHaveLength(0); }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/layerpanel.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/layerpanel.test.tsx index dba57f2fcb03e..d0c8e1ffafd69 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/layerpanel.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/layerpanel.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React from 'react'; +import React, { MouseEvent } from 'react'; import { IndexPatternPrivateState } from './types'; import { IndexPatternLayerPanelProps, LayerPanel } from './layerpanel'; import { shallowWithIntl as shallow } from '@kbn/test-jest-helpers'; @@ -224,13 +224,14 @@ describe('Layer Data Panel', () => { } function selectIndexPatternPickerOption(instance: ShallowWrapper, selectedLabel: string) { + const event = {} as MouseEvent; const options: IndexPatternPickerOption[] = getIndexPatternPickerOptions(instance).map( (option: IndexPatternPickerOption) => option.label === selectedLabel ? { ...option, checked: 'on' } : { ...option, checked: undefined } ); - return getIndexPatternPickerList(instance).prop('onChange')!(options); + return getIndexPatternPickerList(instance).prop('onChange')!(options, event); } function getIndexPatternPickerOptions(instance: ShallowWrapper) { diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/add_license.test.js.snap b/x-pack/plugins/license_management/__jest__/__snapshots__/add_license.test.js.snap index 069bcc103ebae..44da5a61e5876 100644 --- a/x-pack/plugins/license_management/__jest__/__snapshots__/add_license.test.js.snap +++ b/x-pack/plugins/license_management/__jest__/__snapshots__/add_license.test.js.snap @@ -1,5 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`AddLicense component when license is active should display correct verbiage 1`] = `"
Update your license

If you already have a new license, upload it now.

"`; +exports[`AddLicense component when license is active should display correct verbiage 1`] = `"
Update your license

If you already have a new license, upload it now.

"`; -exports[`AddLicense component when license is expired should display with correct verbiage 1`] = `"
Update your license

If you already have a new license, upload it now.

"`; +exports[`AddLicense component when license is expired should display with correct verbiage 1`] = `"
Update your license

If you already have a new license, upload it now.

"`; diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/license_page_header.test.js.snap b/x-pack/plugins/license_management/__jest__/__snapshots__/license_page_header.test.js.snap index 1c1fd4602f491..d68f2cb0f3100 100644 --- a/x-pack/plugins/license_management/__jest__/__snapshots__/license_page_header.test.js.snap +++ b/x-pack/plugins/license_management/__jest__/__snapshots__/license_page_header.test.js.snap @@ -1,5 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`LicenseStatus component should display display warning is expired 1`] = `"

Your Platinum license has expired

Your license expired on

"`; +exports[`LicenseStatus component should display display warning is expired 1`] = `"

Your Platinum license has expired

Your license expired on

"`; -exports[`LicenseStatus component should display normally when license is active 1`] = `"

Your Gold license is active

Your license will expire on October 12, 2099 7:00 PM EST

"`; +exports[`LicenseStatus component should display normally when license is active 1`] = `"

Your Gold license is active

Your license will expire on October 12, 2099 7:00 PM EST

"`; diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap b/x-pack/plugins/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap index f7d34d99e46bf..36aed262fa692 100644 --- a/x-pack/plugins/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap +++ b/x-pack/plugins/license_management/__jest__/__snapshots__/request_trial_extension.test.js.snap @@ -1,9 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`RequestTrialExtension component should display when enterprise license is not active and trial has been used 1`] = `"
Extend your trial

If you’d like to continue using machine learning, advanced security, and our other awesome subscription featuresExternal link(opens in a new tab or window), request an extension now.

"`; +exports[`RequestTrialExtension component should display when enterprise license is not active and trial has been used 1`] = `"
Extend your trial

If you’d like to continue using machine learning, advanced security, and our other awesome subscription featuresExternal link(opens in a new tab or window), request an extension now.

"`; -exports[`RequestTrialExtension component should display when license is active and trial has been used 1`] = `"
Extend your trial

If you’d like to continue using machine learning, advanced security, and our other awesome subscription featuresExternal link(opens in a new tab or window), request an extension now.

"`; +exports[`RequestTrialExtension component should display when license is active and trial has been used 1`] = `"
Extend your trial

If you’d like to continue using machine learning, advanced security, and our other awesome subscription featuresExternal link(opens in a new tab or window), request an extension now.

"`; -exports[`RequestTrialExtension component should display when license is not active and trial has been used 1`] = `"
Extend your trial

If you’d like to continue using machine learning, advanced security, and our other awesome subscription featuresExternal link(opens in a new tab or window), request an extension now.

"`; +exports[`RequestTrialExtension component should display when license is not active and trial has been used 1`] = `"
Extend your trial

If you’d like to continue using machine learning, advanced security, and our other awesome subscription featuresExternal link(opens in a new tab or window), request an extension now.

"`; -exports[`RequestTrialExtension component should display when platinum license is not active and trial has been used 1`] = `"
Extend your trial

If you’d like to continue using machine learning, advanced security, and our other awesome subscription featuresExternal link(opens in a new tab or window), request an extension now.

"`; +exports[`RequestTrialExtension component should display when platinum license is not active and trial has been used 1`] = `"
Extend your trial

If you’d like to continue using machine learning, advanced security, and our other awesome subscription featuresExternal link(opens in a new tab or window), request an extension now.

"`; diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap b/x-pack/plugins/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap index a392e4712cb5a..5662a73be4d00 100644 --- a/x-pack/plugins/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap +++ b/x-pack/plugins/license_management/__jest__/__snapshots__/revert_to_basic.test.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`RevertToBasic component should display when license is about to expire 1`] = `"
Revert to Basic license

You’ll revert to our free features and lose access to machine learning, advanced security, and other subscription featuresExternal link(opens in a new tab or window).

"`; +exports[`RevertToBasic component should display when license is about to expire 1`] = `"
Revert to Basic license

You’ll revert to our free features and lose access to machine learning, advanced security, and other subscription featuresExternal link(opens in a new tab or window).

"`; -exports[`RevertToBasic component should display when license is expired 1`] = `"
Revert to Basic license

You’ll revert to our free features and lose access to machine learning, advanced security, and other subscription featuresExternal link(opens in a new tab or window).

"`; +exports[`RevertToBasic component should display when license is expired 1`] = `"
Revert to Basic license

You’ll revert to our free features and lose access to machine learning, advanced security, and other subscription featuresExternal link(opens in a new tab or window).

"`; -exports[`RevertToBasic component should display when trial is active 1`] = `"
Revert to Basic license

You’ll revert to our free features and lose access to machine learning, advanced security, and other subscription featuresExternal link(opens in a new tab or window).

"`; +exports[`RevertToBasic component should display when trial is active 1`] = `"
Revert to Basic license

You’ll revert to our free features and lose access to machine learning, advanced security, and other subscription featuresExternal link(opens in a new tab or window).

"`; diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/start_trial.test.js.snap b/x-pack/plugins/license_management/__jest__/__snapshots__/start_trial.test.js.snap index 52f1597fd1aca..dc49f993eb533 100644 --- a/x-pack/plugins/license_management/__jest__/__snapshots__/start_trial.test.js.snap +++ b/x-pack/plugins/license_management/__jest__/__snapshots__/start_trial.test.js.snap @@ -1,9 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`StartTrial component when trial is allowed display for basic license 1`] = `"
Start a 30-day trial

Experience what machine learning, advanced security, and all our other subscription featuresExternal link(opens in a new tab or window) have to offer.

"`; +exports[`StartTrial component when trial is allowed display for basic license 1`] = `"
Start a 30-day trial

Experience what machine learning, advanced security, and all our other subscription featuresExternal link(opens in a new tab or window) have to offer.

"`; -exports[`StartTrial component when trial is allowed should display for expired enterprise license 1`] = `"
Start a 30-day trial

Experience what machine learning, advanced security, and all our other subscription featuresExternal link(opens in a new tab or window) have to offer.

"`; +exports[`StartTrial component when trial is allowed should display for expired enterprise license 1`] = `"
Start a 30-day trial

Experience what machine learning, advanced security, and all our other subscription featuresExternal link(opens in a new tab or window) have to offer.

"`; -exports[`StartTrial component when trial is allowed should display for expired platinum license 1`] = `"
Start a 30-day trial

Experience what machine learning, advanced security, and all our other subscription featuresExternal link(opens in a new tab or window) have to offer.

"`; +exports[`StartTrial component when trial is allowed should display for expired platinum license 1`] = `"
Start a 30-day trial

Experience what machine learning, advanced security, and all our other subscription featuresExternal link(opens in a new tab or window) have to offer.

"`; -exports[`StartTrial component when trial is allowed should display for gold license 1`] = `"
Start a 30-day trial

Experience what machine learning, advanced security, and all our other subscription featuresExternal link(opens in a new tab or window) have to offer.

"`; +exports[`StartTrial component when trial is allowed should display for gold license 1`] = `"
Start a 30-day trial

Experience what machine learning, advanced security, and all our other subscription featuresExternal link(opens in a new tab or window) have to offer.

"`; diff --git a/x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap b/x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap index 301585a0ab914..63445516b6eb2 100644 --- a/x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap +++ b/x-pack/plugins/license_management/__jest__/__snapshots__/upload_license.test.tsx.snap @@ -2,7 +2,7 @@ exports[`UploadLicense should display a modal when license requires acknowledgement 1`] = `

Your license key is a JSON file with a signature attached. @@ -119,7 +119,7 @@ exports[`UploadLicense should display a modal when license requires acknowledgem exports[`UploadLicense should display an error when ES says license is expired 1`] = `

Your license key is a JSON file with a signature attached. @@ -153,7 +153,7 @@ exports[`UploadLicense should display an error when ES says license is expired 1 >

Your license key is a JSON file with a signature attached. @@ -297,7 +293,7 @@ exports[`UploadLicense should display an error when ES says license is invalid 1 >

Your license key is a JSON file with a signature attached. @@ -441,7 +433,7 @@ exports[`UploadLicense should display an error when submitting invalid JSON 1`] >

Your license key is a JSON file with a signature attached. @@ -585,7 +573,7 @@ exports[`UploadLicense should display error when ES returns error 1`] = ` >

{interpolateTitle} -

+

{percentilesTitle} -

+

- - + -

- +
-

+

= ({ <> {s.snapshot_id} -

{s.description}

+

{s.description}

), diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape_options.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape_options.tsx index b7dc4d617427d..d8c61de0a510c 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape_options.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape_options.tsx @@ -95,8 +95,7 @@ export const getCytoscapeOptions = (theme: EuiThemeType): cytoscape.CytoscapeOpt // @ts-ignore 'background-image': (el: cytoscape.NodeSingular) => iconForNode(el), 'border-width': (el: cytoscape.NodeSingular) => (el.selected() ? 4 : 3), - // @ts-ignore - color: theme.euiTextColors.default, + color: theme.euiTextColor, 'font-family': 'Inter UI, Segoe UI, Helvetica, Arial, sans-serif', 'font-size': theme.euiFontSizeXS, 'min-zoomed-font-size': parseInt(theme.euiSizeL, 10), @@ -104,9 +103,9 @@ export const getCytoscapeOptions = (theme: EuiThemeType): cytoscape.CytoscapeOpt shape: (el: cytoscape.NodeSingular) => shapeForNode(el, theme), 'text-background-color': theme.euiColorLightestShade, 'text-background-opacity': 0, - 'text-background-padding': theme.paddingSizes.xs, + 'text-background-padding': theme.euiSizeXS, 'text-background-shape': 'roundrectangle', - 'text-margin-y': parseInt(theme.paddingSizes.s, 10), + 'text-margin-y': parseInt(theme.euiSizeS, 10), 'text-max-width': '200px', 'text-valign': 'bottom', 'text-wrap': 'wrap', @@ -123,7 +122,7 @@ export const getCytoscapeOptions = (theme: EuiThemeType): cytoscape.CytoscapeOpt 'target-arrow-color': lineColor, 'target-arrow-shape': 'triangle', // @ts-ignore - 'target-distance-from-node': theme.paddingSizes.xs, + 'target-distance-from-node': theme.euiSizeXS, width: 1, 'source-arrow-shape': 'none', }, diff --git a/x-pack/plugins/monitoring/public/components/cluster/overview/__snapshots__/helpers.test.js.snap b/x-pack/plugins/monitoring/public/components/cluster/overview/__snapshots__/helpers.test.js.snap index ea9d312413168..4c98f55472c8e 100644 --- a/x-pack/plugins/monitoring/public/components/cluster/overview/__snapshots__/helpers.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/cluster/overview/__snapshots__/helpers.test.js.snap @@ -3,7 +3,7 @@ exports[`Bytes Usage should format correctly with only usedBytes 1`] = `
50.0 B
@@ -13,7 +13,7 @@ exports[`Bytes Usage should format correctly with only usedBytes 1`] = ` exports[`Bytes Usage should format correctly with used and max bytes 1`] = `
50.0 B / 100.0 B
@@ -23,25 +23,21 @@ exports[`Bytes Usage should format correctly with used and max bytes 1`] = ` exports[`BytesPercentageUsage should format correctly with used bytes and max bytes 1`] = `
50.00%
-
- 50.0 B / 100.0 B -
+ 50.0 B / 100.0 B
`; exports[`BytesPercentageUsage should return zero bytes if both parameters are not present 1`] = `
0
diff --git a/x-pack/plugins/monitoring/public/components/elasticsearch/ccr_shard/__snapshots__/ccr_shard.test.js.snap b/x-pack/plugins/monitoring/public/components/elasticsearch/ccr_shard/__snapshots__/ccr_shard.test.js.snap index 3647945c094cb..e0b6f737ce798 100644 --- a/x-pack/plugins/monitoring/public/components/elasticsearch/ccr_shard/__snapshots__/ccr_shard.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/elasticsearch/ccr_shard/__snapshots__/ccr_shard.test.js.snap @@ -123,8 +123,7 @@ exports[`CcrShard that it renders normally 1`] = ` -

@@ -136,12 +135,7 @@ exports[`CcrShard that it renders normally 1`] = `

} - buttonElement="button" - element="div" id="ccrLatestStat" - initialIsOpen={false} - isLoading={false} - isLoadingMessage={false} paddingSize="l" > -
+ `; diff --git a/x-pack/plugins/monitoring/public/components/elasticsearch/nodes/__snapshots__/cells.test.js.snap b/x-pack/plugins/monitoring/public/components/elasticsearch/nodes/__snapshots__/cells.test.js.snap index 5535520c67a8e..527e68fbec1ad 100644 --- a/x-pack/plugins/monitoring/public/components/elasticsearch/nodes/__snapshots__/cells.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/elasticsearch/nodes/__snapshots__/cells.test.js.snap @@ -52,7 +52,7 @@ exports[`Node Listing Metric Cell should format a non-percentage metric 1`] = ` class="euiFlexItem euiFlexItem--flexGrowZero" >
206.3 GB
@@ -106,7 +106,7 @@ exports[`Node Listing Metric Cell should format a percentage metric 1`] = ` class="euiFlexItem euiFlexItem--flexGrowZero" >
0%
diff --git a/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/checker_errors.test.js.snap b/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/checker_errors.test.js.snap index 249ccd701ee6e..76868f50ef1ab 100644 --- a/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/checker_errors.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/checker_errors.test.js.snap @@ -8,7 +8,7 @@ Array [ class="euiSpacer euiSpacer--l css-p2o3x6-euiSpacer-l" />,

-
+ There were some errors encountered in trying to check Elasticsearch settings. You need administrator rights to check the settings and, if needed, to enable the monitoring collection setting. +

+
-

- There were some errors encountered in trying to check Elasticsearch settings. You need administrator rights to check the settings and, if needed, to enable the monitoring collection setting. -

-
-
- 403 Forbidden -
-
- no access for you -
-
- 500 Internal Server Error -
-
- An internal server error occurred -
-
-
+ 403 Forbidden + +
+ no access for you +
+
+ 500 Internal Server Error +
+
+ An internal server error occurred +
+
, ] diff --git a/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/no_data.test.js.snap b/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/no_data.test.js.snap index 294adee15f725..67681016d7a95 100644 --- a/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/no_data.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/no_data/__snapshots__/no_data.test.js.snap @@ -15,7 +15,7 @@ exports[`NoData should show a default message if reason is unknown 1`] = ` style="max-width:600px" >

Have you set up monitoring yet? If so, make sure that the selected time period in the upper right includes monitoring data. @@ -83,7 +83,7 @@ exports[`NoData should show a default message if reason is unknown 1`] = ` class="euiButtonEmpty__text" > Or, set up with self monitoring @@ -110,7 +110,7 @@ exports[`NoData should show text next to the spinner while checking a setting 1` style="max-width:600px" >

Have you set up monitoring yet? If so, make sure that the selected time period in the upper right includes monitoring data. @@ -178,7 +178,7 @@ exports[`NoData should show text next to the spinner while checking a setting 1` class="euiButtonEmpty__text" > Or, set up with self monitoring diff --git a/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_enabled/__snapshots__/collection_enabled.test.js.snap b/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_enabled/__snapshots__/collection_enabled.test.js.snap index 392a01421747d..e876c673a3f7c 100644 --- a/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_enabled/__snapshots__/collection_enabled.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_enabled/__snapshots__/collection_enabled.test.js.snap @@ -8,10 +8,10 @@ Array [ Monitoring is currently off ,

Monitoring provides insight to your hardware performance and load. @@ -22,7 +22,7 @@ Array [ class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />,

We checked the cluster settings and found that diff --git a/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_interval/__snapshots__/collection_interval.test.js.snap b/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_interval/__snapshots__/collection_interval.test.js.snap index dbe1886197c51..a065c2fc3a61d 100644 --- a/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_interval/__snapshots__/collection_interval.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/no_data/explanations/collection_interval/__snapshots__/collection_interval.test.js.snap @@ -11,7 +11,7 @@ Array [ class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />,

As soon as monitoring data appears in your cluster the page will automatically refresh with your monitoring dashboard. This only takes only a few seconds. @@ -36,10 +36,10 @@ Array [ Monitoring is currently off ,

Monitoring provides insight to your hardware performance and load. @@ -50,7 +50,7 @@ Array [ class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />,

We checked the cluster settings and found that @@ -113,10 +113,10 @@ Array [ Monitoring is currently off ,

Monitoring provides insight to your hardware performance and load. @@ -127,7 +127,7 @@ Array [ class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />,

We checked the cluster settings and found that diff --git a/x-pack/plugins/monitoring/public/components/no_data/explanations/exporters/__snapshots__/exporters.test.js.snap b/x-pack/plugins/monitoring/public/components/no_data/explanations/exporters/__snapshots__/exporters.test.js.snap index fb8c2d859336b..191900a6d40e9 100644 --- a/x-pack/plugins/monitoring/public/components/no_data/explanations/exporters/__snapshots__/exporters.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/no_data/explanations/exporters/__snapshots__/exporters.test.js.snap @@ -8,10 +8,10 @@ Array [ You need to make some adjustments ,

To run monitoring please perform the following steps @@ -22,7 +22,7 @@ Array [ class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />,

We checked the @@ -72,10 +72,10 @@ Array [ exports[`ExplainExportersCloud should explain about xpack.monitoring.exporters setting in a cloud environment 1`] = ` Array [

Configure monitoring through @@ -145,7 +145,7 @@ Array [ class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />,

In Elastic Cloud, your monitoring data is stored in your dedicated monitoring cluster. diff --git a/x-pack/plugins/monitoring/public/components/no_data/explanations/plugin_enabled/__snapshots__/plugin_enabled.test.js.snap b/x-pack/plugins/monitoring/public/components/no_data/explanations/plugin_enabled/__snapshots__/plugin_enabled.test.js.snap index d81a0b879ed3c..b16d2cef833e9 100644 --- a/x-pack/plugins/monitoring/public/components/no_data/explanations/plugin_enabled/__snapshots__/plugin_enabled.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/no_data/explanations/plugin_enabled/__snapshots__/plugin_enabled.test.js.snap @@ -8,10 +8,10 @@ Array [ You need to make some adjustments ,

To run monitoring please perform the following steps @@ -22,7 +22,7 @@ Array [ class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />,

We checked the cluster settings and found that diff --git a/x-pack/plugins/monitoring/public/components/no_data/reasons/__snapshots__/reason_found.test.js.snap b/x-pack/plugins/monitoring/public/components/no_data/reasons/__snapshots__/reason_found.test.js.snap index 93cd6db411d29..e91654a721305 100644 --- a/x-pack/plugins/monitoring/public/components/no_data/reasons/__snapshots__/reason_found.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/no_data/reasons/__snapshots__/reason_found.test.js.snap @@ -8,10 +8,10 @@ Array [ Monitoring is currently off ,

Monitoring provides insight to your hardware performance and load. @@ -22,7 +22,7 @@ Array [ class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />,

We checked the cluster settings and found that @@ -79,10 +79,10 @@ Array [ You need to make some adjustments ,

To run monitoring please perform the following steps @@ -93,7 +93,7 @@ Array [ class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />,

We checked the @@ -143,10 +143,10 @@ Array [ exports[`ReasonFound should load ExplainExportersCloud component 1`] = ` Array [

Configure monitoring through @@ -216,7 +216,7 @@ Array [ class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />,

In Elastic Cloud, your monitoring data is stored in your dedicated monitoring cluster. @@ -233,10 +233,10 @@ Array [ You need to make some adjustments ,

To run monitoring please perform the following steps @@ -247,7 +247,7 @@ Array [ class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />,

We checked the node001foo settings and found that diff --git a/x-pack/plugins/monitoring/public/components/no_data/reasons/__snapshots__/we_tried.test.js.snap b/x-pack/plugins/monitoring/public/components/no_data/reasons/__snapshots__/we_tried.test.js.snap index ee0c34f529298..b5c2527dd7a2b 100644 --- a/x-pack/plugins/monitoring/public/components/no_data/reasons/__snapshots__/we_tried.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/no_data/reasons/__snapshots__/we_tried.test.js.snap @@ -13,7 +13,7 @@ exports[`WeTried should render "we tried" message 1`] = ` class="euiHorizontalRule euiHorizontalRule--half euiHorizontalRule--marginLarge css-16ybxy8-euiHorizontalRule-half-l" />

No monitoring data found. Try setting the time filter to "Last 1 hour" or check if data is available for a different time period. diff --git a/x-pack/plugins/monitoring/public/components/page_loading/__snapshots__/page_loading.test.js.snap b/x-pack/plugins/monitoring/public/components/page_loading/__snapshots__/page_loading.test.js.snap index 39ef893984c7d..431c1d327afe8 100644 --- a/x-pack/plugins/monitoring/public/components/page_loading/__snapshots__/page_loading.test.js.snap +++ b/x-pack/plugins/monitoring/public/components/page_loading/__snapshots__/page_loading.test.js.snap @@ -9,7 +9,7 @@ exports[`PageLoading should show a simple page loading component 1`] = ` class="euiPageBody euiPageBody--borderRadiusNone" >

+

{i18n.translate('xpack.painlessLab.context.defaultLabel', { defaultMessage: 'The script result will be converted to a string', })} @@ -50,7 +50,7 @@ export const painlessContextOptions: Array <> {filterLabel} -

+

{i18n.translate('xpack.painlessLab.context.filterLabel', { defaultMessage: "Use the context of a filter's script query", })} @@ -67,7 +67,7 @@ export const painlessContextOptions: Array <> {scoreLabel} -

+

{i18n.translate('xpack.painlessLab.context.scoreLabel', { defaultMessage: 'Use the context of a script_score function in function_score query', })} diff --git a/x-pack/plugins/reporting/public/share_context_menu/__snapshots__/screen_capture_panel_content.test.tsx.snap b/x-pack/plugins/reporting/public/share_context_menu/__snapshots__/screen_capture_panel_content.test.tsx.snap index 6065e63aacba4..6f7223b999d0b 100644 --- a/x-pack/plugins/reporting/public/share_context_menu/__snapshots__/screen_capture_panel_content.test.tsx.snap +++ b/x-pack/plugins/reporting/public/share_context_menu/__snapshots__/screen_capture_panel_content.test.tsx.snap @@ -6,7 +6,7 @@ exports[`ScreenCapturePanelContent properly renders a view with "canvas" layout data-test-subj="shareReportingForm" >

@@ -101,13 +101,13 @@ exports[`ScreenCapturePanelContent properly renders a view with "canvas" layout class="euiAccordion" >

@@ -159,7 +159,7 @@ exports[`ScreenCapturePanelContent properly renders a view with "canvas" layout class="euiSpacer euiSpacer--s css-78drzl-euiSpacer-s" />

-
-

- - Save your work before copying this URL. - -

-
-
+

+ + Save your work before copying this URL. + +

+
@@ -206,7 +202,7 @@ exports[`ScreenCapturePanelContent properly renders a view with "print" layout o data-test-subj="shareReportingForm" >

@@ -301,13 +297,13 @@ exports[`ScreenCapturePanelContent properly renders a view with "print" layout o class="euiAccordion" >

@@ -359,7 +355,7 @@ exports[`ScreenCapturePanelContent properly renders a view with "print" layout o class="euiSpacer euiSpacer--s css-78drzl-euiSpacer-s" />

-
-

- - Save your work before copying this URL. - -

-
-
+

+ + Save your work before copying this URL. + +

+
@@ -406,7 +398,7 @@ exports[`ScreenCapturePanelContent renders the default view properly 1`] = ` data-test-subj="shareReportingForm" >

@@ -442,13 +434,13 @@ exports[`ScreenCapturePanelContent renders the default view properly 1`] = ` class="euiAccordion" >

@@ -500,7 +492,7 @@ exports[`ScreenCapturePanelContent renders the default view properly 1`] = ` class="euiSpacer euiSpacer--s css-78drzl-euiSpacer-s" />

-
-

- - Save your work before copying this URL. - -

-
-
+

+ + Save your work before copying this URL. + +

+
diff --git a/x-pack/plugins/security/public/management/roles/roles_grid/__snapshots__/roles_grid_page.test.tsx.snap b/x-pack/plugins/security/public/management/roles/roles_grid/__snapshots__/roles_grid_page.test.tsx.snap index e355dce44a387..5de000ed20207 100644 --- a/x-pack/plugins/security/public/management/roles/roles_grid/__snapshots__/roles_grid_page.test.tsx.snap +++ b/x-pack/plugins/security/public/management/roles/roles_grid/__snapshots__/roles_grid_page.test.tsx.snap @@ -2,11 +2,11 @@ exports[` renders permission denied if required 1`] = `
renders permission denied if required 1`] = ` > You need permission to manage roles - +
-
-
-

- Contact your system administrator. -

-
- + Contact your system administrator. +

+
diff --git a/x-pack/plugins/security/server/__snapshots__/prompt_page.test.tsx.snap b/x-pack/plugins/security/server/__snapshots__/prompt_page.test.tsx.snap index 0033dca9c4e44..555ebf370b898 100644 --- a/x-pack/plugins/security/server/__snapshots__/prompt_page.test.tsx.snap +++ b/x-pack/plugins/security/server/__snapshots__/prompt_page.test.tsx.snap @@ -1,5 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`PromptPage renders as expected with additional scripts 1`] = `"ElasticMockedFonts

Some Title

Some Body
Action#1
Action#2
"`; +exports[`PromptPage renders as expected with additional scripts 1`] = `"ElasticMockedFonts

Some Title

Some Body
Action#1
Action#2
"`; -exports[`PromptPage renders as expected without additional scripts 1`] = `"ElasticMockedFonts

Some Title

Some Body
Action#1
Action#2
"`; +exports[`PromptPage renders as expected without additional scripts 1`] = `"ElasticMockedFonts

Some Title

Some Body
Action#1
Action#2
"`; diff --git a/x-pack/plugins/security/server/authentication/__snapshots__/unauthenticated_page.test.tsx.snap b/x-pack/plugins/security/server/authentication/__snapshots__/unauthenticated_page.test.tsx.snap index 2ec39e0654cbd..332491b1977aa 100644 --- a/x-pack/plugins/security/server/authentication/__snapshots__/unauthenticated_page.test.tsx.snap +++ b/x-pack/plugins/security/server/authentication/__snapshots__/unauthenticated_page.test.tsx.snap @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`UnauthenticatedPage renders as expected 1`] = `"ElasticMockedFonts

We couldn't log you in

We hit an authentication error. Please check your credentials and try again. If you still can't log in, contact your system administrator.

"`; +exports[`UnauthenticatedPage renders as expected 1`] = `"ElasticMockedFonts

We couldn't log you in

We hit an authentication error. Please check your credentials and try again. If you still can't log in, contact your system administrator.

"`; diff --git a/x-pack/plugins/security/server/authorization/__snapshots__/reset_session_page.test.tsx.snap b/x-pack/plugins/security/server/authorization/__snapshots__/reset_session_page.test.tsx.snap index 51a194be69443..6d5b5e40d592c 100644 --- a/x-pack/plugins/security/server/authorization/__snapshots__/reset_session_page.test.tsx.snap +++ b/x-pack/plugins/security/server/authorization/__snapshots__/reset_session_page.test.tsx.snap @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`ResetSessionPage renders as expected 1`] = `"ElasticMockedFonts

You do not have permission to access the requested page

Either go back to the previous page or log in as a different user.

"`; +exports[`ResetSessionPage renders as expected 1`] = `"ElasticMockedFonts

You do not have permission to access the requested page

Either go back to the previous page or log in as a different user.

"`; diff --git a/x-pack/plugins/security_solution/public/common/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap index 84b90a910574f..3b362a2626315 100644 --- a/x-pack/plugins/security_solution/public/common/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/authentication/__snapshots__/authentications_host_table.test.tsx.snap @@ -57,7 +57,7 @@ exports[`Authentication Host Table Component rendering it renders the host authe }
(({ width }) => { font-size: ${({ theme }) => theme.eui.euiFontSizeXS}; font-weight: ${({ theme }) => theme.eui.euiFontWeightSemiBold}; line-height: ${({ theme }) => theme.eui.euiLineHeight}; - padding: ${({ theme }) => theme.eui.paddingSizes.xs}; + padding: ${({ theme }) => theme.eui.euiSizeXS}; `; Field.displayName = 'Field'; diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/__snapshots__/link_to_app.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/endpoint/__snapshots__/link_to_app.test.tsx.snap index 6ff2142c9d151..3399fa3ad8b40 100644 --- a/x-pack/plugins/security_solution/public/common/components/endpoint/__snapshots__/link_to_app.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/endpoint/__snapshots__/link_to_app.test.tsx.snap @@ -35,56 +35,56 @@ exports[`LinkToApp component should render with href 1`] = ` data-s="" > - .css-102pf9n-euiLink-primary{font-weight:500;text-align:left;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;color:#006bb8;}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xpbmsvbGluay5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUZhIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xpbmsvbGluay5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IEVsYXN0aWNzZWFyY2ggQi5WLiBhbmQvb3IgbGljZW5zZWQgdG8gRWxhc3RpY3NlYXJjaCBCLlYuIHVuZGVyIG9uZVxuICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuIExpY2Vuc2VkIHVuZGVyIHRoZSBFbGFzdGljIExpY2Vuc2VcbiAqIDIuMCBhbmQgdGhlIFNlcnZlciBTaWRlIFB1YmxpYyBMaWNlbnNlLCB2IDE7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0XG4gKiBpbiBjb21wbGlhbmNlIHdpdGgsIGF0IHlvdXIgZWxlY3Rpb24sIHRoZSBFbGFzdGljIExpY2Vuc2UgMi4wIG9yIHRoZSBTZXJ2ZXJcbiAqIFNpZGUgUHVibGljIExpY2Vuc2UsIHYgMS5cbiAqL1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBVc2VFdWlUaGVtZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IGV1aUZvY3VzUmluZywgbG9naWNhbENTUyB9IGZyb20gJy4uLy4uL2dsb2JhbF9zdHlsaW5nJztcblxuY29uc3QgX2NvbG9yQ1NTID0gKGNvbG9yOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIGBcbiAgICBjb2xvcjogJHtjb2xvcn07XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjp0YXJnZXQge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuXG4gICAgJjp0YXJnZXQge1xuICAgICAgY29sb3I6IGRhcmtlbigke2NvbG9yfSwgMTAlKTtcbiAgICB9XG4gIGA7XG59O1xuXG5leHBvcnQgY29uc3QgZXVpTGlua0hvdmVyQ1NTID0gKCkgPT4ge1xuICByZXR1cm4gYFxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICBgO1xufTtcblxuZXhwb3J0IGNvbnN0IGV1aUxpbmtGb2N1c0NTUyA9ICh7IGV1aVRoZW1lIH06IFVzZUV1aVRoZW1lKSA9PiB7XG4gIHJldHVybiBgXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogJHtldWlUaGVtZS5ib3JkZXIud2lkdGgudGhpY2t9ICFpbXBvcnRhbnQ7XG4gIGA7XG59O1xuXG5leHBvcnQgY29uc3QgZXVpTGlua0NTUyA9IChfdGhlbWU6IFVzZUV1aVRoZW1lKSA9PiB7XG4gIGNvbnN0IHsgZXVpVGhlbWUgfSA9IF90aGVtZTtcblxuICByZXR1cm4gYFxuICAgIGZvbnQtd2VpZ2h0OiAke2V1aVRoZW1lLmZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICY6aG92ZXIge1xuICAgICAgJHtldWlMaW5rSG92ZXJDU1MoKX1cbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICR7ZXVpRm9jdXNSaW5nKGV1aVRoZW1lLCAnb3V0c2V0Jyl9XG4gICAgICAke2V1aUxpbmtGb2N1c0NTUyhfdGhlbWUpfVxuICAgIH1cbiAgYDtcbn07XG5cbmV4cG9ydCBjb25zdCBldWlMaW5rU3R5bGVzID0gKF90aGVtZTogVXNlRXVpVGhlbWUpID0+IHtcbiAgY29uc3QgeyBldWlUaGVtZSB9ID0gX3RoZW1lO1xuXG4gIHJldHVybiB7XG4gICAgZXVpTGluazogY3NzYFxuICAgICAgJHtldWlMaW5rQ1NTKF90aGVtZSl9XG4gICAgICB1c2VyLXNlbGVjdDogdGV4dDtcblxuICAgICAgJlt0YXJnZXQ9J19ibGFuayddIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuICAgIGAsXG4gICAgZGlzYWJsZWQ6IGNzc2BcbiAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY3Vyc29yOiBhdXRvO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJjpmb2N1cyxcbiAgICAgICY6dGFyZ2V0IHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgfVxuICAgIGAsXG4gICAgLy8gQ29sb3Igc3R5bGVzXG4gICAgcHJpbWFyeTogY3NzKF9jb2xvckNTUyhldWlUaGVtZS5jb2xvcnMucHJpbWFyeVRleHQpKSxcbiAgICBzdWJkdWVkOiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy5zdWJkdWVkKSksXG4gICAgc3VjY2VzczogY3NzKF9jb2xvckNTUyhldWlUaGVtZS5jb2xvcnMuc3VjY2Vzc1RleHQpKSxcbiAgICBhY2NlbnQ6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLmFjY2VudFRleHQpKSxcbiAgICBkYW5nZXI6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLmRhbmdlclRleHQpKSxcbiAgICB3YXJuaW5nOiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy53YXJuaW5nVGV4dCkpLFxuICAgIGdob3N0OiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy5naG9zdCkpLFxuICAgIHRleHQ6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLnRleHQpKSxcblxuICAgIC8vIENoaWxkcmVuXG4gICAgZXVpTGlua19fc2NyZWVuUmVhZGVyVGV4dDogY3NzYFxuICAgICAgJHtsb2dpY2FsQ1NTKCdsZWZ0JywgJzBweCcpfVxuICAgIGAsXG4gICAgZXVpTGlua19fZXh0ZXJuYWxJY29uOiBjc3NgXG4gICAgICAke2xvZ2ljYWxDU1MoJ21hcmdpbi1sZWZ0JywgZXVpVGhlbWUuc2l6ZS54cyl9XG4gICAgYCxcbiAgfTtcbn07XG4iXX0= */ + .css-102pf9n-euiLink-primary{font-weight:500;text-align:left;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;color:#006bb8;} , , , , , , , , ], }, @@ -165,7 +165,7 @@ exports[`LinkToApp component should render with href 1`] = ` isStringTag={true} serialized={ Object { - "map": "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xpbmsvbGluay5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUZhIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xpbmsvbGluay5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IEVsYXN0aWNzZWFyY2ggQi5WLiBhbmQvb3IgbGljZW5zZWQgdG8gRWxhc3RpY3NlYXJjaCBCLlYuIHVuZGVyIG9uZVxuICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuIExpY2Vuc2VkIHVuZGVyIHRoZSBFbGFzdGljIExpY2Vuc2VcbiAqIDIuMCBhbmQgdGhlIFNlcnZlciBTaWRlIFB1YmxpYyBMaWNlbnNlLCB2IDE7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0XG4gKiBpbiBjb21wbGlhbmNlIHdpdGgsIGF0IHlvdXIgZWxlY3Rpb24sIHRoZSBFbGFzdGljIExpY2Vuc2UgMi4wIG9yIHRoZSBTZXJ2ZXJcbiAqIFNpZGUgUHVibGljIExpY2Vuc2UsIHYgMS5cbiAqL1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBVc2VFdWlUaGVtZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IGV1aUZvY3VzUmluZywgbG9naWNhbENTUyB9IGZyb20gJy4uLy4uL2dsb2JhbF9zdHlsaW5nJztcblxuY29uc3QgX2NvbG9yQ1NTID0gKGNvbG9yOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIGBcbiAgICBjb2xvcjogJHtjb2xvcn07XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjp0YXJnZXQge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuXG4gICAgJjp0YXJnZXQge1xuICAgICAgY29sb3I6IGRhcmtlbigke2NvbG9yfSwgMTAlKTtcbiAgICB9XG4gIGA7XG59O1xuXG5leHBvcnQgY29uc3QgZXVpTGlua0hvdmVyQ1NTID0gKCkgPT4ge1xuICByZXR1cm4gYFxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICBgO1xufTtcblxuZXhwb3J0IGNvbnN0IGV1aUxpbmtGb2N1c0NTUyA9ICh7IGV1aVRoZW1lIH06IFVzZUV1aVRoZW1lKSA9PiB7XG4gIHJldHVybiBgXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogJHtldWlUaGVtZS5ib3JkZXIud2lkdGgudGhpY2t9ICFpbXBvcnRhbnQ7XG4gIGA7XG59O1xuXG5leHBvcnQgY29uc3QgZXVpTGlua0NTUyA9IChfdGhlbWU6IFVzZUV1aVRoZW1lKSA9PiB7XG4gIGNvbnN0IHsgZXVpVGhlbWUgfSA9IF90aGVtZTtcblxuICByZXR1cm4gYFxuICAgIGZvbnQtd2VpZ2h0OiAke2V1aVRoZW1lLmZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICY6aG92ZXIge1xuICAgICAgJHtldWlMaW5rSG92ZXJDU1MoKX1cbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICR7ZXVpRm9jdXNSaW5nKGV1aVRoZW1lLCAnb3V0c2V0Jyl9XG4gICAgICAke2V1aUxpbmtGb2N1c0NTUyhfdGhlbWUpfVxuICAgIH1cbiAgYDtcbn07XG5cbmV4cG9ydCBjb25zdCBldWlMaW5rU3R5bGVzID0gKF90aGVtZTogVXNlRXVpVGhlbWUpID0+IHtcbiAgY29uc3QgeyBldWlUaGVtZSB9ID0gX3RoZW1lO1xuXG4gIHJldHVybiB7XG4gICAgZXVpTGluazogY3NzYFxuICAgICAgJHtldWlMaW5rQ1NTKF90aGVtZSl9XG4gICAgICB1c2VyLXNlbGVjdDogdGV4dDtcblxuICAgICAgJlt0YXJnZXQ9J19ibGFuayddIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuICAgIGAsXG4gICAgZGlzYWJsZWQ6IGNzc2BcbiAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY3Vyc29yOiBhdXRvO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJjpmb2N1cyxcbiAgICAgICY6dGFyZ2V0IHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgfVxuICAgIGAsXG4gICAgLy8gQ29sb3Igc3R5bGVzXG4gICAgcHJpbWFyeTogY3NzKF9jb2xvckNTUyhldWlUaGVtZS5jb2xvcnMucHJpbWFyeVRleHQpKSxcbiAgICBzdWJkdWVkOiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy5zdWJkdWVkKSksXG4gICAgc3VjY2VzczogY3NzKF9jb2xvckNTUyhldWlUaGVtZS5jb2xvcnMuc3VjY2Vzc1RleHQpKSxcbiAgICBhY2NlbnQ6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLmFjY2VudFRleHQpKSxcbiAgICBkYW5nZXI6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLmRhbmdlclRleHQpKSxcbiAgICB3YXJuaW5nOiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy53YXJuaW5nVGV4dCkpLFxuICAgIGdob3N0OiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy5naG9zdCkpLFxuICAgIHRleHQ6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLnRleHQpKSxcblxuICAgIC8vIENoaWxkcmVuXG4gICAgZXVpTGlua19fc2NyZWVuUmVhZGVyVGV4dDogY3NzYFxuICAgICAgJHtsb2dpY2FsQ1NTKCdsZWZ0JywgJzBweCcpfVxuICAgIGAsXG4gICAgZXVpTGlua19fZXh0ZXJuYWxJY29uOiBjc3NgXG4gICAgICAke2xvZ2ljYWxDU1MoJ21hcmdpbi1sZWZ0JywgZXVpVGhlbWUuc2l6ZS54cyl9XG4gICAgYCxcbiAgfTtcbn07XG4iXX0= */", + "map": undefined, "name": "102pf9n-euiLink-primary", "next": undefined, "styles": " @@ -261,56 +261,56 @@ exports[`LinkToApp component should render with minimum input 1`] = ` data-s="" > - .css-102pf9n-euiLink-primary{font-weight:500;text-align:left;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;color:#006bb8;}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xpbmsvbGluay5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUZhIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xpbmsvbGluay5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IEVsYXN0aWNzZWFyY2ggQi5WLiBhbmQvb3IgbGljZW5zZWQgdG8gRWxhc3RpY3NlYXJjaCBCLlYuIHVuZGVyIG9uZVxuICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuIExpY2Vuc2VkIHVuZGVyIHRoZSBFbGFzdGljIExpY2Vuc2VcbiAqIDIuMCBhbmQgdGhlIFNlcnZlciBTaWRlIFB1YmxpYyBMaWNlbnNlLCB2IDE7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0XG4gKiBpbiBjb21wbGlhbmNlIHdpdGgsIGF0IHlvdXIgZWxlY3Rpb24sIHRoZSBFbGFzdGljIExpY2Vuc2UgMi4wIG9yIHRoZSBTZXJ2ZXJcbiAqIFNpZGUgUHVibGljIExpY2Vuc2UsIHYgMS5cbiAqL1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBVc2VFdWlUaGVtZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IGV1aUZvY3VzUmluZywgbG9naWNhbENTUyB9IGZyb20gJy4uLy4uL2dsb2JhbF9zdHlsaW5nJztcblxuY29uc3QgX2NvbG9yQ1NTID0gKGNvbG9yOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIGBcbiAgICBjb2xvcjogJHtjb2xvcn07XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjp0YXJnZXQge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuXG4gICAgJjp0YXJnZXQge1xuICAgICAgY29sb3I6IGRhcmtlbigke2NvbG9yfSwgMTAlKTtcbiAgICB9XG4gIGA7XG59O1xuXG5leHBvcnQgY29uc3QgZXVpTGlua0hvdmVyQ1NTID0gKCkgPT4ge1xuICByZXR1cm4gYFxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICBgO1xufTtcblxuZXhwb3J0IGNvbnN0IGV1aUxpbmtGb2N1c0NTUyA9ICh7IGV1aVRoZW1lIH06IFVzZUV1aVRoZW1lKSA9PiB7XG4gIHJldHVybiBgXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogJHtldWlUaGVtZS5ib3JkZXIud2lkdGgudGhpY2t9ICFpbXBvcnRhbnQ7XG4gIGA7XG59O1xuXG5leHBvcnQgY29uc3QgZXVpTGlua0NTUyA9IChfdGhlbWU6IFVzZUV1aVRoZW1lKSA9PiB7XG4gIGNvbnN0IHsgZXVpVGhlbWUgfSA9IF90aGVtZTtcblxuICByZXR1cm4gYFxuICAgIGZvbnQtd2VpZ2h0OiAke2V1aVRoZW1lLmZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICY6aG92ZXIge1xuICAgICAgJHtldWlMaW5rSG92ZXJDU1MoKX1cbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICR7ZXVpRm9jdXNSaW5nKGV1aVRoZW1lLCAnb3V0c2V0Jyl9XG4gICAgICAke2V1aUxpbmtGb2N1c0NTUyhfdGhlbWUpfVxuICAgIH1cbiAgYDtcbn07XG5cbmV4cG9ydCBjb25zdCBldWlMaW5rU3R5bGVzID0gKF90aGVtZTogVXNlRXVpVGhlbWUpID0+IHtcbiAgY29uc3QgeyBldWlUaGVtZSB9ID0gX3RoZW1lO1xuXG4gIHJldHVybiB7XG4gICAgZXVpTGluazogY3NzYFxuICAgICAgJHtldWlMaW5rQ1NTKF90aGVtZSl9XG4gICAgICB1c2VyLXNlbGVjdDogdGV4dDtcblxuICAgICAgJlt0YXJnZXQ9J19ibGFuayddIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuICAgIGAsXG4gICAgZGlzYWJsZWQ6IGNzc2BcbiAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY3Vyc29yOiBhdXRvO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJjpmb2N1cyxcbiAgICAgICY6dGFyZ2V0IHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgfVxuICAgIGAsXG4gICAgLy8gQ29sb3Igc3R5bGVzXG4gICAgcHJpbWFyeTogY3NzKF9jb2xvckNTUyhldWlUaGVtZS5jb2xvcnMucHJpbWFyeVRleHQpKSxcbiAgICBzdWJkdWVkOiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy5zdWJkdWVkKSksXG4gICAgc3VjY2VzczogY3NzKF9jb2xvckNTUyhldWlUaGVtZS5jb2xvcnMuc3VjY2Vzc1RleHQpKSxcbiAgICBhY2NlbnQ6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLmFjY2VudFRleHQpKSxcbiAgICBkYW5nZXI6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLmRhbmdlclRleHQpKSxcbiAgICB3YXJuaW5nOiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy53YXJuaW5nVGV4dCkpLFxuICAgIGdob3N0OiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy5naG9zdCkpLFxuICAgIHRleHQ6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLnRleHQpKSxcblxuICAgIC8vIENoaWxkcmVuXG4gICAgZXVpTGlua19fc2NyZWVuUmVhZGVyVGV4dDogY3NzYFxuICAgICAgJHtsb2dpY2FsQ1NTKCdsZWZ0JywgJzBweCcpfVxuICAgIGAsXG4gICAgZXVpTGlua19fZXh0ZXJuYWxJY29uOiBjc3NgXG4gICAgICAke2xvZ2ljYWxDU1MoJ21hcmdpbi1sZWZ0JywgZXVpVGhlbWUuc2l6ZS54cyl9XG4gICAgYCxcbiAgfTtcbn07XG4iXX0= */ + .css-102pf9n-euiLink-primary{font-weight:500;text-align:left;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;color:#006bb8;} , , , , , , , , ], }, @@ -387,7 +387,7 @@ exports[`LinkToApp component should render with minimum input 1`] = ` isStringTag={true} serialized={ Object { - "map": "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xpbmsvbGluay5zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUZhIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xpbmsvbGluay5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IEVsYXN0aWNzZWFyY2ggQi5WLiBhbmQvb3IgbGljZW5zZWQgdG8gRWxhc3RpY3NlYXJjaCBCLlYuIHVuZGVyIG9uZVxuICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuIExpY2Vuc2VkIHVuZGVyIHRoZSBFbGFzdGljIExpY2Vuc2VcbiAqIDIuMCBhbmQgdGhlIFNlcnZlciBTaWRlIFB1YmxpYyBMaWNlbnNlLCB2IDE7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0XG4gKiBpbiBjb21wbGlhbmNlIHdpdGgsIGF0IHlvdXIgZWxlY3Rpb24sIHRoZSBFbGFzdGljIExpY2Vuc2UgMi4wIG9yIHRoZSBTZXJ2ZXJcbiAqIFNpZGUgUHVibGljIExpY2Vuc2UsIHYgMS5cbiAqL1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBVc2VFdWlUaGVtZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IGV1aUZvY3VzUmluZywgbG9naWNhbENTUyB9IGZyb20gJy4uLy4uL2dsb2JhbF9zdHlsaW5nJztcblxuY29uc3QgX2NvbG9yQ1NTID0gKGNvbG9yOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIGBcbiAgICBjb2xvcjogJHtjb2xvcn07XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjp0YXJnZXQge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuXG4gICAgJjp0YXJnZXQge1xuICAgICAgY29sb3I6IGRhcmtlbigke2NvbG9yfSwgMTAlKTtcbiAgICB9XG4gIGA7XG59O1xuXG5leHBvcnQgY29uc3QgZXVpTGlua0hvdmVyQ1NTID0gKCkgPT4ge1xuICByZXR1cm4gYFxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICBgO1xufTtcblxuZXhwb3J0IGNvbnN0IGV1aUxpbmtGb2N1c0NTUyA9ICh7IGV1aVRoZW1lIH06IFVzZUV1aVRoZW1lKSA9PiB7XG4gIHJldHVybiBgXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogJHtldWlUaGVtZS5ib3JkZXIud2lkdGgudGhpY2t9ICFpbXBvcnRhbnQ7XG4gIGA7XG59O1xuXG5leHBvcnQgY29uc3QgZXVpTGlua0NTUyA9IChfdGhlbWU6IFVzZUV1aVRoZW1lKSA9PiB7XG4gIGNvbnN0IHsgZXVpVGhlbWUgfSA9IF90aGVtZTtcblxuICByZXR1cm4gYFxuICAgIGZvbnQtd2VpZ2h0OiAke2V1aVRoZW1lLmZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICY6aG92ZXIge1xuICAgICAgJHtldWlMaW5rSG92ZXJDU1MoKX1cbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICR7ZXVpRm9jdXNSaW5nKGV1aVRoZW1lLCAnb3V0c2V0Jyl9XG4gICAgICAke2V1aUxpbmtGb2N1c0NTUyhfdGhlbWUpfVxuICAgIH1cbiAgYDtcbn07XG5cbmV4cG9ydCBjb25zdCBldWlMaW5rU3R5bGVzID0gKF90aGVtZTogVXNlRXVpVGhlbWUpID0+IHtcbiAgY29uc3QgeyBldWlUaGVtZSB9ID0gX3RoZW1lO1xuXG4gIHJldHVybiB7XG4gICAgZXVpTGluazogY3NzYFxuICAgICAgJHtldWlMaW5rQ1NTKF90aGVtZSl9XG4gICAgICB1c2VyLXNlbGVjdDogdGV4dDtcblxuICAgICAgJlt0YXJnZXQ9J19ibGFuayddIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuICAgIGAsXG4gICAgZGlzYWJsZWQ6IGNzc2BcbiAgICAgIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY3Vyc29yOiBhdXRvO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJjpmb2N1cyxcbiAgICAgICY6dGFyZ2V0IHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgfVxuICAgIGAsXG4gICAgLy8gQ29sb3Igc3R5bGVzXG4gICAgcHJpbWFyeTogY3NzKF9jb2xvckNTUyhldWlUaGVtZS5jb2xvcnMucHJpbWFyeVRleHQpKSxcbiAgICBzdWJkdWVkOiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy5zdWJkdWVkKSksXG4gICAgc3VjY2VzczogY3NzKF9jb2xvckNTUyhldWlUaGVtZS5jb2xvcnMuc3VjY2Vzc1RleHQpKSxcbiAgICBhY2NlbnQ6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLmFjY2VudFRleHQpKSxcbiAgICBkYW5nZXI6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLmRhbmdlclRleHQpKSxcbiAgICB3YXJuaW5nOiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy53YXJuaW5nVGV4dCkpLFxuICAgIGdob3N0OiBjc3MoX2NvbG9yQ1NTKGV1aVRoZW1lLmNvbG9ycy5naG9zdCkpLFxuICAgIHRleHQ6IGNzcyhfY29sb3JDU1MoZXVpVGhlbWUuY29sb3JzLnRleHQpKSxcblxuICAgIC8vIENoaWxkcmVuXG4gICAgZXVpTGlua19fc2NyZWVuUmVhZGVyVGV4dDogY3NzYFxuICAgICAgJHtsb2dpY2FsQ1NTKCdsZWZ0JywgJzBweCcpfVxuICAgIGAsXG4gICAgZXVpTGlua19fZXh0ZXJuYWxJY29uOiBjc3NgXG4gICAgICAke2xvZ2ljYWxDU1MoJ21hcmdpbi1sZWZ0JywgZXVpVGhlbWUuc2l6ZS54cyl9XG4gICAgYCxcbiAgfTtcbn07XG4iXX0= */", + "map": undefined, "name": "102pf9n-euiLink-primary", "next": undefined, "styles": " diff --git a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/endpoint_host_isolation_status.test.tsx b/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/endpoint_host_isolation_status.test.tsx index 72b7e987436ba..8ed591d96fd4b 100644 --- a/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/endpoint_host_isolation_status.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/endpoint/host_isolation/endpoint_host_isolation_status.test.tsx @@ -53,7 +53,7 @@ describe('when using the EndpointHostIsolationStatus component', () => { const { getByTestId } = render(componentProps); expect(getByTestId('test').textContent).toBe(expectedLabel); // Validate that the text color is set to `subdued` - expect(getByTestId('test-pending').classList.contains('euiTextColor--subdued')).toBe(true); + expect(getByTestId('test-pending').classList.toString().includes('subdued')).toBe(true); }); describe('and the disableIsolationUIPendingStatuses experimental feature flag is true', () => { diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/enrichment_accordion_group.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/enrichment_accordion_group.tsx index a727c6e5ce72d..a88e47690dd51 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/enrichment_accordion_group.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/cti_details/enrichment_accordion_group.tsx @@ -36,10 +36,10 @@ import { getFirstElement } from '../../../../../common/utils/data_retrieval'; const StyledEuiAccordion = styled(EuiAccordion)` .euiAccordion__triggerWrapper { background: ${({ theme }) => theme.eui.euiColorLightestShade}; - border-radius: ${({ theme }) => theme.eui.paddingSizes.xs}; - height: ${({ theme }) => theme.eui.paddingSizes.xl}; - margin-bottom: ${({ theme }) => theme.eui.paddingSizes.s}; - padding-left: ${({ theme }) => theme.eui.paddingSizes.s}; + border-radius: ${({ theme }) => theme.eui.euiSizeXS}; + height: ${({ theme }) => theme.eui.euiSizeXL}; + margin-bottom: ${({ theme }) => theme.eui.euiSizeS}; + padding-left: ${({ theme }) => theme.eui.euiSizeS}; } `; diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/overview/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/event_details/overview/__snapshots__/index.test.tsx.snap index 3a689b1faa0cc..d87c888646e89 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/overview/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/event_details/overview/__snapshots__/index.test.tsx.snap @@ -89,10 +89,10 @@ exports[`Event Details Overview Cards renders rows and spacers correctly 1`] = ` class="euiFlexItem" >
Status
@@ -186,10 +186,10 @@ exports[`Event Details Overview Cards renders rows and spacers correctly 1`] = ` class="euiFlexItem" >
Risk Score
@@ -262,10 +262,10 @@ exports[`Event Details Overview Cards renders rows and spacers correctly 1`] = ` class="euiFlexItem" >
Rule
diff --git a/x-pack/plugins/security_solution/public/common/components/event_details/overview/overview_card.tsx b/x-pack/plugins/security_solution/public/common/components/event_details/overview/overview_card.tsx index 7984c23a337de..6b46d6985202e 100644 --- a/x-pack/plugins/security_solution/public/common/components/event_details/overview/overview_card.tsx +++ b/x-pack/plugins/security_solution/public/common/components/event_details/overview/overview_card.tsx @@ -16,7 +16,7 @@ const ActionWrapper = euiStyled.div` width: 0; transform: translate(6px); transition: transform 50ms ease-in-out; - margin-left: ${({ theme }) => theme.eui.paddingSizes.s}; + margin-left: ${({ theme }) => theme.eui.euiSizeS}; `; const OverviewPanel = euiStyled(EuiPanel)<{ @@ -24,7 +24,7 @@ const OverviewPanel = euiStyled(EuiPanel)<{ }>` &&& { background-color: ${({ theme }) => theme.eui.euiColorLightestShade}; - padding: ${({ theme }) => theme.eui.paddingSizes.s}; + padding: ${({ theme }) => theme.eui.euiSizeS}; height: 78px; } diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_comments.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_comments.tsx index 8cc9a6a43c895..4687aa1a67807 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_comments.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/add_exception_comments.tsx @@ -32,7 +32,7 @@ const COMMENT_ACCORDION_BUTTON_CLASS_NAME = 'exceptionCommentAccordionButton'; const MyAvatar = styled(EuiAvatar)` ${({ theme }) => css` - margin-right: ${theme.eui.paddingSizes.s}; + margin-right: ${theme.eui.euiSizeS}; `} `; @@ -40,7 +40,7 @@ const CommentAccordion = styled(EuiAccordion)` ${({ theme }) => css` .${COMMENT_ACCORDION_BUTTON_CLASS_NAME} { color: ${theme.eui.euiColorPrimary}; - padding: ${theme.eui.paddingSizes.m} 0; + padding: ${theme.eui.euiSizeM} 0; } `} `; diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_flyout/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_flyout/index.test.tsx index 12d322fd03008..b7e8de53761aa 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_flyout/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/edit_exception_flyout/index.test.tsx @@ -31,9 +31,7 @@ const mockTheme = getMockTheme({ euiBreakpoints: { l: '1200px', }, - paddingSizes: { - m: '10px', - }, + euiSizeM: '10px', }, }); diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_utility.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_utility.test.tsx index 562c6a7250a5d..f600fe28f3ecb 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_utility.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/exceptions_utility.test.tsx @@ -17,9 +17,7 @@ const mockTheme = getMockTheme({ euiBreakpoints: { l: '1200px', }, - paddingSizes: { - m: '10px', - }, + euiSizeM: '10px', euiBorderThin: '1px solid #ece', }, }); diff --git a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx index 473d494da38be..eeab8c7e36b70 100644 --- a/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exceptions/viewer/index.test.tsx @@ -24,9 +24,7 @@ const mockTheme = getMockTheme({ euiBreakpoints: { l: '1200px', }, - paddingSizes: { - m: '10px', - }, + euiSizeM: '10px', }, }); diff --git a/x-pack/plugins/security_solution/public/common/components/exit_full_screen/index.tsx b/x-pack/plugins/security_solution/public/common/components/exit_full_screen/index.tsx index 5ae537128bee6..ee47fca53543b 100644 --- a/x-pack/plugins/security_solution/public/common/components/exit_full_screen/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/exit_full_screen/index.tsx @@ -14,7 +14,7 @@ import * as i18n from './translations'; export const EXIT_FULL_SCREEN_CLASS_NAME = 'exit-full-screen'; const StyledEuiButton = styled(EuiButton)` - margin: ${({ theme }) => theme.eui.paddingSizes.s}; + margin: ${({ theme }) => theme.eui.euiSizeS}; `; interface Props { diff --git a/x-pack/plugins/security_solution/public/common/components/header_page/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/header_page/index.test.tsx index 84843e8be90ed..eef91978bba2d 100644 --- a/x-pack/plugins/security_solution/public/common/components/header_page/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/header_page/index.test.tsx @@ -136,9 +136,6 @@ describe('HeaderPage', () => { 'border-bottom', euiDarkVars.euiBorderThin ); - expect(securitySolutionHeaderPage).not.toHaveStyleRule( - 'padding-bottom', - euiDarkVars.paddingSizes.l - ); + expect(securitySolutionHeaderPage).not.toHaveStyleRule('padding-bottom', euiDarkVars.euiSizeL); }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/header_section/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/header_section/index.test.tsx index d835f4b2b236a..d026e3c15ea35 100644 --- a/x-pack/plugins/security_solution/public/common/components/header_section/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/header_section/index.test.tsx @@ -84,7 +84,7 @@ describe('HeaderSection', () => { const siemHeaderSection = wrapper.find('.siemHeaderSection').first(); expect(siemHeaderSection).toHaveStyleRule('border-bottom', euiDarkVars.euiBorderThin); - expect(siemHeaderSection).toHaveStyleRule('padding-bottom', euiDarkVars.paddingSizes.l); + expect(siemHeaderSection).toHaveStyleRule('padding-bottom', euiDarkVars.euiSizeL); }); test('it DOES NOT apply border styles when border is false', () => { @@ -96,7 +96,7 @@ describe('HeaderSection', () => { const siemHeaderSection = wrapper.find('.siemHeaderSection').first(); expect(siemHeaderSection).not.toHaveStyleRule('border-bottom', euiDarkVars.euiBorderThin); - expect(siemHeaderSection).not.toHaveStyleRule('padding-bottom', euiDarkVars.paddingSizes.l); + expect(siemHeaderSection).not.toHaveStyleRule('padding-bottom', euiDarkVars.euiSizeL); }); test('it splits the title and supplement areas evenly when split is true', () => { diff --git a/x-pack/plugins/security_solution/public/common/components/header_section/index.tsx b/x-pack/plugins/security_solution/public/common/components/header_section/index.tsx index ae9006301c084..8fe8439804e26 100644 --- a/x-pack/plugins/security_solution/public/common/components/header_section/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/header_section/index.tsx @@ -51,7 +51,7 @@ const Header = styled.header` border && css` border-bottom: ${({ theme }) => theme.eui.euiBorderThin}; - padding-bottom: ${({ theme }) => theme.eui.paddingSizes.l}; + padding-bottom: ${({ theme }) => theme.eui.euiSizeL}; `} `; Header.displayName = 'Header'; diff --git a/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx b/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx index 731b4bb85ba42..d61418c95b1ed 100644 --- a/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/hover_actions/index.tsx @@ -82,7 +82,7 @@ const StyledHoverActionsContainer = styled.div<{ const StyledHoverActionsContainerWithPaddingsAndMinWidth = styled(StyledHoverActionsContainer)` min-width: ${({ $hideTopN }) => `${$hideTopN ? '112px' : '138px'}`}; - padding: ${(props) => `0 ${props.theme.eui.paddingSizes.s}`}; + padding: ${(props) => `0 ${props.theme.eui.euiSizeS}`}; position: relative; `; diff --git a/x-pack/plugins/security_solution/public/common/components/loader/index.tsx b/x-pack/plugins/security_solution/public/common/components/loader/index.tsx index ac8c253098027..1e2ebcacff862 100644 --- a/x-pack/plugins/security_solution/public/common/components/loader/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/loader/index.tsx @@ -18,7 +18,7 @@ import React from 'react'; import styled, { css } from 'styled-components'; const Aside = styled.aside<{ overlay?: boolean; overlayBackground?: string }>` - padding: ${({ theme }) => theme.eui.paddingSizes.m}; + padding: ${({ theme }) => theme.eui.euiSizeM}; ${({ overlay, overlayBackground, theme }) => overlay && diff --git a/x-pack/plugins/security_solution/public/common/components/paginated_table/index.test.tsx b/x-pack/plugins/security_solution/public/common/components/paginated_table/index.test.tsx index 2ca85d4a3ccb9..0ba5e1569993a 100644 --- a/x-pack/plugins/security_solution/public/common/components/paginated_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/components/paginated_table/index.test.tsx @@ -31,9 +31,7 @@ const mockTheme = getMockTheme({ euiBreakpoints: { s: '450px', }, - paddingSizes: { - m: '10px', - }, + euiSizeM: '10px', }, }); diff --git a/x-pack/plugins/security_solution/public/common/components/risk_score_over_time/index.tsx b/x-pack/plugins/security_solution/public/common/components/risk_score_over_time/index.tsx index a7a2dc676abc5..460da806f5433 100644 --- a/x-pack/plugins/security_solution/public/common/components/risk_score_over_time/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/risk_score_over_time/index.tsx @@ -46,7 +46,7 @@ const DEFAULT_CHART_HEIGHT = 250; const StyledEuiText = styled(EuiText)` font-size: 9px; font-weight: ${({ theme }) => theme.eui.euiFontWeightSemiBold}; - margin-right: ${({ theme }) => theme.eui.paddingSizes.xs}; + margin-right: ${({ theme }) => theme.eui.euiSizeXS}; `; const LoadingChart = styled(EuiLoadingChart)` diff --git a/x-pack/plugins/security_solution/public/common/components/severity/common/index.tsx b/x-pack/plugins/security_solution/public/common/components/severity/common/index.tsx index a8bc7c20f7fcb..1b89a91c1190e 100644 --- a/x-pack/plugins/security_solution/public/common/components/severity/common/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/severity/common/index.tsx @@ -26,8 +26,8 @@ export const RISK_SEVERITY_COLOUR: { [k in RiskSeverity]: string } = { const RiskBadge = styled.div<{ $severity: RiskSeverity; $hideBackgroundColor: boolean }>` ${({ theme, $severity, $hideBackgroundColor }) => css` width: fit-content; - padding-right: ${theme.eui.paddingSizes.s}; - padding-left: ${theme.eui.paddingSizes.xs}; + padding-right: ${theme.eui.euiSizeS}; + padding-left: ${theme.eui.euiSizeXS}; ${($severity === 'Critical' || $severity === 'High') && !$hideBackgroundColor && @@ -38,7 +38,7 @@ const RiskBadge = styled.div<{ $severity: RiskSeverity; $hideBackgroundColor: bo `} `; const TooltipContainer = styled.div` - padding: ${({ theme }) => theme.eui.paddingSizes.s}; + padding: ${({ theme }) => theme.eui.euiSizeS}; `; export const RiskScore: React.FC<{ severity: RiskSeverity; diff --git a/x-pack/plugins/security_solution/public/common/components/toasters/__snapshots__/modal_all_errors.test.tsx.snap b/x-pack/plugins/security_solution/public/common/components/toasters/__snapshots__/modal_all_errors.test.tsx.snap index ee1b371fb5178..a2be42a0289e1 100644 --- a/x-pack/plugins/security_solution/public/common/components/toasters/__snapshots__/modal_all_errors.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/common/components/toasters/__snapshots__/modal_all_errors.test.tsx.snap @@ -19,23 +19,17 @@ exports[`Modal all errors rendering it renders the default all errors modal when - Error 1, Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - + { const siemUtilityBar = wrapper.find('.siemUtilityBar').first(); expect(siemUtilityBar).toHaveStyleRule('border-bottom', euiDarkVars.euiBorderThin); - expect(siemUtilityBar).toHaveStyleRule('padding-bottom', euiDarkVars.paddingSizes.s); + expect(siemUtilityBar).toHaveStyleRule('padding-bottom', euiDarkVars.euiSizeS); }); test('it DOES NOT apply border styles when border is false', () => { @@ -122,6 +122,6 @@ describe('UtilityBar', () => { const siemUtilityBar = wrapper.find('.siemUtilityBar').first(); expect(siemUtilityBar).not.toHaveStyleRule('border-bottom', euiDarkVars.euiBorderThin); - expect(siemUtilityBar).not.toHaveStyleRule('padding-bottom', euiDarkVars.paddingSizes.s); + expect(siemUtilityBar).not.toHaveStyleRule('padding-bottom', euiDarkVars.euiSizeS); }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/index.tsx b/x-pack/plugins/security_solution/public/common/components/visualization_actions/index.tsx index e22865c18bd99..420c2e3dd6c78 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/index.tsx @@ -33,7 +33,7 @@ const Wrapper = styled.div` z-index: 1; } &.histogram-viz-actions { - padding: ${({ theme }) => theme.eui.paddingSizes.s}; + padding: ${({ theme }) => theme.eui.euiSizeS}; } `; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/index.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/index.tsx index cba6a3f47f3fc..a2c9ddc27fbb6 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_utility_bar/index.tsx @@ -51,7 +51,7 @@ const UtilityBarFlexGroup = styled(EuiFlexGroup)` `; const AdditionalFiltersItem = styled(EuiFlexItem)` - padding: ${({ theme }) => theme.eui.paddingSizes.s}; + padding: ${({ theme }) => theme.eui.euiSizeS}; `; const BuildingBlockContainer = styled(AdditionalFiltersItem)` diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx index 394b1712df401..610bfd475c2b0 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/description_step/helpers.tsx @@ -167,7 +167,7 @@ const ThreatEuiFlexGroup = styled(EuiFlexGroup)` `; const SubtechniqueFlexItem = styled(EuiFlexItem)` - margin-left: ${({ theme }) => theme.eui.paddingSizes.m}; + margin-left: ${({ theme }) => theme.eui.euiSizeM}; `; const TechniqueLinkItem = styled(EuiButtonEmpty)` diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_table_control_columns.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_table_control_columns.tsx index a110ceb8edaf6..2efc3256e9ce9 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_table_control_columns.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/rule_preview/preview_table_control_columns.tsx @@ -18,7 +18,7 @@ const EventsTdContent = styled.div.attrs(({ className }) => ({ font-size: ${({ theme }) => theme.eui.euiFontSizeXS}; line-height: ${({ theme }) => theme.eui.euiLineHeight}; min-width: 0; - padding: ${({ theme }) => theme.eui.paddingSizes.xs}; + padding: ${({ theme }) => theme.eui.euiSizeXS}; text-align: ${({ textAlign }) => textAlign}; width: ${({ width }) => width != null @@ -26,7 +26,7 @@ const EventsTdContent = styled.div.attrs(({ className }) => ({ : '100%'}; /* Using width: 100% instead of flex: 1 and max-width: 100% for IE11 */ button.euiButtonIcon { - margin-left: ${({ theme }) => `-${theme.eui.paddingSizes.xs}`}; + margin-left: ${({ theme }) => `-${theme.eui.euiSizeXS}`}; } `; diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/step_about_rule_details/index.test.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/step_about_rule_details/index.test.tsx index 8164c5099db4a..04111924c6e4e 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/step_about_rule_details/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/step_about_rule_details/index.test.tsx @@ -20,7 +20,7 @@ import { getMockTheme } from '../../../../common/lib/kibana/kibana_react.mock'; jest.mock('../../../../common/lib/kibana'); const mockTheme = getMockTheme({ - eui: { euiSizeL: '10px', euiBreakpoints: { s: '450px' }, paddingSizes: { m: '10px' } }, + eui: { euiSizeL: '10px', euiBreakpoints: { s: '450px' }, euiSizeM: '10px' }, }); describe('StepAboutRuleToggleDetails', () => { diff --git a/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx b/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx index 40d76b43b5c0f..746550fe204cd 100644 --- a/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/rules/step_define_rule/index.tsx @@ -85,7 +85,7 @@ const StyledButtonGroup = styled(EuiButtonGroup)` display: flex; justify-content: right; .euiButtonGroupButton { - padding-right: ${(props) => props.theme.eui.paddingSizes.l}; + padding-right: ${(props) => props.theme.eui.euiSizeL}; } `; diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/utility_bar.test.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/utility_bar.test.tsx index 13a56a04fa71c..dbe26402e677a 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/utility_bar.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/all/utility_bar.test.tsx @@ -14,7 +14,7 @@ import { AllRulesUtilityBar } from './utility_bar'; import { getMockTheme } from '../../../../../common/lib/kibana/kibana_react.mock'; const mockTheme = getMockTheme({ - eui: { euiBreakpoints: { l: '1200px' }, paddingSizes: { m: '10px' } }, + eui: { euiBreakpoints: { l: '1200px' }, euiSizeM: '10px' }, }); describe('AllRules', () => { diff --git a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/index.tsx b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/index.tsx index a6ff44f6d6f2a..ccf536bcf6ae1 100644 --- a/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/index.tsx +++ b/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/create/index.tsx @@ -100,9 +100,13 @@ const CreateRulePageComponent: React.FC = () => { const [activeStep, setActiveStep] = useState(RuleStep.defineRule); const getNextStep = (step: RuleStep): RuleStep | undefined => ruleStepsOrder[ruleStepsOrder.indexOf(step) + 1]; + // @ts-expect-error EUI team to resolve: https://github.com/elastic/eui/issues/5985 const defineRuleRef = useRef(null); + // @ts-expect-error EUI team to resolve: https://github.com/elastic/eui/issues/5985 const aboutRuleRef = useRef(null); + // @ts-expect-error EUI team to resolve: https://github.com/elastic/eui/issues/5985 const scheduleRuleRef = useRef(null); + // @ts-expect-error EUI team to resolve: https://github.com/elastic/eui/issues/5985 const ruleActionsRef = useRef(null); const formHooks = useRef({ [RuleStep.defineRule]: formHookNoop, diff --git a/x-pack/plugins/security_solution/public/hosts/components/first_last_seen_host/index.test.tsx b/x-pack/plugins/security_solution/public/hosts/components/first_last_seen_host/index.test.tsx index 7c1704319f429..d598406be2594 100644 --- a/x-pack/plugins/security_solution/public/hosts/components/first_last_seen_host/index.test.tsx +++ b/x-pack/plugins/security_solution/public/hosts/components/first_last_seen_host/index.test.tsx @@ -66,7 +66,7 @@ describe('FirstLastSeen Component', () => { await waitFor(() => { expect(getByTestId('test-render-output').innerHTML).toBe( - `
${firstSeen}
` + `
${firstSeen}
` ); }); }); @@ -83,7 +83,7 @@ describe('FirstLastSeen Component', () => { ); await waitFor(() => { expect(getByTestId('test-render-output').innerHTML).toBe( - `
${lastSeen}
` + `
${lastSeen}
` ); }); }); @@ -107,7 +107,7 @@ describe('FirstLastSeen Component', () => { await waitFor(() => { expect(getByTestId('test-render-output').innerHTML).toBe( - `
${lastSeen}
` + `
${lastSeen}
` ); }); }); @@ -131,7 +131,7 @@ describe('FirstLastSeen Component', () => { await waitFor(() => { expect(getByTestId('test-render-output').innerHTML).toBe( - `
${firstSeen}
` + `
${firstSeen}
` ); }); }); diff --git a/x-pack/plugins/security_solution/public/hosts/pages/navigation/host_risk_tab_body.tsx b/x-pack/plugins/security_solution/public/hosts/pages/navigation/host_risk_tab_body.tsx index 7dd76071056e1..b1a341ed1db96 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/navigation/host_risk_tab_body.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/navigation/host_risk_tab_body.tsx @@ -22,7 +22,7 @@ import { useDashboardButtonHref } from '../../../common/hooks/use_dashboard_butt import { RISKY_HOSTS_DASHBOARD_TITLE } from './constants'; const StyledEuiFlexGroup = styled(EuiFlexGroup)` - margin-top: ${({ theme }) => theme.eui.paddingSizes.l}; + margin-top: ${({ theme }) => theme.eui.euiSizeL}; `; const QUERY_ID = HostRiskScoreQueryId.HOST_DETAILS_RISK_SCORE; diff --git a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.tsx b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.tsx index 1515c9e03f33b..1326c071bd791 100644 --- a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.tsx +++ b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_icons.tsx @@ -29,8 +29,8 @@ const Description = styled(EuiFlexItem)` `; const StyledEuiTitle = styled(EuiTitle)` - margin-top: ${({ theme }) => theme.eui.paddingSizes.m}; - margin-bottom: ${({ theme }) => theme.eui.paddingSizes.xs}; + margin-top: ${({ theme }) => theme.eui.euiSizeM}; + margin-bottom: ${({ theme }) => theme.eui.euiSizeXS}; `; export const LandingLinksIcons: React.FC = ({ items }) => ( diff --git a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx index 4cf8db26bbe7a..cf6fd8dc481a4 100644 --- a/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx +++ b/x-pack/plugins/security_solution/public/landing_pages/components/landing_links_images.tsx @@ -19,7 +19,7 @@ const PrimaryEuiTitle = styled(EuiTitle)` `; const LandingLinksDescripton = styled(EuiText)` - padding-top: ${({ theme }) => theme.eui.paddingSizes.xs}; + padding-top: ${({ theme }) => theme.eui.euiSizeXS}; max-width: 550px; `; @@ -34,7 +34,7 @@ const StyledFlexItem = styled(EuiFlexItem)` const SecuritySolutionLink = withSecuritySolutionLink(Link); const Content = styled(EuiFlexItem)` - padding-left: ${({ theme }) => theme.eui.paddingSizes.s}; + padding-left: ${({ theme }) => theme.eui.euiSizeS}; `; export const LandingLinksImages: React.FC = ({ items }) => ( diff --git a/x-pack/plugins/security_solution/public/landing_pages/pages/manage.tsx b/x-pack/plugins/security_solution/public/landing_pages/pages/manage.tsx index 06bd0c6258b57..33526e0122fc3 100644 --- a/x-pack/plugins/security_solution/public/landing_pages/pages/manage.tsx +++ b/x-pack/plugins/security_solution/public/landing_pages/pages/manage.tsx @@ -26,8 +26,8 @@ export const ManageLandingPage = () => ( ); const StyledEuiHorizontalRule = styled(EuiHorizontalRule)` - margin-top: ${({ theme }) => theme.eui.paddingSizes.m}; - margin-bottom: ${({ theme }) => theme.eui.paddingSizes.l}; + margin-top: ${({ theme }) => theme.eui.euiSizeM}; + margin-bottom: ${({ theme }) => theme.eui.euiSizeL}; `; type ManagementCategories = Array<{ label: string; links: NavLinkItem[] }>; diff --git a/x-pack/plugins/security_solution/public/management/components/artifact_card_grid/components/grid_header.tsx b/x-pack/plugins/security_solution/public/management/components/artifact_card_grid/components/grid_header.tsx index b25c3c3d6c2c9..a87a76e725a9f 100644 --- a/x-pack/plugins/security_solution/public/management/components/artifact_card_grid/components/grid_header.tsx +++ b/x-pack/plugins/security_solution/public/management/components/artifact_card_grid/components/grid_header.tsx @@ -15,7 +15,7 @@ import { useTestIdGenerator } from '../../../hooks/use_test_id_generator'; const GridHeaderContainer = styled(CardSectionPanel)` padding-top: 0; - padding-bottom: ${({ theme }) => theme.eui.paddingSizes.s}; + padding-bottom: ${({ theme }) => theme.eui.euiSizeS}; `; export type GridHeaderProps = Pick & { diff --git a/x-pack/plugins/security_solution/public/management/components/back_to_external_app_button/back_to_external_app_button.tsx b/x-pack/plugins/security_solution/public/management/components/back_to_external_app_button/back_to_external_app_button.tsx index 34bd3634890c3..1fd6f86851eda 100644 --- a/x-pack/plugins/security_solution/public/management/components/back_to_external_app_button/back_to_external_app_button.tsx +++ b/x-pack/plugins/security_solution/public/management/components/back_to_external_app_button/back_to_external_app_button.tsx @@ -15,7 +15,7 @@ import { ListPageRouteState } from '../../../../common/endpoint/types'; import { useNavigateToAppEventHandler } from '../../../common/hooks/endpoint/use_navigate_to_app_event_handler'; const EuiButtonEmptyStyled = styled(EuiButtonEmpty)` - margin-bottom: ${({ theme }) => theme.eui.paddingSizes.s}; + margin-bottom: ${({ theme }) => theme.eui.euiSizeS}; .euiIcon { width: ${({ theme }) => theme.eui.euiIconSizes.small}; @@ -24,7 +24,7 @@ const EuiButtonEmptyStyled = styled(EuiButtonEmpty)` .text { font-size: ${({ theme }) => theme.eui.euiFontSizeXS}; - margin-inline-start: ${({ theme }) => theme.eui.paddingSizes.xs}; + margin-inline-start: ${({ theme }) => theme.eui.euiSizeXS}; } `; diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx index 2a54cfe9c155e..cb561d69468fc 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/command_input/command_input.tsx @@ -17,7 +17,7 @@ import { useDataTestSubj } from '../../hooks/state_selectors/use_data_test_subj' const CommandInputContainer = styled.div` background-color: ${({ theme: { eui } }) => eui.euiColorGhost}; border-radius: ${({ theme: { eui } }) => eui.euiBorderRadius}; - padding: ${({ theme: { eui } }) => eui.paddingSizes.s}; + padding: ${({ theme: { eui } }) => eui.euiSizeS}; .prompt { padding-right: 1ch; @@ -31,7 +31,7 @@ const CommandInputContainer = styled.div` display: inline-block; width: 0.5em; height: 1em; - background-color: ${({ theme }) => theme.eui.euiTextColors.default}; + background-color: ${({ theme }) => theme.eui.euiTextColor}; animation: cursor-blink-animation 1s steps(5, start) infinite; -webkit-animation: cursor-blink-animation 1s steps(5, start) infinite; diff --git a/x-pack/plugins/security_solution/public/management/components/console/components/history_item.tsx b/x-pack/plugins/security_solution/public/management/components/console/components/history_item.tsx index 2cc5ae405d56d..001ac7793a594 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/components/history_item.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/components/history_item.tsx @@ -14,7 +14,7 @@ import { useDataTestSubj } from '../hooks/state_selectors/use_data_test_subj'; const StyledEuiFlexItemHistoryItem = styled(EuiFlexItem)` border-bottom: ${({ theme: { eui } }) => eui.euiBorderWidthThin} dashed ${({ theme: { eui } }) => eui.euiBorderColor}; - padding: ${({ theme: { eui } }) => eui.paddingSizes.xl} 0; + padding: ${({ theme: { eui } }) => eui.euiSizeXL} 0; `; export type HistoryItemProps = PropsWithChildren<{}>; diff --git a/x-pack/plugins/security_solution/public/management/components/console/console.tsx b/x-pack/plugins/security_solution/public/management/components/console/console.tsx index 3306870fea948..c7db0ce797ec9 100644 --- a/x-pack/plugins/security_solution/public/management/components/console/console.tsx +++ b/x-pack/plugins/security_solution/public/management/components/console/console.tsx @@ -30,14 +30,13 @@ const ConsoleWindow = styled.div` } &-bottomBorder { - border-bottom: ${({ theme: { eui } }) => eui.paddingSizes.s} solid + border-bottom: ${({ theme: { eui } }) => eui.euiSizeS} solid ${({ theme: { eui } }) => eui.euiPageBackgroundColor}; } &-container { - padding: ${({ theme: { eui } }) => eui.paddingSizes.l} - ${({ theme: { eui } }) => eui.paddingSizes.l} ${({ theme: { eui } }) => eui.paddingSizes.s} - ${({ theme: { eui } }) => eui.paddingSizes.l}; + padding: ${({ theme: { eui } }) => eui.euiSizeL} ${({ theme: { eui } }) => eui.euiSizeL} + ${({ theme: { eui } }) => eui.euiSizeS} ${({ theme: { eui } }) => eui.euiSizeL}; } &-header { @@ -47,7 +46,7 @@ const ConsoleWindow = styled.div` &-rightPanel { width: 35%; background-color: ${({ theme: { eui } }) => eui.euiColorGhost}; - border-bottom: ${({ theme: { eui } }) => eui.paddingSizes.s} solid + border-bottom: ${({ theme: { eui } }) => eui.euiSizeS} solid ${({ theme: { eui } }) => eui.euiPageBackgroundColor}; } @@ -61,7 +60,7 @@ const ConsoleWindow = styled.div` } &-commandInput { - padding-top: ${({ theme: { eui } }) => eui.paddingSizes.xs}; + padding-top: ${({ theme: { eui } }) => eui.euiSizeXS}; } } diff --git a/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx b/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx index e33c7ba467ff5..72ed2449b87e1 100644 --- a/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx +++ b/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx @@ -56,7 +56,7 @@ const StyledButtonGroup = styled(EuiButtonGroup)` display: flex; justify-content: right; .euiButtonGroupButton { - padding-right: ${(props) => props.theme.eui.paddingSizes.l}; + padding-right: ${(props) => props.theme.eui.euiSizeL}; } `; diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_agent_and_isolation_status/endpoint_agent_and_isolation_status.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_agent_and_isolation_status/endpoint_agent_and_isolation_status.tsx index f75b673943b2b..2170456ee57de 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_agent_and_isolation_status/endpoint_agent_and_isolation_status.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_agent_and_isolation_status/endpoint_agent_and_isolation_status.tsx @@ -18,7 +18,7 @@ import { const EuiFlexGroupStyled = styled(EuiFlexGroup)` .isolation-status { - margin-left: ${({ theme }) => theme.eui.paddingSizes.s}; + margin-left: ${({ theme }) => theme.eui.euiSizeS}; } `; diff --git a/x-pack/plugins/security_solution/public/management/components/page_overlay/page_overlay.tsx b/x-pack/plugins/security_solution/public/management/components/page_overlay/page_overlay.tsx index 44fe1a6ce410b..b765bd2630125 100644 --- a/x-pack/plugins/security_solution/public/management/components/page_overlay/page_overlay.tsx +++ b/x-pack/plugins/security_solution/public/management/components/page_overlay/page_overlay.tsx @@ -55,19 +55,19 @@ const OverlayRootContainer = styled.div` } &.padding-xs { - padding: ${({ theme: { eui } }) => eui.paddingSizes.xs}; + padding: ${({ theme: { eui } }) => eui.euiSizeXS}; } &.padding-s { - padding: ${({ theme: { eui } }) => eui.paddingSizes.s}; + padding: ${({ theme: { eui } }) => eui.euiSizeS}; } &.padding-m { - padding: ${({ theme: { eui } }) => eui.paddingSizes.m}; + padding: ${({ theme: { eui } }) => eui.euiSizeM}; } &.padding-l { - padding: ${({ theme: { eui } }) => eui.paddingSizes.l}; + padding: ${({ theme: { eui } }) => eui.euiSizeL}; } &.padding-xl { - padding: ${({ theme: { eui } }) => eui.paddingSizes.xl}; + padding: ${({ theme: { eui } }) => eui.euiSizeXL}; } .fullHeight { diff --git a/x-pack/plugins/security_solution/public/management/components/paginated_content/paginated_content.tsx b/x-pack/plugins/security_solution/public/management/components/paginated_content/paginated_content.tsx index 6afdd339e52b9..b194a29c4292f 100644 --- a/x-pack/plugins/security_solution/public/management/components/paginated_content/paginated_content.tsx +++ b/x-pack/plugins/security_solution/public/management/components/paginated_content/paginated_content.tsx @@ -82,7 +82,7 @@ interface TypedGenericComponentMemo { const RootContainer = styled.div` position: relative; - padding-top: ${({ theme }) => theme.eui.paddingSizes.xs}; + padding-top: ${({ theme }) => theme.eui.euiSizeXS}; .body { min-height: ${({ theme }) => theme.eui.gutterTypes.gutterExtraLarge}; diff --git a/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response.tsx b/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response.tsx index 027e8e541d89b..03b6fd36b318f 100644 --- a/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response.tsx +++ b/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response.tsx @@ -39,8 +39,8 @@ const StyledEuiTreeView = styled(EuiTreeView)` .euiTreeView__node { // When response action item displays a callout, this needs to be overwritten to remove the default max height of EuiTreeView max-height: none !important; - padding-top: ${({ theme }) => theme.eui.paddingSizes.s}; - padding-bottom: ${({ theme }) => theme.eui.paddingSizes.s}; + padding-top: ${({ theme }) => theme.eui.euiSizeS}; + padding-bottom: ${({ theme }) => theme.eui.euiSizeS}; } } } diff --git a/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_action_item.tsx b/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_action_item.tsx index 65529f96fff2c..9be8a080df731 100644 --- a/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_action_item.tsx +++ b/x-pack/plugins/security_solution/public/management/components/policy_response/policy_response_action_item.tsx @@ -11,7 +11,7 @@ import { EuiLink, EuiCallOut, EuiText } from '@elastic/eui'; import { PolicyResponseActionFormatter } from './policy_response_friendly_names'; const StyledEuiCallout = styled(EuiCallOut)` - padding: ${({ theme }) => theme.eui.paddingSizes.s}; + padding: ${({ theme }) => theme.eui.euiSizeS}; .action-message { white-space: break-spaces; text-align: left; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/endpoint_agent_status.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/endpoint_agent_status.tsx index d422fb736965a..095382ace780e 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/endpoint_agent_status.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/components/endpoint_agent_status.tsx @@ -16,7 +16,7 @@ import { AgentStatus } from '../../../../../common/components/endpoint/agent_sta const EuiFlexGroupStyled = styled(EuiFlexGroup)` .isolation-status { - margin-left: ${({ theme }) => theme.eui.paddingSizes.s}; + margin-left: ${({ theme }) => theme.eui.euiSizeS}; } `; diff --git a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/activity_log_date_range_picker/index.tsx b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/activity_log_date_range_picker/index.tsx index 423f6188c1b8c..47304fe5b28d8 100644 --- a/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/activity_log_date_range_picker/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/view/details/components/activity_log_date_range_picker/index.tsx @@ -38,7 +38,7 @@ const StickyFlexItem = styled(EuiFlexItem)` position: sticky; top: 0; z-index: 1; - padding: ${(props) => `${props.theme.eui.paddingSizes.m}`}; + padding: ${(props) => `${props.theme.eui.euiSizeM}`}; `; export const DateRangePicker = memo(() => { diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/components/events_form/index.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/components/events_form/index.tsx index 77debc1c866b6..e64f480fd175d 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/components/events_form/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/components/events_form/index.tsx @@ -119,7 +119,7 @@ const InnerEventsForm = ({ {supplementalOptions && supplementalOptions.map(({ name, protectionField, tooltipText, beta }) => { return ( -
+
diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/exception_items_summary.test.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/exception_items_summary.test.tsx index c98def71f8a59..4a4364f8d7d03 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/exception_items_summary.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/exception_items_summary.test.tsx @@ -15,7 +15,7 @@ import { GetExceptionSummaryResponse } from '../../../../../../../../common/endp const mockTheme = getMockTheme({ eui: { - paddingSizes: { m: '2' }, + euiSizeM: '2', }, }); diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/link_with_icon.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/link_with_icon.tsx index 6aebb130eb896..0da81029c2517 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/link_with_icon.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/ingest_manager_integration/endpoint_package_custom_extension/components/link_with_icon.tsx @@ -17,7 +17,7 @@ const LinkLabel = styled.span<{ size?: 'm' | 'l'; }>` display: inline-block; - padding-right: ${(props) => props.theme.eui.paddingSizes.s}; + padding-right: ${(props) => props.theme.eui.euiSizeS}; font-size: ${({ size, theme }) => (size === 'm' ? theme.eui.euiFontSizeXS : 'innherit')}; `; diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/vertical_divider.ts b/x-pack/plugins/security_solution/public/management/pages/policy/view/vertical_divider.ts index 166f4472bb7b2..b1b26737e9eab 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/vertical_divider.ts +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/vertical_divider.ts @@ -6,9 +6,8 @@ */ import styled from 'styled-components'; -import { EuiTheme } from '@kbn/kibana-react-plugin/common'; -type SpacingOptions = keyof EuiTheme['eui']['paddingSizes']; +type SpacingOptions = 'xs' | 's' | 'm' | 'l' | 'xl'; /** * A vertical divider - show a vertical line that spans 100% of the height of its parent container. @@ -20,9 +19,13 @@ type SpacingOptions = keyof EuiTheme['eui']['paddingSizes']; export const VerticalDivider = styled.div<{ spacing?: SpacingOptions }>` width: 0; height: 100%; - border-left: ${(props) => { - return props.theme.eui.euiBorderThin; + border-left: ${(props) => props.theme.eui.euiBorderThin}; + margin-left: ${(props) => { + const size = props?.spacing && `euiSize${props.spacing.toUpperCase()}`; + return size ? props.theme.eui[size] : 0; + }}; + margin-right: ${(props) => { + const size = props?.spacing && `euiSize${props.spacing.toUpperCase()}`; + return size ? props.theme.eui[size] : 0; }}; - margin-left: ${(props) => props.theme.eui.paddingSizes[props?.spacing ?? 'none'] || 0}; - margin-right: ${(props) => props.theme.eui.paddingSizes[props?.spacing ?? 'none'] || 0}; `; diff --git a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_group/index.tsx b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_group/index.tsx index a9785e7dab9b6..7cf9d74592a29 100644 --- a/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_group/index.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/trusted_apps/view/components/condition_group/index.tsx @@ -22,15 +22,15 @@ const ConditionGroupFlexGroup = styled(EuiFlexGroup)` .and-badge { padding-top: 20px; padding-bottom: ${({ theme }) => { - return `calc(${theme.eui.euiButtonHeightSmall} + (${theme.eui.paddingSizes.s} * 2) + 3px);`; + return `calc(${theme.eui.euiButtonHeightSmall} + (${theme.eui.euiSizeS} * 2) + 3px);`; }}; } .group-entries { - margin-bottom: ${({ theme }) => theme.eui.paddingSizes.s}; + margin-bottom: ${({ theme }) => theme.eui.euiSizeS}; & > * { - margin-bottom: ${({ theme }) => theme.eui.paddingSizes.s}; + margin-bottom: ${({ theme }) => theme.eui.euiSizeS}; &:last-child { margin-bottom: 0; diff --git a/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.test.tsx b/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.test.tsx index 2166d6b495e75..1bd46f848f3ae 100644 --- a/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.test.tsx +++ b/x-pack/plugins/security_solution/public/network/components/embeddables/embedded_map.test.tsx @@ -199,7 +199,7 @@ describe('EmbeddedMapComponent', () => { expect(wrapper.find('[data-test-subj="siemEmbeddable"]').first().exists()).toEqual(false); - const container = wrapper.find('[data-test-subj="false-toggle-network-map"]').at(0); + const container = wrapper.find('[data-test-subj="false-toggle-network-map"]').last(); container.simulate('click'); await waitFor(() => { @@ -217,7 +217,7 @@ describe('EmbeddedMapComponent', () => { ); expect(wrapper.find('[data-test-subj="siemEmbeddable"]').first().exists()).toEqual(true); - const container = wrapper.find('[data-test-subj="true-toggle-network-map"]').at(0); + const container = wrapper.find('[data-test-subj="true-toggle-network-map"]').last(); container.simulate('click'); await waitFor(() => { diff --git a/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx b/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx index b0b1e99e4257b..a5d90fdb5fad8 100644 --- a/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx @@ -39,7 +39,7 @@ const DEFAULT_STACK_BY = 'event.module'; const StyledLinkButton = styled(EuiButton)` margin-left: 0; @media only screen and (min-width: ${(props) => props.theme.eui.euiBreakpoints.m}) { - margin-left: ${({ theme }) => theme.eui.paddingSizes.l}; + margin-left: ${({ theme }) => theme.eui.euiSizeL}; } `; interface Props extends Pick { diff --git a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/chart_label.tsx b/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/chart_label.tsx index ad609102409d2..684c1db54670c 100644 --- a/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/chart_label.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/detection_response/alerts_by_status/chart_label.tsx @@ -13,7 +13,7 @@ interface ChartLabelProps { } const PlaceHolder = styled.div` - padding: ${(props) => props.theme.eui.paddingSizes.s}; + padding: ${(props) => props.theme.eui.euiSizeS}; `; const ChartLabelComponent: React.FC = ({ count }) => { diff --git a/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx b/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx index 1e929e222a02a..b9f00ea2e65a2 100644 --- a/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/events_by_dataset/index.tsx @@ -68,7 +68,7 @@ const getHistogramOption = (fieldName: string): MatrixHistogramOption => ({ const StyledLinkButton = styled(EuiButton)` margin-left: 0; @media only screen and (min-width: ${(props) => props.theme.eui.euiBreakpoints.m}) { - margin-left: ${({ theme }) => theme.eui.paddingSizes.l}; + margin-left: ${({ theme }) => theme.eui.euiSizeL}; } `; diff --git a/x-pack/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.tsx b/x-pack/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.tsx index 07ecce00a1c57..bfa8860188d8e 100644 --- a/x-pack/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.tsx +++ b/x-pack/plugins/security_solution/public/overview/components/link_panel/inner_link_panel.tsx @@ -10,24 +10,24 @@ import styled from 'styled-components'; import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiSplitPanel, EuiText } from '@elastic/eui'; const ButtonContainer = styled(EuiFlexGroup)` - padding: ${({ theme }) => theme.eui.paddingSizes.s}; + padding: ${({ theme }) => theme.eui.euiSizeS}; `; const Icon = styled(EuiIcon)` padding: 0; - margin-top: ${({ theme }) => theme.eui.paddingSizes.m}; + margin-top: ${({ theme }) => theme.eui.euiSizeM}; margin-left: 12px; transform: scale(${({ color }) => (color === 'primary' ? 1.4 : 1)}); `; const PanelContainer = styled(EuiSplitPanel.Inner)` - margin-bottom: ${({ theme }) => theme.eui.paddingSizes.m}; + margin-bottom: ${({ theme }) => theme.eui.euiSizeM}; `; const Title = styled(EuiText)<{ textcolor: 'primary' | 'warning' }>` color: ${({ theme, textcolor }) => textcolor === 'primary' ? theme.eui.euiColorPrimary : theme.eui.euiColorWarningText}; - margin-bottom: ${({ theme }) => theme.eui.paddingSizes.m}; + margin-bottom: ${({ theme }) => theme.eui.euiSizeM}; `; export const InnerLinkPanel = ({ diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/mock.ts b/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/mock.ts index c4cf876cbdc7d..f631084d880bf 100644 --- a/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/mock.ts +++ b/x-pack/plugins/security_solution/public/overview/components/overview_cti_links/mock.ts @@ -11,7 +11,8 @@ export const mockTheme = getMockTheme({ eui: { euiSizeL: '10px', euiBreakpoints: { s: '10px' }, - paddingSizes: { s: '10px', m: '10px', l: '10px' }, + euiSizeS: '10px', + euiSizeM: '10px', }, }); diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_host_stats/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/overview/components/overview_host_stats/__snapshots__/index.test.tsx.snap index 3fb85fd45a48d..fb34d6e2f66a4 100644 --- a/x-pack/plugins/security_solution/public/overview/components/overview_host_stats/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/overview/components/overview_host_stats/__snapshots__/index.test.tsx.snap @@ -7,8 +7,7 @@ exports[`Overview Host Stat Data rendering it renders the default OverviewHostSt - } buttonContentClassName="accordion-button" - buttonElement="button" - element="div" id="host-stat-accordion-groupauditbeat" - initialIsOpen={false} - isLoading={false} - isLoadingMessage={false} - paddingSize="none" > - + - } buttonContentClassName="accordion-button" - buttonElement="button" - element="div" id="host-stat-accordion-groupendgame" - initialIsOpen={false} - isLoading={false} - isLoadingMessage={false} - paddingSize="none" > - + - } buttonContentClassName="accordion-button" - buttonElement="button" - element="div" id="host-stat-accordion-groupfilebeat" - initialIsOpen={false} - isLoading={false} - isLoadingMessage={false} - paddingSize="none" > - + - } buttonContentClassName="accordion-button" - buttonElement="button" - element="div" id="host-stat-accordion-groupwinlogbeat" - initialIsOpen={false} - isLoading={false} - isLoadingMessage={false} - paddingSize="none" > - + `; diff --git a/x-pack/plugins/security_solution/public/overview/components/overview_network_stats/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/overview/components/overview_network_stats/__snapshots__/index.test.tsx.snap index 032b0592bbcb8..16755da7d787e 100644 --- a/x-pack/plugins/security_solution/public/overview/components/overview_network_stats/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/overview/components/overview_network_stats/__snapshots__/index.test.tsx.snap @@ -7,8 +7,7 @@ exports[`Overview Network Stat Data rendering it renders the default OverviewNet - } buttonContentClassName="accordion-button" - buttonElement="button" - element="div" id="network-stat-accordion-groupauditbeat" - initialIsOpen={false} - isLoading={false} - isLoadingMessage={false} - paddingSize="none" > - + - } buttonContentClassName="accordion-button" - buttonElement="button" - element="div" id="network-stat-accordion-groupfilebeat" - initialIsOpen={false} - isLoading={false} - isLoadingMessage={false} - paddingSize="none" > - + - } buttonContentClassName="accordion-button" - buttonElement="button" - element="div" id="network-stat-accordion-grouppacketbeat" - initialIsOpen={false} - isLoading={false} - isLoadingMessage={false} - paddingSize="none" > - + `; diff --git a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.tsx index 05bc3992791f6..0d839bed721bd 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/fields_browser/create_field_button/index.tsx @@ -14,7 +14,7 @@ import type { OpenFieldEditor } from '..'; import * as i18n from './translations'; const StyledButton = styled(EuiButton)` - margin-left: ${({ theme }) => theme.eui.paddingSizes.m}; + margin-left: ${({ theme }) => theme.eui.euiSizeM}; `; export interface UseCreateFieldButtonProps { diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.test.tsx index 07e494769a211..d754aeba9072b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline.test.tsx @@ -35,9 +35,7 @@ jest.mock('react-router-dom', () => { const mockTheme = getMockTheme({ eui: { euiSizeL: '10px', - paddingSizes: { - s: '10px', - }, + euiSizeS: '10px', euiBreakpoints: { l: '1200px', }, diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.test.tsx index ddf35eec86e04..7e00290c380db 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/open_timeline_modal/open_timeline_modal_body.test.tsx @@ -29,7 +29,7 @@ describe('OpenTimelineModal', () => { euiBreakpoints: { s: '500px', }, - paddingSizes: { m: '16px' }, + euiSizeM: '16px', }, }); const title = 'All Timelines / Open Timelines'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/title_row/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/title_row/index.test.tsx index 9e54d708db496..ed68bba3b59e3 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/open_timeline/title_row/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/open_timeline/title_row/index.test.tsx @@ -19,7 +19,7 @@ const mockTheme = getMockTheme({ euiLineHeight: 10, euiBreakpoints: { s: '10px' }, euiSize: '10px', - paddingSizes: { m: '16px' }, + euiSizeM: '16px', }, }); diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/__snapshots__/index.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/side_panel/__snapshots__/index.test.tsx.snap index 0874df6264a8f..b7323aa7559ca 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/__snapshots__/index.test.tsx.snap @@ -144,7 +144,7 @@ exports[`Details Panel Component DetailsPanel:EventDetails: rendering it should -ms-flex: 1; flex: 1; overflow: hidden; - padding: 0 16px 16px; + padding: 0 12px 12px; }
`0 ${theme.eui.paddingSizes.m} ${theme.eui.paddingSizes.m}`}; + padding: ${({ theme }) => `0 ${theme.eui.euiSizeM} ${theme.eui.euiSizeM}`}; } } `; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/__snapshots__/expandable_host.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/__snapshots__/expandable_host.test.tsx.snap index 1f4108c18134b..3cdad643a7656 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/__snapshots__/expandable_host.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/__snapshots__/expandable_host.test.tsx.snap @@ -65,7 +65,7 @@ exports[`Expandable Host Component ExpandableHostDetails: rendering it should re } .c4 { - padding: 16px; + padding: 12px; background: rgba(250,251,253,0.9); bottom: 0; left: 0; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/index.tsx index 0a06810bb1249..0af88fe094b0a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/host_details/index.tsx @@ -35,7 +35,7 @@ const StyledEuiFlyoutBody = styled(EuiFlyoutBody)` overflow-x: hidden; overflow-y: scroll; margin-bottom: 64px; // account for firefox, which doesn't seem to respect the bottom padding - padding: ${({ theme }) => `${theme.eui.paddingSizes.xs} ${theme.eui.paddingSizes.m} 0px`}; + padding: ${({ theme }) => `${theme.eui.euiSizeXS} ${theme.eui.euiSizeM} 0px`}; } } `; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/index.tsx index ec731416cab1b..96b9c62d6817f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/network_details/index.tsx @@ -36,7 +36,7 @@ const StyledEuiFlyoutBody = styled(EuiFlyoutBody)` flex: 1; overflow-x: hidden; overflow-y: scroll; - padding: ${({ theme }) => `${theme.eui.paddingSizes.xs} ${theme.eui.paddingSizes.m} 64px`}; + padding: ${({ theme }) => `${theme.eui.euiSizeXS} ${theme.eui.euiSizeM} 64px`}; } } `; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/user_details/user_details_flyout.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/user_details/user_details_flyout.tsx index 6fb8a9e892400..9ffbeabf6609f 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/side_panel/user_details/user_details_flyout.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/user_details/user_details_flyout.tsx @@ -26,7 +26,7 @@ const StyledEuiFlyoutBody = styled(EuiFlyoutBody)` flex: 1; overflow-x: hidden; overflow-y: scroll; - padding: ${({ theme }) => `${theme.eui.paddingSizes.xs} ${theme.eui.paddingSizes.m} 64px`}; + padding: ${({ theme }) => `${theme.eui.euiSizeXS} ${theme.eui.euiSizeM} 64px`}; } } `; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/header_actions.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/header_actions.tsx index 6d05e5304150e..87f16dbb7e519 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/header_actions.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/header_actions.tsx @@ -56,7 +56,7 @@ const SortingColumnsContainer = styled.div` const FieldBrowserContainer = styled.div` .euiToolTipAnchor { .euiButtonContent { - padding: ${({ theme }) => `0 ${theme.eui.paddingSizes.xs}`}; + padding: ${({ theme }) => `0 ${theme.eui.euiSizeXS}`}; } button { color: ${({ theme }) => theme.eui.euiColorPrimary}; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/helpers.ts b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/helpers.ts index 7e251ffa5e369..99dc241650bd4 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/helpers.ts +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/helpers.ts @@ -31,5 +31,5 @@ export const hasThreatMatchValue = (data: Ecs): boolean => ); export const HorizontalSpacer = styled.div` - margin: 0 ${({ theme }) => theme.eui.paddingSizes.xs}; + margin: 0 ${({ theme }) => theme.eui.euiSizeXS}; `; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx index cc4d3eeee2533..0b76c97a5c17e 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/renderers/cti/threat_match_rows.tsx @@ -18,7 +18,7 @@ import { RowRendererContainer } from '../row_renderer'; import { ThreatMatchRow } from './threat_match_row'; const SpacedContainer = styled.div` - margin: ${({ theme }) => theme.eui.paddingSizes.s} 0; + margin: ${({ theme }) => theme.eui.euiSizeS} 0; `; export const ThreatMatchRows: RowRenderer['renderRow'] = ({ data, isDraggable, timelineId }) => { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/empty.test.tsx.snap b/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/empty.test.tsx.snap index 006da47460012..e2c5534f5327a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/empty.test.tsx.snap +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/__snapshots__/empty.test.tsx.snap @@ -8,6 +8,7 @@ exports[`Empty rendering renders correctly against snapshot 1`] = ` > @@ -21,6 +22,7 @@ exports[`Empty rendering renders correctly against snapshot 1`] = ` @@ -30,6 +32,7 @@ exports[`Empty rendering renders correctly against snapshot 1`] = ` type="or" /> diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx index d5c5332b25053..3f6b1f629217a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/empty.tsx @@ -91,7 +91,7 @@ export const Empty = React.memo(({ showSmallMsg = false, browserFields, t {!showSmallMsg && ( <> - + {i18n.DROP_ANYTHING} @@ -99,11 +99,11 @@ export const Empty = React.memo(({ showSmallMsg = false, browserFields, t {i18n.HIGHLIGHTED} - + {i18n.HERE_TO_BUILD_AN} - + {i18n.QUERY} diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/index.tsx index 0a3a40d8f6f06..758ecafe64d86 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/data_providers/index.tsx @@ -35,7 +35,7 @@ const DropTargetDataProvidersContainer = styled.div` background: ${({ theme }) => rgba(theme.eui.euiColorSuccess, 0.1)}; border: 0.2rem dashed ${({ theme }) => theme.eui.euiColorSuccess}; - & .euiTextColor--subdued { + & .timeline-drop-area-empty__text { color: ${({ theme }) => theme.eui.euiColorSuccess}; } diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/eql_tab_content/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/eql_tab_content/index.tsx index c53871cf2e52b..c9dd9ce76d665 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/eql_tab_content/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/eql_tab_content/index.tsx @@ -130,7 +130,7 @@ const VerticalRule = styled.div` VerticalRule.displayName = 'VerticalRule'; const EventsCountBadge = styled(EuiBadge)` - margin-left: ${({ theme }) => theme.eui.paddingSizes.s}; + margin-left: ${({ theme }) => theme.eui.euiSizeS}; `; const isTimerangeSame = (prevProps: Props, nextProps: Props) => diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/index.tsx index 25b7f4a8b636a..771cb52ff1091 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/query_tab_content/index.tsx @@ -137,7 +137,7 @@ const VerticalRule = styled.div` VerticalRule.displayName = 'VerticalRule'; const EventsCountBadge = styled(EuiBadge)` - margin-left: ${({ theme }) => theme.eui.paddingSizes.s}; + margin-left: ${({ theme }) => theme.eui.euiSizeS}; `; const isTimerangeSame = (prevProps: Props, nextProps: Props) => diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.tsx index 23da1c6b74fd5..3e6aff9acca6b 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/search_or_filter/helpers.tsx @@ -61,7 +61,7 @@ export const options = [ {modes.filter.selectText} -

{modes.filter.description}

+

{modes.filter.description}

), @@ -81,7 +81,7 @@ export const options = [ {modes.search.selectText} -

{modes.search.description}

+

{modes.search.description}

), diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx index 66a21da80bd86..125803b4d1b30 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/styles.tsx @@ -195,7 +195,7 @@ export const EventsThContent = styled.div.attrs(({ className = '' }) => ({ font-weight: ${({ theme }) => theme.eui.euiFontWeightSemiBold}; line-height: ${({ theme }) => theme.eui.euiLineHeight}; min-width: 0; - padding: ${({ theme }) => theme.eui.paddingSizes.xs}; + padding: ${({ theme }) => theme.eui.euiSizeXS}; text-align: ${({ textAlign }) => textAlign}; width: ${({ width }) => width != null @@ -204,7 +204,7 @@ export const EventsThContent = styled.div.attrs(({ className = '' }) => ({ > button.euiButtonIcon, > .euiToolTipAnchor > button.euiButtonIcon { - margin-left: ${({ theme }) => `-${theme.eui.paddingSizes.xs}`}; + margin-left: ${({ theme }) => `-${theme.eui.euiSizeXS}`}; } `; @@ -296,12 +296,12 @@ export const EventsTrSupplement = styled.div.attrs(({ className = '' }) => ({ }))<{ className: string }>` font-size: ${({ theme }) => theme.eui.euiFontSizeXS}; line-height: ${({ theme }) => theme.eui.euiLineHeight}; - padding-left: ${({ theme }) => theme.eui.paddingSizes.m}; + padding-left: ${({ theme }) => theme.eui.euiSizeM}; .euiAccordion + div { background-color: ${({ theme }) => theme.eui.euiColorEmptyShade}; - padding: 0 ${({ theme }) => theme.eui.paddingSizes.s}; + padding: 0 ${({ theme }) => theme.eui.euiSizeS}; border: 1px solid ${({ theme }) => theme.eui.euiColorLightShade}; - border-radius: ${({ theme }) => theme.eui.paddingSizes.xs}; + border-radius: ${({ theme }) => theme.eui.euiSizeXS}; } `; @@ -362,7 +362,7 @@ export const EventsTdContent = styled.div.attrs(({ className }) => ({ font-size: ${({ theme }) => theme.eui.euiFontSizeXS}; line-height: ${({ theme }) => theme.eui.euiLineHeight}; min-width: 0; - padding: ${({ theme }) => theme.eui.paddingSizes.xs}; + padding: ${({ theme }) => theme.eui.euiSizeXS}; text-align: ${({ textAlign }) => textAlign}; width: ${({ width }) => width != null @@ -370,7 +370,7 @@ export const EventsTdContent = styled.div.attrs(({ className }) => ({ : '100%'}; /* Using width: 100% instead of flex: 1 and max-width: 100% for IE11 */ button.euiButtonIcon { - margin-left: ${({ theme }) => `-${theme.eui.paddingSizes.xs}`}; + margin-left: ${({ theme }) => `-${theme.eui.euiSizeXS}`}; } `; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx index b8b9d73932afd..2ca377c57ce33 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx @@ -214,7 +214,7 @@ const ActiveTimelineTab = memo( ActiveTimelineTab.displayName = 'ActiveTimelineTab'; const CountBadge = styled(EuiBadge)` - margin-left: ${({ theme }) => theme.eui.paddingSizes.s}; + margin-left: ${({ theme }) => theme.eui.euiSizeS}; `; const StyledEuiTab = styled(EuiTab)` diff --git a/x-pack/plugins/security_solution/public/users/pages/navigation/user_risk_tab_body.tsx b/x-pack/plugins/security_solution/public/users/pages/navigation/user_risk_tab_body.tsx index 1684297fd236d..cc0396d634b63 100644 --- a/x-pack/plugins/security_solution/public/users/pages/navigation/user_risk_tab_body.tsx +++ b/x-pack/plugins/security_solution/public/users/pages/navigation/user_risk_tab_body.tsx @@ -24,7 +24,7 @@ import { useDashboardButtonHref } from '../../../common/hooks/use_dashboard_butt const QUERY_ID = UserRiskScoreQueryId.USER_DETAILS_RISK_SCORE; const StyledEuiFlexGroup = styled(EuiFlexGroup)` - margin-top: ${({ theme }) => theme.eui.paddingSizes.l}; + margin-top: ${({ theme }) => theme.eui.euiSizeL}; `; const RISKY_USERS_DASHBOARD_TITLE = 'Current Risk Score For Users'; diff --git a/x-pack/plugins/session_view/public/components/detail_panel_copy/__snapshots__/index.test.tsx.snap b/x-pack/plugins/session_view/public/components/detail_panel_copy/__snapshots__/index.test.tsx.snap index ea9f03408af67..a9942e3fa968c 100644 --- a/x-pack/plugins/session_view/public/components/detail_panel_copy/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/session_view/public/components/detail_panel_copy/__snapshots__/index.test.tsx.snap @@ -6,7 +6,7 @@ Object { "baseElement":
, "container":
{ expect(renderResult.queryByText(TEST_NAME)).toBeVisible(); // expand host os accordion - renderResult.queryByText('Host OS')?.querySelector('button')?.click(); + renderResult.queryByText('Host OS')?.click(); expect(renderResult.queryByText('architecture')).toBeVisible(); expect(renderResult.queryByText('os.family')).toBeVisible(); expect(renderResult.queryByText('os.full')).toBeVisible(); @@ -158,7 +158,7 @@ describe('DetailPanelMetadataTab component', () => { expect(renderResult.queryAllByText('name').length).toBe(2); // expand host os accordion - renderResult.queryByText('Host OS')?.querySelector('button')?.click(); + renderResult.queryByText('Host OS')?.click(); expect(renderResult.queryByText('architecture')).toBeVisible(); expect(renderResult.queryByText('os.family')).toBeVisible(); expect(renderResult.queryByText('os.full')).toBeVisible(); @@ -175,7 +175,7 @@ describe('DetailPanelMetadataTab component', () => { expect(renderResult.queryByText(TEST_OS_VERSION)).toBeVisible(); // expand Container Accordion - renderResult.queryByText('Container')?.querySelector('button')?.click(); + renderResult.queryByText('Container')?.click(); expect(renderResult.queryByText('image.name')).toBeVisible(); expect(renderResult.queryByText('image.tag')).toBeVisible(); expect(renderResult.queryByText('image.hash.all')).toBeVisible(); @@ -186,7 +186,7 @@ describe('DetailPanelMetadataTab component', () => { expect(renderResult.queryByText(TEST_CONTAINER_IMAGE_HASH_ALL)).toBeVisible(); // expand Orchestrator Accordion - renderResult.queryByText('Orchestrator')?.querySelector('button')?.click(); + renderResult.queryByText('Orchestrator')?.click(); expect(renderResult.queryByText('resource.name')).toBeVisible(); expect(renderResult.queryByText('resource.type')).toBeVisible(); expect(renderResult.queryByText('resource.ip')).toBeVisible(); diff --git a/x-pack/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap b/x-pack/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap index 898da00b7852d..58fae57fefc29 100644 --- a/x-pack/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap +++ b/x-pack/plugins/session_view/public/components/process_tree_alert/__snapshots__/index.test.tsx.snap @@ -42,7 +42,7 @@ Object { class="euiFlexItem euiFlexItem--flexGrowZero" >
cmd test alert
@@ -127,7 +127,7 @@ Object { class="euiFlexItem euiFlexItem--flexGrowZero" >
cmd test alert
diff --git a/x-pack/plugins/session_view/public/components/session_view_search_bar/styles.ts b/x-pack/plugins/session_view/public/components/session_view_search_bar/styles.ts index 6e7c717e2816b..3585c49de75fb 100644 --- a/x-pack/plugins/session_view/public/components/session_view_search_bar/styles.ts +++ b/x-pack/plugins/session_view/public/components/session_view_search_bar/styles.ts @@ -31,7 +31,7 @@ export const useStyles = ({ hasSearchResults }: StylesDeps) => { const noResults: CSSObject = { position: 'absolute', - color: euiTheme.colors.subdued, + color: euiTheme.colors.subduedText, top: euiTheme.size.m, right: euiTheme.size.xxl, }; diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx index 51701df4d3689..ef9a592da4d64 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/space_result_details.tsx @@ -106,7 +106,7 @@ export const SpaceCopyResultDetails = (props: Props) => { {header} -

+

ID: {destination.id}
Last updated: {lastUpdated} diff --git a/x-pack/plugins/spaces/public/space_selector/components/space_card.tsx b/x-pack/plugins/spaces/public/space_selector/components/space_card.tsx index 5b1182c99029d..4c3767b738f90 100644 --- a/x-pack/plugins/spaces/public/space_selector/components/space_card.tsx +++ b/x-pack/plugins/spaces/public/space_selector/components/space_card.tsx @@ -7,7 +7,7 @@ import './space_card.scss'; -import { EuiCard, EuiLoadingSpinner } from '@elastic/eui'; +import { EuiCard, EuiLoadingSpinner, EuiTextColor } from '@elastic/eui'; import React, { lazy, Suspense } from 'react'; import type { Space } from '../../../common'; @@ -56,8 +56,8 @@ function renderSpaceDescription(space: Space) { } return ( - + {description} - + ); } diff --git a/x-pack/plugins/stack_alerts/public/alert_types/components/index_select_popover.test.tsx b/x-pack/plugins/stack_alerts/public/alert_types/components/index_select_popover.test.tsx index d36c0016ca8d8..b9f27d1255796 100644 --- a/x-pack/plugins/stack_alerts/public/alert_types/components/index_select_popover.test.tsx +++ b/x-pack/plugins/stack_alerts/public/alert_types/components/index_select_popover.test.tsx @@ -92,7 +92,7 @@ describe('IndexSelectPopover', () => { expect(wrapper.find('[data-test-subj="thresholdIndexesComboBox"]').exists()).toBeFalsy(); expect(wrapper.find('[data-test-subj="thresholdAlertTimeFieldSelect"]').exists()).toBeFalsy(); - wrapper.find('[data-test-subj="selectIndexExpression"]').first().simulate('click'); + wrapper.find('[data-test-subj="selectIndexExpression"]').last().simulate('click'); await act(async () => { await nextTick(); wrapper.update(); @@ -106,7 +106,7 @@ describe('IndexSelectPopover', () => { const wrapper = mountWithIntl(); expect(wrapper.find('[data-test-subj="selectIndexExpression"]').exists()).toBeTruthy(); - wrapper.find('[data-test-subj="selectIndexExpression"]').first().simulate('click'); + wrapper.find('[data-test-subj="selectIndexExpression"]').last().simulate('click'); await act(async () => { await nextTick(); wrapper.update(); @@ -166,7 +166,7 @@ describe('IndexSelectPopover', () => { `index ${index}` ); - wrapper.find('[data-test-subj="selectIndexExpression"]').first().simulate('click'); + wrapper.find('[data-test-subj="selectIndexExpression"]').last().simulate('click'); await act(async () => { await nextTick(); wrapper.update(); diff --git a/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/__snapshots__/entity_by_expression.test.tsx.snap b/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/__snapshots__/entity_by_expression.test.tsx.snap index 8f59fdd7df000..ae7a2b6121ba8 100644 --- a/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/__snapshots__/entity_by_expression.test.tsx.snap +++ b/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/__snapshots__/entity_by_expression.test.tsx.snap @@ -1,171 +1,30 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`should render entity by expression with aggregatable field options for entity 1`] = ` - - - - - } - value="FlightNum" +

- - } - closePopover={[Function]} - display="block" - hasArrow={true} - id="popoverForExpression" - isOpen={false} - ownFocus={true} - panelPaddingSize="m" - zIndex={8000} + - -
-
- - - + FlightNum + + +
+
`; diff --git a/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_by_expression.test.tsx b/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_by_expression.test.tsx index 322700209d4d2..7d1ef64448311 100644 --- a/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_by_expression.test.tsx +++ b/x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_by_expression.test.tsx @@ -75,7 +75,7 @@ const defaultProps = { test('should render entity by expression with aggregatable field options for entity', async () => { const component = mount(); - expect(component).toMatchSnapshot(); + expect(component.render()).toMatchSnapshot(); }); // diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/app/__snapshots__/uptime_page_template.test.tsx.snap b/x-pack/plugins/synthetics/public/legacy_uptime/app/__snapshots__/uptime_page_template.test.tsx.snap index ef5bb793abef3..84a00b4a859d8 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/app/__snapshots__/uptime_page_template.test.tsx.snap +++ b/x-pack/plugins/synthetics/public/legacy_uptime/app/__snapshots__/uptime_page_template.test.tsx.snap @@ -22,7 +22,7 @@ exports[`UptimePageTemplateComponent styling applies the header centering on mob class="euiPageBody euiPageBody--borderRadiusNone" >
OK
-
- for 4 months -
+ for 4 months
diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap index b8067ae79c3fe..e5fe132885602 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/__snapshots__/expanded_row.test.tsx.snap @@ -140,61 +140,57 @@ exports[`PingListExpandedRow renders link to docs if body is not recorded but it class="euiFlexItem" >
-
-
-
+
+
- Response Body - -
+
+
-
- Body size is 1MB. -
-
-
- Body not recorded. Read our - + External link + + - docs - - External link - - - (opens in a new tab or window) - - - for more information on recording response bodies. -
-
-
-
+ (opens in a new tab or window) + + + for more information on recording response bodies. +
+ +
diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap index 3899c27acf1d7..3ddab9f8bd10a 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/ping_list/__snapshots__/ping_headers.test.tsx.snap @@ -5,8 +5,7 @@ exports[`Ping Headers shallow renders expected elements for valid props 1`] = ` - } - buttonElement="button" - element="div" id="responseHeaderAccord" - initialIsOpen={false} - isLoading={false} - isLoadingMessage={false} - paddingSize="none" > - + `; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap index afe3bacea17fb..f61aaa763b106 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/status_details/__snapshots__/ssl_certificate.test.tsx.snap @@ -37,7 +37,7 @@ Array [ class="euiToolTipAnchor" >
props.theme.eui.paddingSizes.m}; + margin-right: ${(props) => props.theme.eui.euiSizeM}; max-width: 7%; min-width: 160px; `; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts index ae4792d8af883..1046f48c1bd70 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor/synthetics/waterfall/components/styles.ts @@ -113,7 +113,7 @@ export const WaterfallChartSidebarContainerFlexGroup = euiStyled(EuiFlexGroup)` // Ensures flex items honour no-wrap of children, rather than trying to extend to the full width of children. export const WaterfallChartSidebarFlexItem = euiStyled(EuiFlexItem)` min-width: 0; - padding-right: ${(props) => props.theme.eui.paddingSizes.s}; + padding-right: ${(props) => props.theme.eui.euiSizeS}; justify-content: space-around; `; @@ -143,7 +143,7 @@ export const WaterfallChartLegendContainer = euiStyled.div` bottom: 0; z-index: ${(props) => props.theme.eui.euiZLevel4}; background-color: ${(props) => props.theme.eui.euiColorLightestShade}; - padding: ${(props) => props.theme.eui.paddingSizes.xs}; + padding: ${(props) => props.theme.eui.euiSizeXS}; font-size: ${(props) => props.theme.eui.euiFontSizeXS}; box-shadow: 0px -1px 4px 0px ${(props) => props.theme.eui.euiColorLightShade}; `; // NOTE: EuiShadowColor is a little too dark to work with the background-color @@ -157,7 +157,7 @@ export const WaterfallChartTooltip = euiStyled(WaterfallTooltipResponsiveMaxWidt background-color: ${(props) => props.theme.eui.euiColorDarkestShade}; border-radius: ${(props) => props.theme.eui.euiBorderRadius}; color: ${(props) => props.theme.eui.euiColorLightestShade}; - padding: ${(props) => props.theme.eui.paddingSizes.s}; + padding: ${(props) => props.theme.eui.euiSizeS}; .euiToolTip__arrow { background-color: ${(props) => props.theme.eui.euiColorDarkestShade}; } @@ -165,7 +165,7 @@ export const WaterfallChartTooltip = euiStyled(WaterfallTooltipResponsiveMaxWidt export const NetworkRequestsTotalStyle = euiStyled(EuiText)` line-height: 28px; - padding: 0 ${(props) => props.theme.eui.paddingSizes.m}; + padding: 0 ${(props) => props.theme.eui.euiSizeM}; border-bottom: 0.3px solid ${(props) => props.theme.eui.euiColorLightShade}; z-index: ${(props) => props.theme.eui.euiZLevel5}; `; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx index a1c6b88042b77..3af35148501c0 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/anomaly_alert/select_severity.tsx @@ -93,7 +93,7 @@ const getSeverityOptions = () => -

+

matching monitors are down > 5 times diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap index 5ff6e5773485b..9137fa97dbb89 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/alerts/monitor_expressions/__snapshots__/time_expression_select.test.tsx.snap @@ -16,17 +16,17 @@ exports[`TimeExpressionSelect component should renders against props 1`] = ` > within last 15 @@ -46,15 +46,15 @@ exports[`TimeExpressionSelect component should renders against props 1`] = ` > minutes diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx index 7f64c1199c2b0..a6305ccc654ba 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/columns/monitor_status_column.tsx @@ -284,5 +284,5 @@ const getCheckedLabel = (timestamp: Moment) => { }; const PaddedText = euiStyled(EuiText)` - padding-right: ${(props) => props.theme.eui.paddingSizes.xs}; + padding-right: ${(props) => props.theme.eui.euiSizeXS}; `; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx index 2ef6c7718f7bc..64ab69e0aa39f 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/screenshot_link.tsx @@ -12,7 +12,7 @@ import { ReactRouterEuiLink } from '../../../common/react_router_helpers'; import { Ping } from '../../../../../../common/runtime_types/ping/ping'; const LabelLink = euiStyled.div` - margin-bottom: ${(props) => props.theme.eui.paddingSizes.xs}; + margin-bottom: ${(props) => props.theme.eui.euiSizeXS}; font-size: ${({ theme }) => theme.eui.euiFontSizeS}; `; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx index d0db4a99a495e..19cda36754c66 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/check_steps/step_expanded_row/step_screenshots.tsx @@ -19,7 +19,7 @@ import { ScreenshotLink } from './screenshot_link'; import { getShortTimeStamp } from '../../../overview/monitor_list/columns/monitor_status_column'; const Label = euiStyled.div` - margin-bottom: ${(props) => props.theme.eui.paddingSizes.xs}; + margin-bottom: ${(props) => props.theme.eui.euiSizeXS}; font-size: ${({ theme }) => theme.eui.euiFontSizeS}; color: ${({ theme }) => theme.eui.euiColorDarkShade}; `; diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/executed_step.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/executed_step.tsx index 063dd9db0eae3..80c09b44bcedb 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/executed_step.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/synthetics/executed_step.tsx @@ -23,7 +23,7 @@ interface ExecutedStepProps { } const Label = euiStyled.div` - margin-bottom: ${(props) => props.theme.eui.paddingSizes.xs}; + margin-bottom: ${(props) => props.theme.eui.euiSizeXS}; font-size: ${({ theme }) => theme.eui.euiFontSizeS}; color: ${({ theme }) => theme.eui.euiColorDarkShade}; `; @@ -31,7 +31,7 @@ const Label = euiStyled.div` const Message = euiStyled.div` font-weight: bold; font-size:${({ theme }) => theme.eui.euiFontSizeM}; - margin-bottom: ${(props) => props.theme.eui.paddingSizes.m}; + margin-bottom: ${(props) => props.theme.eui.euiSizeM}; `; const ExpandedRow = euiStyled.div` diff --git a/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/index.tsx b/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/index.tsx index 4e7138aae6cbf..2311ea3192c9a 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/index.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/event_rendered_view/index.tsx @@ -41,7 +41,7 @@ const ActionsContainer = styled.div` display: flex; align-items: center; div div:first-child div.siemEventsTable__tdContent { - margin-left: ${({ theme }) => theme.eui.paddingSizes.m}; + margin-left: ${({ theme }) => theme.eui.euiSizeM}; } `; @@ -49,7 +49,7 @@ const ActionsContainer = styled.div` type BasicTableType = ComponentType>; const StyledEuiBasicTable = styled(EuiBasicTable as BasicTableType)` - padding-top: ${({ theme }) => theme.eui.paddingSizes.m}; + padding-top: ${({ theme }) => theme.eui.euiSizeM}; .EventRenderedView__buildingBlock { background: ${({ theme }) => theme.eui.euiColorHighlight}; } diff --git a/x-pack/plugins/timelines/public/components/t_grid/integrated/index.test.tsx b/x-pack/plugins/timelines/public/components/t_grid/integrated/index.test.tsx index 9caa239e5e602..15fd4d2ce75cf 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/integrated/index.test.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/integrated/index.test.tsx @@ -75,7 +75,7 @@ describe('integrated t_grid', () => { expect(screen.queryByTestId('updated-flex-group')).toHaveStyleRule( `margin-right`, - euiDarkVars.paddingSizes.xl + euiDarkVars.euiSizeXL ); }); it(`does not render the empty state when the graph overlay is open`, () => { diff --git a/x-pack/plugins/timelines/public/components/t_grid/styles.tsx b/x-pack/plugins/timelines/public/components/t_grid/styles.tsx index 7f4767e45fec7..cfd87c1c6ba5b 100644 --- a/x-pack/plugins/timelines/public/components/t_grid/styles.tsx +++ b/x-pack/plugins/timelines/public/components/t_grid/styles.tsx @@ -185,7 +185,7 @@ export const EventsThContent = styled.div.attrs(({ className = '' }) => ({ font-weight: ${({ theme }) => theme.eui.euiFontWeightSemiBold}; line-height: ${({ theme }) => theme.eui.euiLineHeight}; min-width: 0; - padding: ${({ theme }) => theme.eui.paddingSizes.xs}; + padding: ${({ theme }) => theme.eui.euiSizeXS}; text-align: ${({ textAlign }) => textAlign}; width: ${({ width }) => width != null @@ -194,7 +194,7 @@ export const EventsThContent = styled.div.attrs(({ className = '' }) => ({ > button.euiButtonIcon, > .euiToolTipAnchor > button.euiButtonIcon { - margin-left: ${({ theme }) => `-${theme.eui.paddingSizes.xs}`}; + margin-left: ${({ theme }) => `-${theme.eui.euiSizeXS}`}; } `; @@ -286,12 +286,12 @@ export const EventsTrSupplement = styled.div.attrs(({ className = '' }) => ({ }))<{ className: string }>` font-size: ${({ theme }) => theme.eui.euiFontSizeXS}; line-height: ${({ theme }) => theme.eui.euiLineHeight}; - padding-left: ${({ theme }) => theme.eui.paddingSizes.m}; + padding-left: ${({ theme }) => theme.eui.euiSizeM}; .euiAccordion + div { background-color: ${({ theme }) => theme.eui.euiColorEmptyShade}; - padding: 0 ${({ theme }) => theme.eui.paddingSizes.s}; + padding: 0 ${({ theme }) => theme.eui.euiSizeS}; border: 1px solid ${({ theme }) => theme.eui.euiColorLightShade}; - border-radius: ${({ theme }) => theme.eui.paddingSizes.xs}; + border-radius: ${({ theme }) => theme.eui.euiSizeXS}; } `; @@ -352,7 +352,7 @@ export const EventsTdContent = styled.div.attrs(({ className }) => ({ font-size: ${({ theme }) => theme.eui.euiFontSizeXS}; line-height: ${({ theme }) => theme.eui.euiLineHeight}; min-width: 0; - padding: ${({ theme }) => theme.eui.paddingSizes.xs}; + padding: ${({ theme }) => theme.eui.euiSizeXS}; text-align: ${({ textAlign }) => textAlign}; width: ${({ width }) => width != null @@ -360,7 +360,7 @@ export const EventsTdContent = styled.div.attrs(({ className }) => ({ : '100%'}; /* Using width: 100% instead of flex: 1 and max-width: 100% for IE11 */ button.euiButtonIcon { - margin-left: ${({ theme }) => `-${theme.eui.paddingSizes.xs}`}; + margin-left: ${({ theme }) => `-${theme.eui.euiSizeXS}`}; } `; @@ -468,8 +468,7 @@ export const FullWidthFlexGroup = styled(EuiFlexGroup)<{ $visible?: boolean }>` `; export const UpdatedFlexGroup = styled(EuiFlexGroup)<{ $view?: ViewSelection }>` - ${({ $view, theme }) => - $view === 'gridView' ? `margin-right: ${theme.eui.paddingSizes.xl};` : ''} + ${({ $view, theme }) => ($view === 'gridView' ? `margin-right: ${theme.eui.euiSizeXL};` : '')} position: absolute; z-index: ${({ theme }) => theme.eui.euiZLevel1}; right: 0px; @@ -483,6 +482,6 @@ export const AlertCount = styled.span` font-size: ${({ theme }) => theme.eui.euiFontSizeXS}; font-weight: ${({ theme }) => theme.eui.euiFontWeightSemiBold}; border-right: ${({ theme }) => theme.eui.euiBorderThin}; - margin-right: ${({ theme }) => theme.eui.paddingSizes.s}; - padding-right: ${({ theme }) => theme.eui.paddingSizes.m}; + margin-right: ${({ theme }) => theme.eui.euiSizeS}; + padding-right: ${({ theme }) => theme.eui.euiSizeM}; `; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.test.tsx index 1c21170005265..39867ca690f0f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.test.tsx @@ -28,7 +28,7 @@ describe('AddMessageVariables', () => { wrapper.find('[data-test-subj="fooAddVariableButton"]').first().simulate('click'); expect( - wrapper.find('[data-test-subj="variableMenuButton-0-templated-name"]').first().text() + wrapper.find('[data-test-subj="variableMenuButton-0-templated-name"]').last().text() ).toEqual('{{myVar}}'); }); @@ -51,7 +51,7 @@ describe('AddMessageVariables', () => { wrapper.find('[data-test-subj="fooAddVariableButton"]').first().simulate('click'); expect( - wrapper.find('[data-test-subj="variableMenuButton-0-templated-name"]').first().text() + wrapper.find('[data-test-subj="variableMenuButton-0-templated-name"]').last().text() ).toEqual('{{{myVar}}}'); }); @@ -76,10 +76,7 @@ describe('AddMessageVariables', () => { ); wrapper.find('[data-test-subj="fooAddVariableButton"]').first().simulate('click'); - wrapper - .find('[data-test-subj="variableMenuButton-1-templated-name"]') - .first() - .simulate('click'); + wrapper.find('[data-test-subj="variableMenuButton-1-templated-name"]').last().simulate('click'); expect(onSelectEventHandler).toHaveBeenCalledTimes(1); expect(onSelectEventHandler).toHaveBeenCalledWith({ diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.tsx index 08a824f53e465..0849be3d0f6a9 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/add_message_variables.tsx @@ -48,7 +48,7 @@ export const AddMessageVariables: React.FunctionComponent = ({ {templateActionVariable(variable)} -

{variable.description}
+
{variable.description}
diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/json_editor_with_message_variables.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/json_editor_with_message_variables.test.tsx index 068e4755be165..5349e60a60adb 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/json_editor_with_message_variables.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/json_editor_with_message_variables.test.tsx @@ -41,10 +41,7 @@ describe('JsonEditorWithMessageVariables', () => { const wrapper = mountWithIntl(); wrapper.find('[data-test-subj="fooAddVariableButton"]').first().simulate('click'); - wrapper - .find('[data-test-subj="variableMenuButton-0-templated-name"]') - .first() - .simulate('click'); + wrapper.find('[data-test-subj="variableMenuButton-0-templated-name"]').last().simulate('click'); expect(wrapper.find('[data-test-subj="fooJsonEditor"]').first().prop('value')).toEqual( '{{myVar}}' @@ -66,10 +63,7 @@ describe('JsonEditorWithMessageVariables', () => { ); wrapper.find('[data-test-subj="fooAddVariableButton"]').first().simulate('click'); - wrapper - .find('[data-test-subj="variableMenuButton-0-templated-name"]') - .first() - .simulate('click'); + wrapper.find('[data-test-subj="variableMenuButton-0-templated-name"]').last().simulate('click'); expect(wrapper.find('[data-test-subj="fooJsonEditor"]').first().prop('value')).toEqual( '{{{myVar}}}' diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.test.tsx index 0f3981391a49c..29709d2484d6d 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.test.tsx @@ -30,10 +30,7 @@ describe('TextAreaWithMessageVariables', () => { const wrapper = mountWithIntl(); wrapper.find('[data-test-subj="fooAddVariableButton"]').first().simulate('click'); - wrapper - .find('[data-test-subj="variableMenuButton-0-templated-name"]') - .first() - .simulate('click'); + wrapper.find('[data-test-subj="variableMenuButton-0-templated-name"]').last().simulate('click'); expect(editAction).toHaveBeenCalledTimes(1); expect(editAction).toHaveBeenCalledWith(props.paramsProperty, '{{myVar}}', props.index); @@ -54,10 +51,7 @@ describe('TextAreaWithMessageVariables', () => { ); wrapper.find('[data-test-subj="fooAddVariableButton"]').first().simulate('click'); - wrapper - .find('[data-test-subj="variableMenuButton-0-templated-name"]') - .first() - .simulate('click'); + wrapper.find('[data-test-subj="variableMenuButton-0-templated-name"]').last().simulate('click'); expect(editAction).toHaveBeenCalledTimes(1); expect(editAction).toHaveBeenCalledWith(props.paramsProperty, '{{{myVar}}}', props.index); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/text_field_with_message_variables.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/text_field_with_message_variables.test.tsx index 43c7ac51591b5..c7a25e19c5c12 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/text_field_with_message_variables.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/text_field_with_message_variables.test.tsx @@ -30,10 +30,7 @@ describe('TextFieldWithMessageVariables', () => { const wrapper = mountWithIntl(); wrapper.find('[data-test-subj="fooAddVariableButton"]').first().simulate('click'); - wrapper - .find('[data-test-subj="variableMenuButton-0-templated-name"]') - .first() - .simulate('click'); + wrapper.find('[data-test-subj="variableMenuButton-0-templated-name"]').last().simulate('click'); expect(editAction).toHaveBeenCalledTimes(1); expect(editAction).toHaveBeenCalledWith(props.paramsProperty, '{{myVar}}', props.index); @@ -54,10 +51,7 @@ describe('TextFieldWithMessageVariables', () => { ); wrapper.find('[data-test-subj="fooAddVariableButton"]').first().simulate('click'); - wrapper - .find('[data-test-subj="variableMenuButton-0-templated-name"]') - .first() - .simulate('click'); + wrapper.find('[data-test-subj="variableMenuButton-0-templated-name"]').last().simulate('click'); expect(editAction).toHaveBeenCalledTimes(1); expect(editAction).toHaveBeenCalledWith(props.paramsProperty, '{{{myVar}}}', props.index); diff --git a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.test.tsx b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.test.tsx index bb94e1d38757a..9486a3212b0ac 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/threshold.test.tsx @@ -83,7 +83,7 @@ describe('threshold expression', () => { /> ); - wrapper.find('[data-test-subj="thresholdPopover"]').first().simulate('click'); + wrapper.find('[data-test-subj="thresholdPopover"]').last().simulate('click'); expect(wrapper.find('[data-test-subj="comparatorOptionsComboBox"]').exists()).toBeTruthy(); expect(wrapper.find('[data-test-subj="alertThresholdInput"]').exists()).toBeTruthy(); @@ -122,7 +122,7 @@ describe('threshold expression', () => { /> ); - wrapper.find('[data-test-subj="thresholdPopover"]').first().simulate('click'); + wrapper.find('[data-test-subj="thresholdPopover"]').last().simulate('click'); expect(wrapper.find('[data-test-subj="comparatorOptionsComboBox"]').exists()).toBeTruthy(); expect(wrapper.find('input[data-test-subj="alertThresholdInput"]').length).toEqual(1); diff --git a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/value.test.tsx b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/value.test.tsx index 6ff6206db456a..116e548e78efc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/value.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/value.test.tsx @@ -102,7 +102,7 @@ describe('value expression', () => { expect(wrapper.find('[data-test-subj="valueFieldTitle"]').exists()).toBeFalsy(); expect(wrapper.find('[data-test-subj="valueFieldNumber"]').exists()).toBeFalsy(); - wrapper.find('[data-test-subj="valueExpression"]').first().simulate('click'); + wrapper.find('[data-test-subj="valueExpression"]').last().simulate('click'); await act(async () => { await nextTick(); wrapper.update(); @@ -123,7 +123,7 @@ describe('value expression', () => { /> ); - wrapper.find('[data-test-subj="valueExpression"]').first().simulate('click'); + wrapper.find('[data-test-subj="valueExpression"]').last().simulate('click'); await act(async () => { await nextTick(); wrapper.update(); diff --git a/yarn.lock b/yarn.lock index 2d8dde05811f5..5f2e28835e141 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1504,10 +1504,10 @@ resolved "https://registry.yarnpkg.com/@elastic/eslint-plugin-eui/-/eslint-plugin-eui-0.0.2.tgz#56b9ef03984a05cc213772ae3713ea8ef47b0314" integrity sha512-IoxURM5zraoQ7C8f+mJb9HYSENiZGgRVcG4tLQxE61yHNNRDXtGDWTZh8N1KIHcsqN1CEPETjuzBXkJYF/fDiQ== -"@elastic/eui@58.0.0": - version "58.0.0" - resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-58.0.0.tgz#12aad69385edbd56253a70108ed34f8ef572a980" - integrity sha512-LE6yzfu2PfiPVcgyiTURm1ypYtLiVX8YlAgypqN3f6QB89Q1UBeb2njeqyBubzpzOpC/OU1a98CgWy2YWl+0mg== +"@elastic/eui@59.0.1": + version "59.0.1" + resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-59.0.1.tgz#54bf17c058292a9045b99b2ad30c88f52b98fa20" + integrity sha512-oaYyT4jK4Nyftp/w/VTF+GxZ3rUpbEfLyxkN240oioAcQC1gnn/v791SkhCNqm72PDAtv/buqsgWd4oAnqdC5g== dependencies: "@types/chroma-js" "^2.0.0" "@types/lodash" "^4.14.160" From 3e70fd07f482643c0ce0ce42f91e588693391d4e Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Tue, 21 Jun 2022 21:35:06 -0400 Subject: [PATCH 19/61] [Uptime] use dynamic heartbeatIndices for use_monitor_histogram hook (#134856) * uptime - use dynamic heartbeatIndices for use_monitor_histogram hook * Update x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts * use empty index when index pattern is undefined * uptime - uses dynamic index for down monitor histogram --- .../use_monitor_histogram.test.tsx | 36 +++++++++++++++++++ .../monitor_list/use_monitor_histogram.ts | 18 +++++----- 2 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.test.tsx diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.test.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.test.tsx new file mode 100644 index 0000000000000..0aabe45d140bd --- /dev/null +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.test.tsx @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react-hooks'; +import { useMonitorHistogram } from './use_monitor_histogram'; +import { WrappedHelper } from '../../../../apps/synthetics/utils/testing'; +import * as searchHooks from '@kbn/observability-plugin/public/hooks/use_es_search'; +import * as reduxHooks from 'react-redux'; + +describe('useMonitorHistogram', () => { + const dynamicIndexPattern = 'synthetics-*'; + const useEsSearch = jest.fn().mockReturnValue({}); + jest + .spyOn(reduxHooks, 'useSelector') + .mockReturnValue({ settings: { heartbeatIndices: dynamicIndexPattern } }); + jest.spyOn(searchHooks, 'useEsSearch').mockImplementation(useEsSearch); + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('calls dynamic heartbeat index', () => { + renderHook(() => useMonitorHistogram({ items: [] }), { + wrapper: WrappedHelper, + }); + expect(useEsSearch).toBeCalledWith( + expect.objectContaining({ index: dynamicIndexPattern }), + ['[]', 0], + { name: 'getMonitorDownHistory' } + ); + }); +}); diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts index 1a9b7b73732af..e0c6a6cbcfa00 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/overview/monitor_list/use_monitor_histogram.ts @@ -16,25 +16,24 @@ import { } from '../../../../../common/runtime_types/monitor'; import { useGetUrlParams } from '../../../hooks'; import { UptimeRefreshContext } from '../../../contexts'; -import { esKuerySelector } from '../../../state/selectors'; +import { selectDynamicSettings } from '../../../state/selectors'; import { getHistogramInterval } from '../../../../../common/lib/get_histogram_interval'; import { Ping } from '../../../../../common/runtime_types'; export const useMonitorHistogram = ({ items }: { items: MonitorSummary[] }) => { - const { dateRangeStart, dateRangeEnd, statusFilter } = useGetUrlParams(); + const { dateRangeStart, dateRangeEnd } = useGetUrlParams(); const { lastRefresh } = useContext(UptimeRefreshContext); - const filters = useSelector(esKuerySelector); + const { settings } = useSelector(selectDynamicSettings); const monitorIds = (items ?? []).map(({ monitor_id: monitorId }) => monitorId); const { queryParams, minInterval } = getQueryParams( dateRangeStart, dateRangeEnd, - filters, - statusFilter, - monitorIds + monitorIds, + settings?.heartbeatIndices || '' ); const { data, loading } = useEsSearch( @@ -77,14 +76,13 @@ export const useMonitorHistogram = ({ items }: { items: MonitorSummary[] }) => { const getQueryParams = ( dateRangeStart: string, dateRangeEnd: string, - filters: string, - statusFilter: string, - monitorIds: string[] + monitorIds: string[], + index: string ) => { const minInterval = getHistogramInterval(dateRangeStart, dateRangeEnd, 12); const queryParams = { - index: 'heartbeat-*', + index, body: { size: 0, query: { From d7cb120904e0bfcfcb19b2b4bf861c7d03526ec7 Mon Sep 17 00:00:00 2001 From: John Dorlus Date: Tue, 21 Jun 2022 22:59:45 -0400 Subject: [PATCH 20/61] Added new a11y test for index management and Updated ILM UI code blocks to use correct language prop instead of lang (#133970) * Added new a11y test for index management. Fixed a11y violations in code in index management app in the code block element. Added new test to a11y config to run in CI. * Removed unused reference. * Moved navigate to initial code block. * Fixed all nits. --- test/accessibility/apps/management.ts | 128 +++++++++--------- test/functional/page_objects/settings_page.ts | 5 + .../components/index_lifecycle_summary.tsx | 4 +- .../tab_summary.tsx | 2 +- .../simulate_template/simulate_template.tsx | 2 +- .../components/details_panel/tab_aliases.tsx | 2 +- .../components/details_panel/tab_mappings.tsx | 2 +- .../components/details_panel/tab_settings.tsx | 2 +- .../template_form/steps/step_review.tsx | 2 +- .../detail_panel/show_json/show_json.js | 2 +- .../template_details/tabs/tab_summary.tsx | 2 +- x-pack/test/accessibility/apps/management.ts | 82 +++++++++++ x-pack/test/accessibility/config.ts | 1 + .../page_objects/index_management_page.ts | 19 ++- 14 files changed, 181 insertions(+), 74 deletions(-) create mode 100644 x-pack/test/accessibility/apps/management.ts diff --git a/test/accessibility/apps/management.ts b/test/accessibility/apps/management.ts index 0f65a3561c4a0..25db943a8fcf1 100644 --- a/test/accessibility/apps/management.ts +++ b/test/accessibility/apps/management.ts @@ -21,83 +21,83 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); describe('Management', () => { - before(async () => { - await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); - await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); - await kibanaServer.uiSettings.update({ - defaultIndex: 'logstash-*', - }); - await PageObjects.settings.navigateTo(); - }); - - after(async () => { - await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); - await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); - }); - it('main view', async () => { await a11y.testAppSnapshot(); }); - it('index pattern page', async () => { - await PageObjects.settings.clickKibanaIndexPatterns(); - await a11y.testAppSnapshot(); - }); + describe('data views', async () => { + before(async () => { + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); + await kibanaServer.uiSettings.update({ + defaultIndex: 'logstash-*', + }); + await PageObjects.settings.navigateTo(); + }); + after(async () => { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); + await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); + }); + it('index pattern page', async () => { + await PageObjects.settings.clickKibanaIndexPatterns(); + await a11y.testAppSnapshot(); + }); - it('Single indexpattern view', async () => { - await PageObjects.settings.clickIndexPatternLogstash(); - await PageObjects.header.waitUntilLoadingHasFinished(); - await a11y.testAppSnapshot(); - }); + it('Single indexpattern view', async () => { + await PageObjects.settings.clickIndexPatternLogstash(); + await PageObjects.header.waitUntilLoadingHasFinished(); + await a11y.testAppSnapshot(); + }); - it('Index pattern field editor - initial view', async () => { - await PageObjects.settings.clickAddField(); - await a11y.testAppSnapshot(); - }); + it('Index pattern field editor - initial view', async () => { + await PageObjects.settings.clickAddField(); + await a11y.testAppSnapshot(); + }); - it('Index pattern field editor - all options shown', async () => { - await PageObjects.settings.setFieldName('test'); - await PageObjects.settings.setFieldType('Keyword'); - await PageObjects.settings.setFieldScript("emit('hello world')"); - await PageObjects.settings.toggleRow('formatRow'); - await PageObjects.settings.setFieldFormat('string'); - await PageObjects.settings.toggleRow('customLabelRow'); - await PageObjects.settings.setCustomLabel('custom label'); - await testSubjects.click('toggleAdvancedSetting'); - // Let's make sure the field preview is visible before testing the snapshot - const isFieldPreviewVisible = - await PageObjects.indexPatternFieldEditorObjects.isFieldPreviewVisible(); - expect(isFieldPreviewVisible).to.be(true); + it('Index pattern field editor - all options shown', async () => { + await PageObjects.settings.setFieldName('test'); + await PageObjects.settings.setFieldType('Keyword'); + await PageObjects.settings.setFieldScript("emit('hello world')"); + await PageObjects.settings.toggleRow('formatRow'); + await PageObjects.settings.setFieldFormat('string'); + await PageObjects.settings.toggleRow('customLabelRow'); + await PageObjects.settings.setCustomLabel('custom label'); + await testSubjects.click('toggleAdvancedSetting'); + // Let's make sure the field preview is visible before testing the snapshot + const isFieldPreviewVisible = + await PageObjects.indexPatternFieldEditorObjects.isFieldPreviewVisible(); + expect(isFieldPreviewVisible).to.be(true); - await a11y.testAppSnapshot(); + await a11y.testAppSnapshot(); - await PageObjects.settings.closeIndexPatternFieldEditor(); - }); + await PageObjects.settings.closeIndexPatternFieldEditor(); + }); - it('Open create index pattern wizard', async () => { - await PageObjects.settings.clickKibanaIndexPatterns(); - await PageObjects.settings.clickAddNewIndexPatternButton(); - await PageObjects.header.waitUntilLoadingHasFinished(); - await a11y.testAppSnapshot(); - await testSubjects.click('closeFlyoutButton'); - }); + it('Open create index pattern wizard', async () => { + await PageObjects.settings.clickKibanaIndexPatterns(); + await PageObjects.settings.clickAddNewIndexPatternButton(); + await PageObjects.header.waitUntilLoadingHasFinished(); + await a11y.testAppSnapshot(); + await testSubjects.click('closeFlyoutButton'); + }); - // We are navigating back to index pattern page to test field formatters - it('Navigate back to logstash index page', async () => { - await PageObjects.settings.clickKibanaIndexPatterns(); - await PageObjects.settings.clickIndexPatternLogstash(); - await a11y.testAppSnapshot(); - }); + // We are navigating back to index pattern page to test field formatters + it('Navigate back to logstash index page', async () => { + await PageObjects.settings.clickKibanaIndexPatterns(); + await PageObjects.settings.clickIndexPatternLogstash(); + await a11y.testAppSnapshot(); + }); - it('Edit field type', async () => { - await PageObjects.settings.clickEditFieldFormat(); - await a11y.testAppSnapshot(); - await PageObjects.settings.closeIndexPatternFieldEditor(); - }); + it('Edit field type', async () => { + await PageObjects.settings.clickEditFieldFormat(); + await a11y.testAppSnapshot(); + await PageObjects.settings.closeIndexPatternFieldEditor(); + }); - it('Advanced settings', async () => { - await PageObjects.settings.clickKibanaSettings(); - await a11y.testAppSnapshot(); + it('Advanced settings', async () => { + await PageObjects.settings.clickKibanaSettings(); + await a11y.testAppSnapshot(); + }); }); }); } diff --git a/test/functional/page_objects/settings_page.ts b/test/functional/page_objects/settings_page.ts index bd3e259ef6291..75f468382fca2 100644 --- a/test/functional/page_objects/settings_page.ts +++ b/test/functional/page_objects/settings_page.ts @@ -51,6 +51,11 @@ export class SettingsPageObject extends FtrService { await this.header.waitUntilLoadingHasFinished(); } + async clickIndexManagement() { + await this.testSubjects.click('index_management'); + await this.header.waitUntilLoadingHasFinished(); + } + async getAdvancedSettings(propertyName: string) { this.log.debug('in getAdvancedSettings'); return await this.testSubjects.getAttribute( diff --git a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx b/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx index af3f16216813b..91b9203bea1aa 100644 --- a/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/extend_index_management/components/index_lifecycle_summary.tsx @@ -140,7 +140,9 @@ export class IndexLifecycleSummary extends Component { id="xpack.indexLifecycleMgmt.indexLifecycleMgmtSummary.phaseDefinitionTitle" /> - {JSON.stringify(ilm.phase_execution, null, 2)} + + {JSON.stringify(ilm.phase_execution, null, 2)} + diff --git a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_details/tab_summary.tsx b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_details/tab_summary.tsx index edba90affee70..3e9f0c38f2a52 100644 --- a/x-pack/plugins/index_management/public/application/components/component_templates/component_template_details/tab_summary.tsx +++ b/x-pack/plugins/index_management/public/application/components/component_templates/component_template_details/tab_summary.tsx @@ -141,7 +141,7 @@ export const TabSummary: React.FunctionComponent = ({ /> - {JSON.stringify(_meta, null, 2)} + {JSON.stringify(_meta, null, 2)} )} diff --git a/x-pack/plugins/index_management/public/application/components/index_templates/simulate_template/simulate_template.tsx b/x-pack/plugins/index_management/public/application/components/index_templates/simulate_template/simulate_template.tsx index 325ef03227826..f0d34c0df6be1 100644 --- a/x-pack/plugins/index_management/public/application/components/index_templates/simulate_template/simulate_template.tsx +++ b/x-pack/plugins/index_management/public/application/components/index_templates/simulate_template/simulate_template.tsx @@ -90,7 +90,7 @@ export const SimulateTemplate = React.memo(({ template, filters }: Props) => { } return isEmpty ? null : ( - + {templatePreview} ); diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_aliases.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_aliases.tsx index c02404596dcc5..fd11be88ec1c1 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_aliases.tsx +++ b/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_aliases.tsx @@ -19,7 +19,7 @@ export const TabAliases: React.FunctionComponent = ({ aliases }) => { if (aliases && Object.keys(aliases).length) { return (
- + {JSON.stringify(aliases, null, 2)}
diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_mappings.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_mappings.tsx index 0ed22589f8f3d..87da0453bbb5e 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_mappings.tsx +++ b/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_mappings.tsx @@ -18,7 +18,7 @@ export const TabMappings: React.FunctionComponent = ({ mappings }) => { if (mappings && Object.keys(mappings).length) { return (
- + {JSON.stringify(mappings, null, 2)}
diff --git a/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_settings.tsx b/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_settings.tsx index 915adb6cf849a..5f1d70df863b6 100644 --- a/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_settings.tsx +++ b/x-pack/plugins/index_management/public/application/components/shared/components/details_panel/tab_settings.tsx @@ -18,7 +18,7 @@ export const TabSettings: React.FunctionComponent = ({ settings }) => { if (settings && Object.keys(settings).length) { return (
- + {JSON.stringify(settings, null, 2)}
diff --git a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx index b46105be11e5f..3d7b88eeb0c45 100644 --- a/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx +++ b/x-pack/plugins/index_management/public/application/components/template_form/steps/step_review.tsx @@ -268,7 +268,7 @@ export const StepReview: React.FunctionComponent = React.memo( /> - {JSON.stringify(_meta, null, 2)} + {JSON.stringify(_meta, null, 2)} )} diff --git a/x-pack/plugins/index_management/public/application/sections/home/index_list/detail_panel/show_json/show_json.js b/x-pack/plugins/index_management/public/application/sections/home/index_list/detail_panel/show_json/show_json.js index b7874ee12ec8c..6ad472e695936 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/index_list/detail_panel/show_json/show_json.js +++ b/x-pack/plugins/index_management/public/application/sections/home/index_list/detail_panel/show_json/show_json.js @@ -26,6 +26,6 @@ export class ShowJson extends React.PureComponent { return null; } const json = JSON.stringify(data, null, 2); - return {json}; + return {json}; } } diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx index b4edeefbae8cf..20a7c172d674b 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/tabs/tab_summary.tsx @@ -209,7 +209,7 @@ export const TabSummary: React.FunctionComponent = ({ templateDetails }) /> - {JSON.stringify(_meta, null, 2)} + {JSON.stringify(_meta, null, 2)} )} diff --git a/x-pack/test/accessibility/apps/management.ts b/x-pack/test/accessibility/apps/management.ts new file mode 100644 index 0000000000000..9dd3ff4346cfa --- /dev/null +++ b/x-pack/test/accessibility/apps/management.ts @@ -0,0 +1,82 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrProviderContext } from '../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects([ + 'common', + 'settings', + 'header', + 'indexPatternFieldEditorObjects', + 'indexManagement', + ]); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const a11y = getService('a11y'); + + describe('Management', () => { + it('main view', async () => { + await PageObjects.settings.navigateTo(); + await a11y.testAppSnapshot(); + }); + + describe('index management', async () => { + describe('indices', async () => { + it('empty state', async () => { + await PageObjects.settings.clickIndexManagement(); + await a11y.testAppSnapshot(); + }); + describe('indices with data', async () => { + before(async () => { + await esArchiver.loadIfNeeded( + 'test/functional/fixtures/es_archiver/logstash_functional' + ); + await kibanaServer.uiSettings.update({ + defaultIndex: 'logstash-*', + }); + await PageObjects.settings.navigateTo(); + }); + after(async () => { + await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); + }); + it('index list', async () => { + await a11y.testAppSnapshot(); + }); + + describe('index panel', async () => { + it('index panel - summary', async () => { + await PageObjects.settings.clickIndexManagement(); + await PageObjects.indexManagement.clickIndiceAt(0); + await a11y.testAppSnapshot(); + }); + + it('index panel - settings', async () => { + await PageObjects.indexManagement.clickDetailPanelTabAt(0); + await a11y.testAppSnapshot(); + }); + + it('index panel - mappings', async () => { + await PageObjects.indexManagement.clickDetailPanelTabAt(1); + await a11y.testAppSnapshot(); + }); + + it('index panel - stats', async () => { + await PageObjects.indexManagement.clickDetailPanelTabAt(2); + await a11y.testAppSnapshot(); + }); + + it('index panel - edit settings', async () => { + await PageObjects.indexManagement.clickDetailPanelTabAt(3); + await a11y.testAppSnapshot(); + }); + }); + }); + }); + }); + }); +} diff --git a/x-pack/test/accessibility/config.ts b/x-pack/test/accessibility/config.ts index 739ff5318bc10..87709e92a678a 100644 --- a/x-pack/test/accessibility/config.ts +++ b/x-pack/test/accessibility/config.ts @@ -19,6 +19,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('./apps/login_page'), require.resolve('./apps/kibana_overview'), require.resolve('./apps/home'), + require.resolve('./apps/management'), require.resolve('./apps/grok_debugger'), require.resolve('./apps/search_profiler'), require.resolve('./apps/painless_lab'), diff --git a/x-pack/test/functional/page_objects/index_management_page.ts b/x-pack/test/functional/page_objects/index_management_page.ts index 953aba5d1e359..fc2382eb5a931 100644 --- a/x-pack/test/functional/page_objects/index_management_page.ts +++ b/x-pack/test/functional/page_objects/index_management_page.ts @@ -8,8 +8,10 @@ import { FtrProviderContext } from '../ftr_provider_context'; export function IndexManagementPageProvider({ getService }: FtrProviderContext) { + const retry = getService('retry'); const find = getService('find'); const testSubjects = getService('testSubjects'); + const log = getService('log'); return { async sectionHeadingText() { @@ -25,10 +27,24 @@ export function IndexManagementPageProvider({ getService }: FtrProviderContext) await testSubjects.click('checkboxToggles-rollupToggle'); }, + async clickDetailPanelTabAt(indexOfTab: number): Promise { + const tabList = await testSubjects.findAll('detailPanelTab'); + log.debug(tabList.length); + await tabList[indexOfTab].click(); + }, + + async clickIndiceAt(indexOfRow: number): Promise { + const indexList = await testSubjects.findAll('indexTableIndexNameLink'); + await indexList[indexOfRow].click(); + await retry.waitFor('detail panel title to show up', async () => { + return (await testSubjects.isDisplayed('detailPanelTabSelected')) === true; + }); + }, + async getIndexList() { const table = await find.byCssSelector('table'); const $ = await table.parseDomContent(); - return $.findTestSubjects('indexTableRow') + const indexList = await $.findTestSubjects('indexTableRow') .toArray() .map((row) => { return { @@ -44,6 +60,7 @@ export function IndexManagementPageProvider({ getService }: FtrProviderContext) indexSize: $(row).findTestSubject('indexTableCell-size').text(), }; }); + return indexList; }, async changeTabs( From 86db2df29d9fbdafe63aaf5082d2d1ac0ce659ed Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Wed, 22 Jun 2022 00:48:31 -0400 Subject: [PATCH 21/61] [api-docs] Daily api_docs build (#134876) --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.devdocs.json | 34 +- api_docs/apm.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/core.devdocs.json | 20 +- api_docs/core.mdx | 2 +- api_docs/core_application.mdx | 2 +- api_docs/core_chrome.mdx | 2 +- api_docs/core_http.mdx | 2 +- api_docs/core_saved_objects.mdx | 2 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.devdocs.json | 32813 ++++++---------- api_docs/data.mdx | 4 +- api_docs/data_query.devdocs.json | 32 +- api_docs/data_query.mdx | 4 +- api_docs/data_search.devdocs.json | 112 +- api_docs/data_search.mdx | 4 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.devdocs.json | 4 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 100 +- api_docs/deprecations_by_plugin.mdx | 155 +- api_docs/deprecations_by_team.mdx | 66 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/elastic_apm_synthtrace.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.devdocs.json | 296 +- api_docs/expressions.mdx | 4 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/fleet.devdocs.json | 111 +- api_docs/fleet.mdx | 4 +- api_docs/global_search.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerts.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bazel_packages.mdx | 2 +- api_docs/kbn_bazel_runner.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- .../kbn_core_injected_metadata_browser.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_query.devdocs.json | 98 +- api_docs/kbn_es_query.mdx | 4 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_kibana_json_schema.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_discovery.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_pm.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- .../kbn_scalability_simulation_generator.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- ...kbn_securitysolution_es_utils.devdocs.json | 8 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- .../kbn_shared_ux_button_toolbar.devdocs.json | 410 + api_docs/kbn_shared_ux_button_toolbar.mdx | 33 + .../kbn_shared_ux_card_no_data.devdocs.json | 477 + api_docs/kbn_shared_ux_card_no_data.mdx | 30 + .../kbn_shared_ux_components.devdocs.json | 134 +- api_docs/kbn_shared_ux_components.mdx | 4 +- ...red_ux_page_analytics_no_data.devdocs.json | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_kibana_no_data.devdocs.json | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- api_docs/kbn_shared_ux_services.mdx | 2 +- api_docs/kbn_shared_ux_storybook.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_sort_package_json.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_type_summarizer.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_theme.devdocs.json | 8 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.devdocs.json | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.devdocs.json | 16 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.devdocs.json | 16 - api_docs/licensing.mdx | 2 +- api_docs/lists.devdocs.json | 4 +- api_docs/lists.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/observability.devdocs.json | 4 +- api_docs/observability.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 20 +- api_docs/presentation_util.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/shared_u_x.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- .../telemetry_collection_manager.devdocs.json | 4 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.devdocs.json | 4 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.devdocs.json | 13 + api_docs/visualizations.mdx | 4 +- 270 files changed, 14140 insertions(+), 21384 deletions(-) create mode 100644 api_docs/kbn_shared_ux_button_toolbar.devdocs.json create mode 100644 api_docs/kbn_shared_ux_button_toolbar.mdx create mode 100644 api_docs/kbn_shared_ux_card_no_data.devdocs.json create mode 100644 api_docs/kbn_shared_ux_card_no_data.mdx diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index a3c9c51cd2716..d797669651470 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github summary: API docs for the actions plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 2362df77d806d..1b8402f59c88f 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github summary: API docs for the advancedSettings plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 33f5b265739b2..e970547c6ae93 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github summary: API docs for the aiops plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index a9a38362bad81..4cbf27c578880 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github summary: API docs for the alerting plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/apm.devdocs.json b/api_docs/apm.devdocs.json index 2b106be3920a9..602ed47c913e3 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -790,7 +790,7 @@ "label": "APIEndpoint", "description": [], "signature": [ - "\"POST /internal/apm/data_view/static\" | \"GET /internal/apm/data_view/dynamic\" | \"GET /internal/apm/environments\" | \"GET /internal/apm/services/{serviceName}/errors/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}\" | \"GET /internal/apm/services/{serviceName}/errors/distribution\" | \"POST /internal/apm/latency/overall_distribution\" | \"GET /internal/apm/services/{serviceName}/metrics/charts\" | \"GET /internal/apm/observability_overview\" | \"GET /internal/apm/observability_overview/has_data\" | \"GET /internal/apm/ux/client-metrics\" | \"GET /internal/apm/ux/page-load-distribution\" | \"GET /internal/apm/ux/page-load-distribution/breakdown\" | \"GET /internal/apm/ux/page-view-trends\" | \"GET /internal/apm/ux/visitor-breakdown\" | \"GET /internal/apm/ux/long-task-metrics\" | \"GET /internal/apm/service-map\" | \"GET /internal/apm/service-map/service/{serviceName}\" | \"GET /internal/apm/service-map/backend\" | \"GET /internal/apm/services/{serviceName}/serviceNodes\" | \"GET /internal/apm/services\" | \"GET /internal/apm/services/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/metadata/details\" | \"GET /internal/apm/services/{serviceName}/metadata/icons\" | \"GET /internal/apm/services/{serviceName}/agent\" | \"GET /internal/apm/services/{serviceName}/transaction_types\" | \"GET /internal/apm/services/{serviceName}/node/{serviceNodeName}/metadata\" | \"GET /api/apm/services/{serviceName}/annotation/search\" | \"POST /api/apm/services/{serviceName}/annotation\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}\" | \"GET /internal/apm/services/{serviceName}/throughput\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/dependencies\" | \"GET /internal/apm/services/{serviceName}/dependencies/breakdown\" | \"GET /internal/apm/services/{serviceName}/profiling/timeline\" | \"GET /internal/apm/services/{serviceName}/profiling/statistics\" | \"GET /internal/apm/services/{serviceName}/infrastructure_attributes_for_logs\" | \"GET /internal/apm/services/{serviceName}/anomaly_charts\" | \"GET /internal/apm/sorted_and_filtered_services\" | \"GET /internal/apm/service-groups\" | \"GET /internal/apm/service-group\" | \"POST /internal/apm/service-group\" | \"DELETE /internal/apm/service-group\" | \"GET /internal/apm/service-group/services\" | \"GET /internal/apm/suggestions\" | \"GET /internal/apm/traces/{traceId}\" | \"GET /internal/apm/traces\" | \"GET /internal/apm/traces/{traceId}/root_transaction\" | \"GET /internal/apm/transactions/{transactionId}\" | \"GET /internal/apm/traces/find\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/latency\" | \"GET /internal/apm/services/{serviceName}/transactions/traces/samples\" | \"GET /internal/apm/services/{serviceName}/transaction/charts/breakdown\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/error_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate_by_transaction_name\" | \"GET /internal/apm/alerts/chart_preview/transaction_error_rate\" | \"GET /internal/apm/alerts/chart_preview/transaction_duration\" | \"GET /internal/apm/alerts/chart_preview/transaction_error_count\" | \"GET /api/apm/settings/agent-configuration\" | \"GET /api/apm/settings/agent-configuration/view\" | \"DELETE /api/apm/settings/agent-configuration\" | \"PUT /api/apm/settings/agent-configuration\" | \"POST /api/apm/settings/agent-configuration/search\" | \"GET /api/apm/settings/agent-configuration/environments\" | \"GET /api/apm/settings/agent-configuration/agent_name\" | \"GET /internal/apm/settings/anomaly-detection/jobs\" | \"POST /internal/apm/settings/anomaly-detection/jobs\" | \"GET /internal/apm/settings/anomaly-detection/environments\" | \"POST /internal/apm/settings/anomaly-detection/update_to_v3\" | \"GET /internal/apm/settings/apm-index-settings\" | \"GET /internal/apm/settings/apm-indices\" | \"POST /internal/apm/settings/apm-indices/save\" | \"GET /internal/apm/settings/custom_links/transaction\" | \"GET /internal/apm/settings/custom_links\" | \"POST /internal/apm/settings/custom_links\" | \"PUT /internal/apm/settings/custom_links/{id}\" | \"DELETE /internal/apm/settings/custom_links/{id}\" | \"GET /api/apm/sourcemaps\" | \"POST /api/apm/sourcemaps\" | \"DELETE /api/apm/sourcemaps/{id}\" | \"GET /internal/apm/fleet/has_apm_policies\" | \"GET /internal/apm/fleet/agents\" | \"POST /api/apm/fleet/apm_server_schema\" | \"GET /internal/apm/fleet/apm_server_schema/unsupported\" | \"GET /internal/apm/fleet/migration_check\" | \"POST /internal/apm/fleet/cloud_apm_package_policy\" | \"GET /internal/apm/backends/top_backends\" | \"GET /internal/apm/backends/upstream_services\" | \"GET /internal/apm/backends/metadata\" | \"GET /internal/apm/backends/charts/latency\" | \"GET /internal/apm/backends/charts/throughput\" | \"GET /internal/apm/backends/charts/error_rate\" | \"GET /internal/apm/backends/operations\" | \"GET /internal/apm/backends/operations/spans\" | \"POST /internal/apm/correlations/p_values\" | \"GET /internal/apm/correlations/field_candidates\" | \"POST /internal/apm/correlations/field_stats\" | \"GET /internal/apm/correlations/field_value_stats\" | \"POST /internal/apm/correlations/field_value_pairs\" | \"POST /internal/apm/correlations/significant_correlations\" | \"GET /internal/apm/fallback_to_transactions\" | \"GET /internal/apm/has_data\" | \"GET /internal/apm/event_metadata/{processorEvent}/{id}\" | \"GET /internal/apm/agent_keys\" | \"GET /internal/apm/agent_keys/privileges\" | \"POST /internal/apm/api_key/invalidate\" | \"POST /api/apm/agent_keys\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/parents\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/children\" | \"GET /internal/apm/services/{serviceName}/infrastructure_attributes\" | \"GET /internal/apm/debug-telemetry\" | \"GET /internal/apm/time_range_metadata\"" + "\"POST /internal/apm/data_view/static\" | \"GET /internal/apm/data_view/dynamic\" | \"GET /internal/apm/environments\" | \"GET /internal/apm/services/{serviceName}/errors/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/errors/{groupId}\" | \"GET /internal/apm/services/{serviceName}/errors/distribution\" | \"POST /internal/apm/latency/overall_distribution\" | \"GET /internal/apm/services/{serviceName}/metrics/charts\" | \"GET /internal/apm/observability_overview\" | \"GET /internal/apm/observability_overview/has_data\" | \"GET /internal/apm/ux/page-load-distribution\" | \"GET /internal/apm/ux/page-load-distribution/breakdown\" | \"GET /internal/apm/ux/page-view-trends\" | \"GET /internal/apm/ux/visitor-breakdown\" | \"GET /internal/apm/ux/long-task-metrics\" | \"GET /internal/apm/service-map\" | \"GET /internal/apm/service-map/service/{serviceName}\" | \"GET /internal/apm/service-map/backend\" | \"GET /internal/apm/services/{serviceName}/serviceNodes\" | \"GET /internal/apm/services\" | \"GET /internal/apm/services/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/metadata/details\" | \"GET /internal/apm/services/{serviceName}/metadata/icons\" | \"GET /internal/apm/services/{serviceName}/agent\" | \"GET /internal/apm/services/{serviceName}/transaction_types\" | \"GET /internal/apm/services/{serviceName}/node/{serviceNodeName}/metadata\" | \"GET /api/apm/services/{serviceName}/annotation/search\" | \"POST /api/apm/services/{serviceName}/annotation\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}\" | \"GET /internal/apm/services/{serviceName}/throughput\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics\" | \"GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/dependencies\" | \"GET /internal/apm/services/{serviceName}/dependencies/breakdown\" | \"GET /internal/apm/services/{serviceName}/profiling/timeline\" | \"GET /internal/apm/services/{serviceName}/profiling/statistics\" | \"GET /internal/apm/services/{serviceName}/infrastructure_attributes_for_logs\" | \"GET /internal/apm/services/{serviceName}/anomaly_charts\" | \"GET /internal/apm/sorted_and_filtered_services\" | \"GET /internal/apm/service-groups\" | \"GET /internal/apm/service-group\" | \"POST /internal/apm/service-group\" | \"DELETE /internal/apm/service-group\" | \"GET /internal/apm/service-group/services\" | \"GET /internal/apm/suggestions\" | \"GET /internal/apm/traces/{traceId}\" | \"GET /internal/apm/traces\" | \"GET /internal/apm/traces/{traceId}/root_transaction\" | \"GET /internal/apm/transactions/{transactionId}\" | \"GET /internal/apm/traces/find\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/main_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/groups/detailed_statistics\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/latency\" | \"GET /internal/apm/services/{serviceName}/transactions/traces/samples\" | \"GET /internal/apm/services/{serviceName}/transaction/charts/breakdown\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/error_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate\" | \"GET /internal/apm/services/{serviceName}/transactions/charts/coldstart_rate_by_transaction_name\" | \"GET /internal/apm/alerts/chart_preview/transaction_error_rate\" | \"GET /internal/apm/alerts/chart_preview/transaction_duration\" | \"GET /internal/apm/alerts/chart_preview/transaction_error_count\" | \"GET /api/apm/settings/agent-configuration\" | \"GET /api/apm/settings/agent-configuration/view\" | \"DELETE /api/apm/settings/agent-configuration\" | \"PUT /api/apm/settings/agent-configuration\" | \"POST /api/apm/settings/agent-configuration/search\" | \"GET /api/apm/settings/agent-configuration/environments\" | \"GET /api/apm/settings/agent-configuration/agent_name\" | \"GET /internal/apm/settings/anomaly-detection/jobs\" | \"POST /internal/apm/settings/anomaly-detection/jobs\" | \"GET /internal/apm/settings/anomaly-detection/environments\" | \"POST /internal/apm/settings/anomaly-detection/update_to_v3\" | \"GET /internal/apm/settings/apm-index-settings\" | \"GET /internal/apm/settings/apm-indices\" | \"POST /internal/apm/settings/apm-indices/save\" | \"GET /internal/apm/settings/custom_links/transaction\" | \"GET /internal/apm/settings/custom_links\" | \"POST /internal/apm/settings/custom_links\" | \"PUT /internal/apm/settings/custom_links/{id}\" | \"DELETE /internal/apm/settings/custom_links/{id}\" | \"GET /api/apm/sourcemaps\" | \"POST /api/apm/sourcemaps\" | \"DELETE /api/apm/sourcemaps/{id}\" | \"GET /internal/apm/fleet/has_apm_policies\" | \"GET /internal/apm/fleet/agents\" | \"POST /api/apm/fleet/apm_server_schema\" | \"GET /internal/apm/fleet/apm_server_schema/unsupported\" | \"GET /internal/apm/fleet/migration_check\" | \"POST /internal/apm/fleet/cloud_apm_package_policy\" | \"GET /internal/apm/backends/top_backends\" | \"GET /internal/apm/backends/upstream_services\" | \"GET /internal/apm/backends/metadata\" | \"GET /internal/apm/backends/charts/latency\" | \"GET /internal/apm/backends/charts/throughput\" | \"GET /internal/apm/backends/charts/error_rate\" | \"GET /internal/apm/backends/operations\" | \"GET /internal/apm/backends/operations/spans\" | \"POST /internal/apm/correlations/p_values\" | \"GET /internal/apm/correlations/field_candidates\" | \"POST /internal/apm/correlations/field_stats\" | \"GET /internal/apm/correlations/field_value_stats\" | \"POST /internal/apm/correlations/field_value_pairs\" | \"POST /internal/apm/correlations/significant_correlations\" | \"GET /internal/apm/fallback_to_transactions\" | \"GET /internal/apm/has_data\" | \"GET /internal/apm/event_metadata/{processorEvent}/{id}\" | \"GET /internal/apm/agent_keys\" | \"GET /internal/apm/agent_keys/privileges\" | \"POST /internal/apm/api_key/invalidate\" | \"POST /api/apm/agent_keys\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/parents\" | \"GET /internal/apm/traces/{traceId}/span_links/{spanId}/children\" | \"GET /internal/apm/services/{serviceName}/infrastructure_attributes\" | \"GET /internal/apm/debug-telemetry\" | \"GET /internal/apm/time_range_metadata\"" ], "path": "x-pack/plugins/apm/server/routes/apm_routes/get_global_apm_server_route_repository.ts", "deprecated": false, @@ -4920,38 +4920,6 @@ }, ", { pageLoadDistribution: { pageLoadDistribution: { x: number; y: number; }[]; percentiles: Record | undefined; minDuration: number; maxDuration: number; } | null; }, ", "APMRouteCreateOptions", - ">; \"GET /internal/apm/ux/client-metrics\": ", - "ServerRoute", - "<\"GET /internal/apm/ux/client-metrics\", ", - "TypeC", - "<{ query: ", - "IntersectionC", - "<[", - "TypeC", - "<{ uiFilters: ", - "StringC", - "; }>, ", - "TypeC", - "<{ start: ", - "Type", - "; end: ", - "Type", - "; }>, ", - "PartialC", - "<{ urlQuery: ", - "StringC", - "; percentile: ", - "StringC", - "; }>]>; }>, ", - { - "pluginId": "apm", - "scope": "server", - "docId": "kibApmPluginApi", - "section": "def-server.APMRouteHandlerResources", - "text": "APMRouteHandlerResources" - }, - ", { pageViews: { value: number; }; totalPageLoadDuration: { value: number; }; backEnd: { value: number; }; frontEnd: { value: number; }; }, ", - "APMRouteCreateOptions", ">; \"GET /internal/apm/observability_overview/has_data\": ", "ServerRoute", "<\"GET /internal/apm/observability_overview/has_data\", undefined, ", diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 22d5292e01528..51bd8b5ba4213 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github summary: API docs for the apm plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index a4e6037e7b41c..2bf8f6d1b2d51 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github summary: API docs for the banners plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index d91d6b14b30bf..b30e2db5d784f 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github summary: API docs for the bfetch plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 964bbe8ce5872..447683f585321 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github summary: API docs for the canvas plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 9e2f532071351..01740e93b83fc 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github summary: API docs for the cases plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index ac24cd50d2d6b..e3255cd38c663 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github summary: API docs for the charts plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 34b7f273f271e..1e52786a522d5 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github summary: API docs for the cloud plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index c6ac3bd0c1ee7..2886ff662f997 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github summary: API docs for the cloudSecurityPosture plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 5d5de2b8f163c..f9595356a14ce 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github summary: API docs for the console plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index f85640721d867..67009a44f3de8 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github summary: API docs for the controls plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/core.devdocs.json b/api_docs/core.devdocs.json index 6f06c69c9a35c..78f4a5a65e08d 100644 --- a/api_docs/core.devdocs.json +++ b/api_docs/core.devdocs.json @@ -13969,9 +13969,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; child: (opts: ", "ClientOptions", @@ -16380,9 +16380,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; child: (opts: ", "ClientOptions", @@ -17583,9 +17583,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; child: (opts: ", "ClientOptions", @@ -21106,9 +21106,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; child: (opts: ", "ClientOptions", @@ -24869,9 +24869,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; child: (opts: ", "ClientOptions", diff --git a/api_docs/core.mdx b/api_docs/core.mdx index 42dd8263b124e..9bf639c6ceed3 100644 --- a/api_docs/core.mdx +++ b/api_docs/core.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core title: "core" image: https://source.unsplash.com/400x175/?github summary: API docs for the core plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/core_application.mdx b/api_docs/core_application.mdx index f71fa5999f448..9b15a4c99728b 100644 --- a/api_docs/core_application.mdx +++ b/api_docs/core_application.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-application title: "core.application" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.application plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.application'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/core_chrome.mdx b/api_docs/core_chrome.mdx index ff3e958e0529f..8ecc59ccbebed 100644 --- a/api_docs/core_chrome.mdx +++ b/api_docs/core_chrome.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-chrome title: "core.chrome" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.chrome plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.chrome'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/core_http.mdx b/api_docs/core_http.mdx index 23bd766d9ae5d..e674a58a1557d 100644 --- a/api_docs/core_http.mdx +++ b/api_docs/core_http.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-http title: "core.http" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.http plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.http'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/core_saved_objects.mdx b/api_docs/core_saved_objects.mdx index bac90d13acfc3..04a7d497d1b01 100644 --- a/api_docs/core_saved_objects.mdx +++ b/api_docs/core_saved_objects.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-savedObjects title: "core.savedObjects" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.savedObjects plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.savedObjects'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 1992adc2ffa81..f04be45f934fe 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github summary: API docs for the customIntegrations plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index a05ab42c32be8..98dea779023b5 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github summary: API docs for the dashboard plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 80ea33452576a..cea698f443ce0 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the dashboardEnhanced plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index a9cbb8be306c9..0c8ca92075473 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -4576,42 +4576,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.isFilters", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isFilters", - "description": [], - "signature": [ - "(x: unknown) => x is ", - "Filter", - "[]" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.isFilters.$1", - "type": "Unknown", - "tags": [], - "label": "x", - "description": [], - "signature": [ - "unknown" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.isPartialResponse", @@ -4701,13 +4665,7 @@ "description": [], "signature": [ "(x: unknown) => x is ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - } + "TimeRange" ], "path": "src/plugins/data/common/query/timefilter/is_time_range.ts", "deprecated": false, @@ -8333,19 +8291,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.FilterStateStore", - "type": "Enum", - "tags": [], - "label": "FilterStateStore", - "description": [ - "\r\n Filter,\r\nAn enum to denote whether a filter is specific to an application's context or whether it should be applied globally." - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.KBN_FIELD_TYPES", @@ -8503,13 +8448,7 @@ ], "signature": [ "{ calculateAutoTimeExpression: (range: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", ") => string | undefined; createAggConfigs: (indexPattern: ", { "pluginId": "dataViews", @@ -8667,27 +8606,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.EsQueryConfig", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "EsQueryConfig", - "description": [], - "signature": [ - "KueryQueryOptions", - " & { allowLeadingWildcards: boolean; queryStringOptions: ", - "SerializableRecord", - "; ignoreFilterIfFieldNotInIndex: boolean; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.EsQuerySortValue", @@ -8741,40 +8659,13 @@ " | ", "Query", "[] | undefined; timeRange?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", " | undefined; }" ], "path": "src/plugins/data/common/search/expressions/kibana_context_type.ts", "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.ExistsFilter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "ExistsFilter", - "description": [], - "signature": [ - "Filter", - " & { meta: ", - "FilterMeta", - "; query: { exists?: { field: string; } | undefined; }; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.ExpressionFunctionKibana", @@ -8918,129 +8809,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.Filter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "Filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [ - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/view_alert/view_alert_route.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/view_alert/view_alert_route.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" - } - ], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.IAggConfig", @@ -9573,42 +9341,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.KueryNode", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "KueryNode", - "description": [], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.MatchAllFilter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "MatchAllFilter", - "description": [], - "signature": [ - "Filter", - " & { meta: MatchAllFilterMeta; query: { match_all: ", - "QueryDslMatchAllQuery", - "; }; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.NowProviderInternalContract", @@ -9653,43 +9385,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.PhraseFilter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "PhraseFilter", - "description": [], - "signature": [ - "Filter", - " & { meta: PhraseFilterMeta; query: { match_phrase?: Partial> | undefined; match?: Partial> | undefined; }; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.Query", - "type": "Type", - "tags": [], - "label": "Query", - "description": [], - "signature": [ - "{ query: string | { [key: string]: any; }; language: string; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false, - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.QueryState", @@ -9701,13 +9396,7 @@ ], "signature": [ "{ time?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", " | undefined; refreshInterval?: ", { "pluginId": "data", @@ -9726,44 +9415,6 @@ "deprecated": false, "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-public.RangeFilter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "RangeFilter", - "description": [], - "signature": [ - "Filter", - " & { meta: ", - "RangeFilterMeta", - "; query: { range: { [key: string]: ", - "RangeFilterParams", - "; }; }; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.RangeFilterParams", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "RangeFilterParams", - "description": [], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-public.RefreshInterval", @@ -9838,15387 +9489,1738 @@ }, { "parentPluginId": "data", - "id": "def-public.TimeRange", + "id": "def-public.TypeMeta", "type": "Type", - "tags": [ - "deprecated", - "deprecated" - ], - "label": "TimeRange", + "tags": [], + "label": "TypeMeta", "description": [ - "\n" + "\nInterface for metadata about rollup indices" ], "signature": [ - "{ from: string; to: string; mode?: \"absolute\" | \"relative\" | undefined; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [ - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/locator.ts" - }, + "{ aggs?: Record | undefined; params?: { rollup_index: string; } | undefined; }" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "data", + "id": "def-public.AggGroupLabels", + "type": "Object", + "tags": [], + "label": "AggGroupLabels", + "description": [], + "path": "src/plugins/data/common/search/aggs/agg_groups.ts", + "deprecated": false, + "children": [ { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/types.ts" + "parentPluginId": "data", + "id": "def-public.AggGroupLabels.AggGroupNames.Buckets", + "type": "string", + "tags": [], + "label": "[AggGroupNames.Buckets]", + "description": [], + "path": "src/plugins/data/common/search/aggs/agg_groups.ts", + "deprecated": false }, { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/types.ts" + "parentPluginId": "data", + "id": "def-public.AggGroupLabels.AggGroupNames.Metrics", + "type": "string", + "tags": [], + "label": "[AggGroupNames.Metrics]", + "description": [], + "path": "src/plugins/data/common/search/aggs/agg_groups.ts", + "deprecated": false }, { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/search_embeddable_factory.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/search_embeddable_factory.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/layout/types.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/layout/types.ts" - }, + "parentPluginId": "data", + "id": "def-public.AggGroupLabels.AggGroupNames.None", + "type": "string", + "tags": [], + "label": "[AggGroupNames.None]", + "description": [], + "path": "src/plugins/data/common/search/aggs/agg_groups.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-public.AggGroupNames", + "type": "Object", + "tags": [], + "label": "AggGroupNames", + "description": [], + "signature": [ + "{ readonly Buckets: \"buckets\"; readonly Metrics: \"metrics\"; readonly None: \"none\"; }" + ], + "path": "src/plugins/data/common/search/aggs/agg_groups.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-public.exporters", + "type": "Object", + "tags": [], + "label": "exporters", + "description": [], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "children": [ { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/top_nav/discover_topnav.tsx" + "parentPluginId": "data", + "id": "def-public.exporters.datatableToCSV", + "type": "Function", + "tags": [], + "label": "datatableToCSV", + "description": [], + "signature": [ + "({ columns, rows }: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + }, + ", { csvSeparator, quoteValues, formatFactory, raw, escapeFormulaValues }: CSVOptions) => string" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.exporters.datatableToCSV.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + } + ], + "path": "src/plugins/data/common/exports/export_csv.tsx", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.exporters.datatableToCSV.$2", + "type": "Object", + "tags": [], + "label": "__1", + "description": [], + "signature": [ + "CSVOptions" + ], + "path": "src/plugins/data/common/exports/export_csv.tsx", + "deprecated": false + } + ] }, { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/top_nav/discover_topnav.tsx" + "parentPluginId": "data", + "id": "def-public.exporters.CSV_MIME_TYPE", + "type": "string", + "tags": [], + "label": "CSV_MIME_TYPE", + "description": [], + "path": "src/plugins/data/public/index.ts", + "deprecated": false }, { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" + "parentPluginId": "data", + "id": "def-public.exporters.cellHasFormulas", + "type": "Function", + "tags": [], + "label": "cellHasFormulas", + "description": [], + "signature": [ + "(val: string) => boolean" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.exporters.cellHasFormulas.$1", + "type": "string", + "tags": [], + "label": "val", + "description": [], + "path": "src/plugins/data/common/exports/formula_checks.ts", + "deprecated": false + } + ] }, { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" - }, + "parentPluginId": "data", + "id": "def-public.exporters.tableHasFormulas", + "type": "Function", + "tags": [], + "label": "tableHasFormulas", + "description": [], + "signature": [ + "(columns: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[], rows: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableRow", + "text": "DatatableRow" + }, + "[]) => boolean" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.exporters.tableHasFormulas.$1", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]" + ], + "path": "src/plugins/data/common/exports/formula_checks.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.exporters.tableHasFormulas.$2", + "type": "Array", + "tags": [], + "label": "rows", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableRow", + "text": "DatatableRow" + }, + "[]" + ], + "path": "src/plugins/data/common/exports/formula_checks.ts", + "deprecated": false + } + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-public.indexPatterns", + "type": "Object", + "tags": [], + "label": "indexPatterns", + "description": [], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "children": [ { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" + "parentPluginId": "data", + "id": "def-public.indexPatterns.ILLEGAL_CHARACTERS_KEY", + "type": "string", + "tags": [], + "label": "ILLEGAL_CHARACTERS_KEY", + "description": [], + "path": "src/plugins/data/public/index.ts", + "deprecated": false }, { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/visualize_app/types.ts" + "parentPluginId": "data", + "id": "def-public.indexPatterns.CONTAINS_SPACES_KEY", + "type": "string", + "tags": [], + "label": "CONTAINS_SPACES_KEY", + "description": [], + "path": "src/plugins/data/public/index.ts", + "deprecated": false }, { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/visualize_app/types.ts" + "parentPluginId": "data", + "id": "def-public.indexPatterns.ILLEGAL_CHARACTERS_VISIBLE", + "type": "Array", + "tags": [], + "label": "ILLEGAL_CHARACTERS_VISIBLE", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" + "parentPluginId": "data", + "id": "def-public.indexPatterns.ILLEGAL_CHARACTERS", + "type": "Array", + "tags": [], + "label": "ILLEGAL_CHARACTERS", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/types.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/types.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/types.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/top_nav/show_share_modal.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/top_nav/show_share_modal.tsx" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/public/services/kibana/options_list.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/public/services/kibana/options_list.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/locator.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/locator.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" + "parentPluginId": "data", + "id": "def-public.indexPatterns.isFilterable", + "type": "Function", + "tags": [], + "label": "isFilterable", + "description": [], + "signature": [ + "(field: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + ") => boolean" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.indexPatterns.isFilterable.$1", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + } + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false + } + ] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/reducers/map/types.ts" + "parentPluginId": "data", + "id": "def-public.indexPatterns.isNestedField", + "type": "Function", + "tags": [], + "label": "isNestedField", + "description": [], + "signature": [ + "(field: HasSubtype) => boolean" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.indexPatterns.isNestedField.$1", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "signature": [ + "{ subType?: ", + "IFieldSubType", + " | undefined; }" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false + } + ] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/reducers/map/types.ts" + "parentPluginId": "data", + "id": "def-public.indexPatterns.isMultiField", + "type": "Function", + "tags": [], + "label": "isMultiField", + "description": [], + "signature": [ + "(field: HasSubtype) => boolean" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.indexPatterns.isMultiField.$1", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "signature": [ + "{ subType?: ", + "IFieldSubType", + " | undefined; }" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false + } + ] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/selectors/map_selectors.ts" + "parentPluginId": "data", + "id": "def-public.indexPatterns.getFieldSubtypeMulti", + "type": "Function", + "tags": [], + "label": "getFieldSubtypeMulti", + "description": [], + "signature": [ + "(field: HasSubtype) => ", + "IFieldSubTypeMulti", + " | undefined" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.indexPatterns.getFieldSubtypeMulti.$1", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "signature": [ + "{ subType?: ", + "IFieldSubType", + " | undefined; }" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false + } + ] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/selectors/map_selectors.ts" + "parentPluginId": "data", + "id": "def-public.indexPatterns.getFieldSubtypeNested", + "type": "Function", + "tags": [], + "label": "getFieldSubtypeNested", + "description": [], + "signature": [ + "(field: HasSubtype) => ", + "IFieldSubTypeNested", + " | undefined" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.indexPatterns.getFieldSubtypeNested.$1", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "signature": [ + "{ subType?: ", + "IFieldSubType", + " | undefined; }" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false + } + ] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/actions/map_actions.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/actions/map_actions.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/url_state/global_sync.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/url_state/global_sync.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/index.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/index.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/types/embeddables.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/types/embeddables.ts" - }, - { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" - }, - { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" - }, - { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" - }, - { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/url_state.ts" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/url_state.ts" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_container.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_container.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_container.ts" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg_group.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg_group.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable_factory.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable_factory.ts" - }, - { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/timelion_vis_fn.ts" - }, - { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/timelion_vis_fn.ts" - }, - { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts" - }, - { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts" - }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx" - }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_fn.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_fn.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_request_handler.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_request_handler.ts" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/common/locator.ts" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/common/locator.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/types.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/types.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/control_types/options_list/types.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/control_types/options_list/types.ts" - }, - { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts" - }, - { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts" - }, - { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts" - }, - { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/connected_components/timeslider/timeslider.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/connected_components/timeslider/timeslider.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/common/util/date_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/common/util/date_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/common/util/date_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/types.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/types.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/types.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/functions/timelion.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/functions/timelion.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/data_model/time_cache.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/data_model/time_cache.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/data_model/time_cache.ts" - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.TypeMeta", - "type": "Type", - "tags": [], - "label": "TypeMeta", - "description": [ - "\nInterface for metadata about rollup indices" - ], - "signature": [ - "{ aggs?: Record | undefined; params?: { rollup_index: string; } | undefined; }" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "initialIsOpen": false - } - ], - "objects": [ - { - "parentPluginId": "data", - "id": "def-public.AggGroupLabels", - "type": "Object", - "tags": [], - "label": "AggGroupLabels", - "description": [], - "path": "src/plugins/data/common/search/aggs/agg_groups.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.AggGroupLabels.AggGroupNames.Buckets", - "type": "string", - "tags": [], - "label": "[AggGroupNames.Buckets]", - "description": [], - "path": "src/plugins/data/common/search/aggs/agg_groups.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.AggGroupLabels.AggGroupNames.Metrics", - "type": "string", - "tags": [], - "label": "[AggGroupNames.Metrics]", - "description": [], - "path": "src/plugins/data/common/search/aggs/agg_groups.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.AggGroupLabels.AggGroupNames.None", - "type": "string", - "tags": [], - "label": "[AggGroupNames.None]", - "description": [], - "path": "src/plugins/data/common/search/aggs/agg_groups.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.AggGroupNames", - "type": "Object", - "tags": [], - "label": "AggGroupNames", - "description": [], - "signature": [ - "{ readonly Buckets: \"buckets\"; readonly Metrics: \"metrics\"; readonly None: \"none\"; }" - ], - "path": "src/plugins/data/common/search/aggs/agg_groups.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters", - "type": "Object", - "tags": [ - "deprecated" - ], - "label": "esFilters", - "description": [ - "\nFilter helpers namespace:" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.FILTERS", - "type": "Object", - "tags": [], - "label": "FILTERS", - "description": [], - "signature": [ - "typeof ", - "FILTERS" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.FilterStateStore", - "type": "Object", - "tags": [], - "label": "FilterStateStore", - "description": [], - "signature": [ - "typeof ", - "FilterStateStore" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildEmptyFilter", - "type": "Function", - "tags": [], - "label": "buildEmptyFilter", - "description": [], - "signature": [ - "(isPinned: boolean, index?: string | undefined) => ", - "Filter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildEmptyFilter.$1", - "type": "boolean", - "tags": [], - "label": "isPinned", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildEmptyFilter.$2", - "type": "string", - "tags": [], - "label": "index", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildPhrasesFilter", - "type": "Function", - "tags": [], - "label": "buildPhrasesFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", params: PhraseFilterValue[], indexPattern: ", - "DataViewBase", - ") => ", - "PhrasesFilter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildPhrasesFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildPhrasesFilter.$2", - "type": "Array", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "PhraseFilterValue[]" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildPhrasesFilter.$3", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildExistsFilter", - "type": "Function", - "tags": [], - "label": "buildExistsFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", indexPattern: ", - "DataViewBase", - ") => ", - "ExistsFilter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildExistsFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildExistsFilter.$2", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildPhraseFilter", - "type": "Function", - "tags": [], - "label": "buildPhraseFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", value: PhraseFilterValue, indexPattern: ", - "DataViewBase", - ") => ", - "PhraseFilter", - " | ", - "ScriptedPhraseFilter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildPhraseFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildPhraseFilter.$2", - "type": "CompoundType", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "string | number | boolean" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildPhraseFilter.$3", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildQueryFilter", - "type": "Function", - "tags": [], - "label": "buildQueryFilter", - "description": [], - "signature": [ - "(query: (Record & { query_string?: { query: string; fields?: string[] | undefined; } | undefined; }) | undefined, index: string, alias?: string | undefined, meta?: ", - "FilterMeta", - " | undefined) => { query: (Record & { query_string?: { query: string; fields?: string[] | undefined; } | undefined; }) | undefined; meta: { alias: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index: string; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; }" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildQueryFilter.$1", - "type": "CompoundType", - "tags": [], - "label": "query", - "description": [], - "signature": [ - "(Record & { query_string?: { query: string; fields?: string[] | undefined; } | undefined; }) | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildQueryFilter.$2", - "type": "string", - "tags": [], - "label": "index", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildQueryFilter.$3", - "type": "string", - "tags": [], - "label": "alias", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildQueryFilter.$4", - "type": "Object", - "tags": [], - "label": "meta", - "description": [], - "signature": [ - "FilterMeta", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildRangeFilter", - "type": "Function", - "tags": [], - "label": "buildRangeFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", params: ", - "RangeFilterParams", - ", indexPattern?: ", - "DataViewBase", - " | undefined, formattedValue?: string | undefined) => ", - "RangeFilter", - " | ", - "ScriptedRangeFilter", - " | MatchAllRangeFilter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildRangeFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildRangeFilter.$2", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "RangeFilterParams" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildRangeFilter.$3", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "DataViewBase", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.buildRangeFilter.$4", - "type": "string", - "tags": [], - "label": "formattedValue", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.isPhraseFilter", - "type": "Function", - "tags": [], - "label": "isPhraseFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => filter is ", - "PhraseFilter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.isPhraseFilter.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.isExistsFilter", - "type": "Function", - "tags": [], - "label": "isExistsFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => filter is ", - "ExistsFilter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.isExistsFilter.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.isPhrasesFilter", - "type": "Function", - "tags": [], - "label": "isPhrasesFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => filter is ", - "PhrasesFilter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.isPhrasesFilter.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.isRangeFilter", - "type": "Function", - "tags": [], - "label": "isRangeFilter", - "description": [], - "signature": [ - "(filter?: ", - "Filter", - " | undefined) => filter is ", - "RangeFilter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.isRangeFilter.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "Filter", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.isMatchAllFilter", - "type": "Function", - "tags": [], - "label": "isMatchAllFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => filter is ", - "MatchAllFilter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.isMatchAllFilter.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.isQueryStringFilter", - "type": "Function", - "tags": [], - "label": "isQueryStringFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => filter is ", - "QueryStringFilter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.isQueryStringFilter.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.isFilterPinned", - "type": "Function", - "tags": [], - "label": "isFilterPinned", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => boolean | undefined" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.isFilterPinned.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.toggleFilterNegated", - "type": "Function", - "tags": [], - "label": "toggleFilterNegated", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => { meta: { negate: boolean; alias?: string | null | undefined; disabled?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: { store: ", - "FilterStateStore", - "; } | undefined; query?: Record | undefined; }" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.toggleFilterNegated.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.disableFilter", - "type": "Function", - "tags": [], - "label": "disableFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => ", - "Filter" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.disableFilter.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.getPhraseFilterField", - "type": "Function", - "tags": [], - "label": "getPhraseFilterField", - "description": [], - "signature": [ - "(filter: ", - "PhraseFilter", - ") => string" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.getPhraseFilterField.$1", - "type": "CompoundType", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "Filter", - " & { meta: PhraseFilterMeta; query: { match_phrase?: Partial> | undefined; match?: Partial> | undefined; }; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.getPhraseFilterValue", - "type": "Function", - "tags": [], - "label": "getPhraseFilterValue", - "description": [], - "signature": [ - "(filter: ", - "PhraseFilter", - " | ", - "ScriptedPhraseFilter", - ") => PhraseFilterValue" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.getPhraseFilterValue.$1", - "type": "CompoundType", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "PhraseFilter", - " | ", - "ScriptedPhraseFilter" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.getDisplayValueFromFilter", - "type": "Function", - "tags": [], - "label": "getDisplayValueFromFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ", indexPatterns: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - "[]) => string" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.getDisplayValueFromFilter.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "src/plugins/data/public/query/filter_manager/lib/get_display_value.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.getDisplayValueFromFilter.$2", - "type": "Array", - "tags": [], - "label": "indexPatterns", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - "[]" - ], - "path": "src/plugins/data/public/query/filter_manager/lib/get_display_value.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.compareFilters", - "type": "Function", - "tags": [], - "label": "compareFilters", - "description": [], - "signature": [ - "(first: ", - "Filter", - " | ", - "Filter", - "[], second: ", - "Filter", - " | ", - "Filter", - "[], comparatorOptions?: ", - "FilterCompareOptions", - " | undefined) => boolean" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.compareFilters.$1", - "type": "CompoundType", - "tags": [], - "label": "first", - "description": [], - "signature": [ - "Filter", - " | ", - "Filter", - "[]" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.compareFilters.$2", - "type": "CompoundType", - "tags": [], - "label": "second", - "description": [], - "signature": [ - "Filter", - " | ", - "Filter", - "[]" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.compareFilters.$3", - "type": "Object", - "tags": [], - "label": "comparatorOptions", - "description": [], - "signature": [ - "FilterCompareOptions", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.COMPARE_ALL_OPTIONS", - "type": "Object", - "tags": [], - "label": "COMPARE_ALL_OPTIONS", - "description": [], - "signature": [ - "FilterCompareOptions" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.generateFilters", - "type": "Function", - "tags": [], - "label": "generateFilters", - "description": [], - "signature": [ - "(filterManager: ", - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataQueryPluginApi", - "section": "def-public.FilterManager", - "text": "FilterManager" - }, - ", field: string | ", - "DataViewFieldBase", - ", values: any, operation: string, index: ", - "DataViewBase", - ") => ", - "Filter", - "[]" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.generateFilters.$1", - "type": "Object", - "tags": [], - "label": "filterManager", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataQueryPluginApi", - "section": "def-public.FilterManager", - "text": "FilterManager" - } - ], - "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.generateFilters.$2", - "type": "CompoundType", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "string | ", - "DataViewFieldBase" - ], - "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.generateFilters.$3", - "type": "Any", - "tags": [], - "label": "values", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.generateFilters.$4", - "type": "string", - "tags": [], - "label": "operation", - "description": [], - "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.generateFilters.$5", - "type": "Object", - "tags": [], - "label": "index", - "description": [], - "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" - ], - "path": "src/plugins/data/public/query/filter_manager/lib/generate_filters.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.onlyDisabledFiltersChanged", - "type": "Function", - "tags": [], - "label": "onlyDisabledFiltersChanged", - "description": [], - "signature": [ - "(newFilters?: ", - "Filter", - "[] | undefined, oldFilters?: ", - "Filter", - "[] | undefined) => boolean" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.onlyDisabledFiltersChanged.$1", - "type": "Array", - "tags": [], - "label": "newFilters", - "description": [], - "signature": [ - "Filter", - "[] | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.onlyDisabledFiltersChanged.$2", - "type": "Array", - "tags": [], - "label": "oldFilters", - "description": [], - "signature": [ - "Filter", - "[] | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esFilters.mapAndFlattenFilters", - "type": "Function", - "tags": [], - "label": "mapAndFlattenFilters", - "description": [], - "signature": [ - "(filters: ", - "Filter", - "[]) => ", - "Filter", - "[]" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esFilters.mapAndFlattenFilters.$1", - "type": "Array", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - "Filter", - "[]" - ], - "path": "src/plugins/data/public/query/filter_manager/lib/map_and_flatten_filters.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.esKuery", - "type": "Object", - "tags": [ - "deprecated" - ], - "label": "esKuery", - "description": [], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [ - { - "plugin": "apm", - "path": "x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx" - }, - { - "plugin": "apm", - "path": "x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx" - }, - { - "plugin": "apm", - "path": "x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx" - } - ], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esKuery.fromKueryExpression", - "type": "Function", - "tags": [], - "label": "fromKueryExpression", - "description": [], - "signature": [ - "(expression: string | ", - "QueryDslQueryContainer", - ", parseOptions?: Partial<", - "KueryParseOptions", - "> | undefined) => ", - "KueryNode" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esKuery.fromKueryExpression.$1", - "type": "CompoundType", - "tags": [], - "label": "expression", - "description": [], - "signature": [ - "string | ", - "QueryDslQueryContainer" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esKuery.fromKueryExpression.$2", - "type": "Object", - "tags": [], - "label": "parseOptions", - "description": [], - "signature": [ - "Partial<", - "KueryParseOptions", - "> | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esKuery.toElasticsearchQuery", - "type": "Function", - "tags": [], - "label": "toElasticsearchQuery", - "description": [], - "signature": [ - "(node: ", - "KueryNode", - ", indexPattern?: ", - "DataViewBase", - " | undefined, config?: ", - "KueryQueryOptions", - " | undefined, context?: Record | undefined) => ", - "QueryDslQueryContainer" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esKuery.toElasticsearchQuery.$1", - "type": "Object", - "tags": [], - "label": "node", - "description": [], - "signature": [ - "KueryNode" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esKuery.toElasticsearchQuery.$2", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "DataViewBase", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esKuery.toElasticsearchQuery.$3", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "KueryQueryOptions", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esKuery.toElasticsearchQuery.$4", - "type": "Object", - "tags": [], - "label": "context", - "description": [], - "signature": [ - "Record | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery", - "type": "Object", - "tags": [ - "deprecated" - ], - "label": "esQuery", - "description": [], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esQuery.buildEsQuery", - "type": "Function", - "tags": [], - "label": "buildEsQuery", - "description": [], - "signature": [ - "(indexPattern: ", - "DataViewBase", - " | undefined, queries: ", - "Query", - " | ", - "Query", - "[], filters: ", - "Filter", - " | ", - "Filter", - "[], config?: ", - "EsQueryConfig", - " | undefined) => { bool: ", - "BoolQuery", - "; }" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esQuery.buildEsQuery.$1", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "DataViewBase", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery.buildEsQuery.$2", - "type": "CompoundType", - "tags": [], - "label": "queries", - "description": [], - "signature": [ - "Query", - " | ", - "Query", - "[]" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery.buildEsQuery.$3", - "type": "CompoundType", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - "Filter", - " | ", - "Filter", - "[]" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery.buildEsQuery.$4", - "type": "CompoundType", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "EsQueryConfig", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery.getEsQueryConfig", - "type": "Function", - "tags": [], - "label": "getEsQueryConfig", - "description": [], - "signature": [ - "(config: KibanaConfig) => ", - "EsQueryConfig" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esQuery.getEsQueryConfig.$1", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "KibanaConfig" - ], - "path": "src/plugins/data/common/es_query/get_es_query_config.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery.buildQueryFromFilters", - "type": "Function", - "tags": [], - "label": "buildQueryFromFilters", - "description": [], - "signature": [ - "(filters: ", - "Filter", - "[] | undefined, indexPattern: ", - "DataViewBase", - " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => ", - "BoolQuery" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esQuery.buildQueryFromFilters.$1", - "type": "Array", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - "Filter", - "[] | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery.buildQueryFromFilters.$2", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "DataViewBase", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery.buildQueryFromFilters.$3", - "type": "CompoundType", - "tags": [], - "label": "ignoreFilterIfFieldNotInIndex", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery.luceneStringToDsl", - "type": "Function", - "tags": [], - "label": "luceneStringToDsl", - "description": [], - "signature": [ - "(query: string | ", - "QueryDslQueryContainer", - ") => ", - "QueryDslQueryContainer" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esQuery.luceneStringToDsl.$1", - "type": "CompoundType", - "tags": [], - "label": "query", - "description": [], - "signature": [ - "string | ", - "QueryDslQueryContainer" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery.decorateQuery", - "type": "Function", - "tags": [], - "label": "decorateQuery", - "description": [], - "signature": [ - "(query: ", - "QueryDslQueryContainer", - ", queryStringOptions: string | ", - "SerializableRecord", - ", dateFormatTZ?: string | undefined) => ", - "QueryDslQueryContainer" - ], - "path": "src/plugins/data/public/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.esQuery.decorateQuery.$1", - "type": "Object", - "tags": [], - "label": "query", - "description": [], - "signature": [ - "QueryDslQueryContainer" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery.decorateQuery.$2", - "type": "CompoundType", - "tags": [], - "label": "queryStringOptions", - "description": [], - "signature": [ - "string | ", - "SerializableRecord" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.esQuery.decorateQuery.$3", - "type": "string", - "tags": [], - "label": "dateFormatTZ", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.exporters", - "type": "Object", - "tags": [], - "label": "exporters", - "description": [], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.exporters.datatableToCSV", - "type": "Function", - "tags": [], - "label": "datatableToCSV", - "description": [], - "signature": [ - "({ columns, rows }: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - }, - ", { csvSeparator, quoteValues, formatFactory, raw, escapeFormulaValues }: CSVOptions) => string" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.exporters.datatableToCSV.$1", - "type": "Object", - "tags": [], - "label": "__0", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - } - ], - "path": "src/plugins/data/common/exports/export_csv.tsx", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.exporters.datatableToCSV.$2", - "type": "Object", - "tags": [], - "label": "__1", - "description": [], - "signature": [ - "CSVOptions" - ], - "path": "src/plugins/data/common/exports/export_csv.tsx", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.exporters.CSV_MIME_TYPE", - "type": "string", - "tags": [], - "label": "CSV_MIME_TYPE", - "description": [], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.exporters.cellHasFormulas", - "type": "Function", - "tags": [], - "label": "cellHasFormulas", - "description": [], - "signature": [ - "(val: string) => boolean" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.exporters.cellHasFormulas.$1", - "type": "string", - "tags": [], - "label": "val", - "description": [], - "path": "src/plugins/data/common/exports/formula_checks.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.exporters.tableHasFormulas", - "type": "Function", - "tags": [], - "label": "tableHasFormulas", - "description": [], - "signature": [ - "(columns: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - "[], rows: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableRow", - "text": "DatatableRow" - }, - "[]) => boolean" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.exporters.tableHasFormulas.$1", - "type": "Array", - "tags": [], - "label": "columns", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - "[]" - ], - "path": "src/plugins/data/common/exports/formula_checks.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.exporters.tableHasFormulas.$2", - "type": "Array", - "tags": [], - "label": "rows", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableRow", - "text": "DatatableRow" - }, - "[]" - ], - "path": "src/plugins/data/common/exports/formula_checks.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.indexPatterns", - "type": "Object", - "tags": [], - "label": "indexPatterns", - "description": [], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.ILLEGAL_CHARACTERS_KEY", - "type": "string", - "tags": [], - "label": "ILLEGAL_CHARACTERS_KEY", - "description": [], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.CONTAINS_SPACES_KEY", - "type": "string", - "tags": [], - "label": "CONTAINS_SPACES_KEY", - "description": [], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.ILLEGAL_CHARACTERS_VISIBLE", - "type": "Array", - "tags": [], - "label": "ILLEGAL_CHARACTERS_VISIBLE", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.ILLEGAL_CHARACTERS", - "type": "Array", - "tags": [], - "label": "ILLEGAL_CHARACTERS", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.isFilterable", - "type": "Function", - "tags": [], - "label": "isFilterable", - "description": [], - "signature": [ - "(field: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - ") => boolean" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.isFilterable.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - } - ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.isNestedField", - "type": "Function", - "tags": [], - "label": "isNestedField", - "description": [], - "signature": [ - "(field: HasSubtype) => boolean" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.isNestedField.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ subType?: ", - "IFieldSubType", - " | undefined; }" - ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.isMultiField", - "type": "Function", - "tags": [], - "label": "isMultiField", - "description": [], - "signature": [ - "(field: HasSubtype) => boolean" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.isMultiField.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ subType?: ", - "IFieldSubType", - " | undefined; }" - ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.getFieldSubtypeMulti", - "type": "Function", - "tags": [], - "label": "getFieldSubtypeMulti", - "description": [], - "signature": [ - "(field: HasSubtype) => ", - "IFieldSubTypeMulti", - " | undefined" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.getFieldSubtypeMulti.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ subType?: ", - "IFieldSubType", - " | undefined; }" - ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.getFieldSubtypeNested", - "type": "Function", - "tags": [], - "label": "getFieldSubtypeNested", - "description": [], - "signature": [ - "(field: HasSubtype) => ", - "IFieldSubTypeNested", - " | undefined" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.getFieldSubtypeNested.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ subType?: ", - "IFieldSubType", - " | undefined; }" - ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.validate", - "type": "Function", - "tags": [], - "label": "validate", - "description": [], - "signature": [ - "(indexPattern: string) => { ILLEGAL_CHARACTERS?: string[] | undefined; CONTAINS_SPACES?: boolean | undefined; }" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.indexPatterns.validate.$1", - "type": "string", - "tags": [], - "label": "indexPattern", - "description": [], - "path": "src/plugins/data_views/common/lib/validate_data_view.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.search", - "type": "Object", - "tags": [], - "label": "search", - "description": [], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs", - "type": "Object", - "tags": [], - "label": "aggs", - "description": [], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.CidrMask", - "type": "Object", - "tags": [], - "label": "CidrMask", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.CidrMask", - "text": "CidrMask" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.dateHistogramInterval", - "type": "Function", - "tags": [], - "label": "dateHistogramInterval", - "description": [], - "signature": [ - "(interval: string) => Interval" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.dateHistogramInterval.$1", - "type": "string", - "tags": [], - "label": "interval", - "description": [], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/date_histogram_interval.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.intervalOptions", - "type": "Array", - "tags": [], - "label": "intervalOptions", - "description": [], - "signature": [ - "({ display: string; val: string; enabled(agg: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IBucketAggConfig", - "text": "IBucketAggConfig" - }, - "): boolean; } | { display: string; val: string; })[]" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.InvalidEsCalendarIntervalError", - "type": "Object", - "tags": [], - "label": "InvalidEsCalendarIntervalError", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.InvalidEsCalendarIntervalError", - "text": "InvalidEsCalendarIntervalError" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.InvalidEsIntervalFormatError", - "type": "Object", - "tags": [], - "label": "InvalidEsIntervalFormatError", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.InvalidEsIntervalFormatError", - "text": "InvalidEsIntervalFormatError" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.IpAddress", - "type": "Object", - "tags": [], - "label": "IpAddress", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IpAddress", - "text": "IpAddress" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isDateHistogramBucketAggConfig", - "type": "Function", - "tags": [], - "label": "isDateHistogramBucketAggConfig", - "description": [], - "signature": [ - "(agg: any) => agg is ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IBucketDateHistogramAggConfig", - "text": "IBucketDateHistogramAggConfig" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isDateHistogramBucketAggConfig.$1", - "type": "Any", - "tags": [], - "label": "agg", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/search/aggs/buckets/date_histogram.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isNumberType", - "type": "Function", - "tags": [], - "label": "isNumberType", - "description": [], - "signature": [ - "(agg: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ") => boolean" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isNumberType.$1", - "type": "Object", - "tags": [], - "label": "agg", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - } - ], - "path": "src/plugins/data/common/search/aggs/buckets/migrate_include_exclude_format.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isStringType", - "type": "Function", - "tags": [], - "label": "isStringType", - "description": [], - "signature": [ - "(agg: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ") => boolean" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isStringType.$1", - "type": "Object", - "tags": [], - "label": "agg", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - } - ], - "path": "src/plugins/data/common/search/aggs/buckets/migrate_include_exclude_format.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isType", - "type": "Function", - "tags": [], - "label": "isType", - "description": [], - "signature": [ - "(...types: string[]) => (agg: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - ") => boolean" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isType.$1", - "type": "Array", - "tags": [], - "label": "types", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/data/common/search/aggs/buckets/migrate_include_exclude_format.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isValidEsInterval", - "type": "Function", - "tags": [], - "label": "isValidEsInterval", - "description": [], - "signature": [ - "(interval: string) => boolean" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isValidEsInterval.$1", - "type": "string", - "tags": [], - "label": "interval", - "description": [], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/is_valid_es_interval.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isValidInterval", - "type": "Function", - "tags": [], - "label": "isValidInterval", - "description": [], - "signature": [ - "(value: string, baseInterval?: string | undefined) => boolean" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isValidInterval.$1", - "type": "string", - "tags": [], - "label": "value", - "description": [], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/is_valid_interval.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.isValidInterval.$2", - "type": "string", - "tags": [], - "label": "baseInterval", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/is_valid_interval.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.parentPipelineType", - "type": "string", - "tags": [], - "label": "parentPipelineType", - "description": [], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.parseEsInterval", - "type": "Function", - "tags": [], - "label": "parseEsInterval", - "description": [], - "signature": [ - "(interval: string) => { value: number; unit: ", - "Unit", - "; type: \"calendar\" | \"fixed\"; }" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.parseEsInterval.$1", - "type": "string", - "tags": [], - "label": "interval", - "description": [], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_es_interval.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.parseInterval", - "type": "Function", - "tags": [], - "label": "parseInterval", - "description": [], - "signature": [ - "(interval: string) => moment.Duration | null" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.parseInterval.$1", - "type": "string", - "tags": [], - "label": "interval", - "description": [], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.propFilter", - "type": "Function", - "tags": [], - "label": "propFilter", - "description": [], - "signature": [ - "

(prop: P) => (list: T[], filters?: string | string[] | FilterFunc) => T[]" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.propFilter.$1", - "type": "Uncategorized", - "tags": [], - "label": "prop", - "description": [], - "signature": [ - "P" - ], - "path": "src/plugins/data/common/search/aggs/utils/prop_filter.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.siblingPipelineType", - "type": "string", - "tags": [], - "label": "siblingPipelineType", - "description": [], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.termsAggFilter", - "type": "Array", - "tags": [], - "label": "termsAggFilter", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.toAbsoluteDates", - "type": "Function", - "tags": [], - "label": "toAbsoluteDates", - "description": [], - "signature": [ - "(range: ", - "TimeRange", - ") => { from: Date; to: Date; } | undefined" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.aggs.toAbsoluteDates.$1", - "type": "Object", - "tags": [], - "label": "range", - "description": [], - "signature": [ - "{ from: string; to: string; mode?: \"absolute\" | \"relative\" | undefined; }" - ], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/to_absolute_dates.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.aggs.boundsDescendingRaw", - "type": "Array", - "tags": [], - "label": "boundsDescendingRaw", - "description": [], - "signature": [ - "({ bound: number; interval: moment.Duration; boundLabel: string; intervalLabel: string; } | { bound: moment.Duration; interval: moment.Duration; boundLabel: string; intervalLabel: string; })[]" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.getResponseInspectorStats", - "type": "Function", - "tags": [], - "label": "getResponseInspectorStats", - "description": [], - "signature": [ - "(resp?: ", - "SearchResponse", - "> | undefined, searchSource?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ISearchSource", - "text": "ISearchSource" - }, - " | undefined) => ", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.RequestStatistics", - "text": "RequestStatistics" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.getResponseInspectorStats.$1", - "type": "Object", - "tags": [], - "label": "resp", - "description": [], - "signature": [ - "SearchResponse", - "> | undefined" - ], - "path": "src/plugins/data/common/search/search_source/inspect/inspector_stats.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.getResponseInspectorStats.$2", - "type": "Object", - "tags": [], - "label": "searchSource", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ISearchSource", - "text": "ISearchSource" - }, - " | undefined" - ], - "path": "src/plugins/data/common/search/search_source/inspect/inspector_stats.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.tabifyAggResponse", - "type": "Function", - "tags": [], - "label": "tabifyAggResponse", - "description": [], - "signature": [ - "(aggConfigs: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfigs", - "text": "AggConfigs" - }, - ", esResponse: Record, respOpts?: Partial<", - "TabbedResponseWriterOptions", - "> | undefined) => ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - } - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.tabifyAggResponse.$1", - "type": "Object", - "tags": [], - "label": "aggConfigs", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfigs", - "text": "AggConfigs" - } - ], - "path": "src/plugins/data/common/search/tabify/tabify.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.tabifyAggResponse.$2", - "type": "Object", - "tags": [], - "label": "esResponse", - "description": [], - "signature": [ - "{ [x: string]: any; }" - ], - "path": "src/plugins/data/common/search/tabify/tabify.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.tabifyAggResponse.$3", - "type": "Object", - "tags": [], - "label": "respOpts", - "description": [], - "signature": [ - "Partial<", - "TabbedResponseWriterOptions", - "> | undefined" - ], - "path": "src/plugins/data/common/search/tabify/tabify.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.search.tabifyGetColumns", - "type": "Function", - "tags": [], - "label": "tabifyGetColumns", - "description": [], - "signature": [ - "(aggs: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - "[], minimalColumns: boolean) => ", - "TabbedAggColumn", - "[]" - ], - "path": "src/plugins/data/public/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-public.search.tabifyGetColumns.$1", - "type": "Array", - "tags": [], - "label": "aggs", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - "[]" - ], - "path": "src/plugins/data/common/search/tabify/get_columns.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.search.tabifyGetColumns.$2", - "type": "boolean", - "tags": [], - "label": "minimalColumns", - "description": [], - "path": "src/plugins/data/common/search/tabify/get_columns.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-public.UI_SETTINGS", - "type": "Object", - "tags": [], - "label": "UI_SETTINGS", - "description": [], - "signature": [ - "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; readonly DATE_FORMAT: \"dateFormat\"; readonly DATEFORMAT_TZ: \"dateFormat:tz\"; }" - ], - "path": "src/plugins/data/common/constants.ts", - "deprecated": false, - "initialIsOpen": false - } - ], - "setup": { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginSetup", - "type": "Interface", - "tags": [], - "label": "DataPublicPluginSetup", - "description": [ - "\nData plugin public Setup contract" - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginSetup.search", - "type": "Object", - "tags": [], - "label": "search", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.ISearchSetup", - "text": "ISearchSetup" - } - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginSetup.query", - "type": "Object", - "tags": [], - "label": "query", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataQueryPluginApi", - "section": "def-public.QuerySetup", - "text": "QuerySetup" - } - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false - } - ], - "lifecycle": "setup", - "initialIsOpen": true - }, - "start": { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginStart", - "type": "Interface", - "tags": [], - "label": "DataPublicPluginStart", - "description": [ - "\nData plugin public Start contract" - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginStart.actions", - "type": "Object", - "tags": [], - "label": "actions", - "description": [ - "\nfilter creation utilities\n{@link DataPublicPluginStartActions}" - ], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataPluginApi", - "section": "def-public.DataPublicPluginStartActions", - "text": "DataPublicPluginStartActions" - } - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginStart.dataViews", - "type": "Object", - "tags": [], - "label": "dataViews", - "description": [ - "\ndata views service\n{@link DataViewsContract}" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "public", - "docId": "kibDataViewsPluginApi", - "section": "def-public.DataViewsServicePublic", - "text": "DataViewsServicePublic" - } - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginStart.datatableUtilities", - "type": "Object", - "tags": [], - "label": "datatableUtilities", - "description": [ - "\nDatatable type utility functions." - ], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataPluginApi", - "section": "def-common.DatatableUtilitiesService", - "text": "DatatableUtilitiesService" - } - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginStart.indexPatterns", - "type": "Object", - "tags": [ - "deprecated" - ], - "label": "indexPatterns", - "description": [ - "\nindex patterns service\n{@link DataViewsContract}" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "public", - "docId": "kibDataViewsPluginApi", - "section": "def-public.DataViewsServicePublic", - "text": "DataViewsServicePublic" - } - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": true, - "references": [ - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/plugin.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/kibana_services.ts" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.ts" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/plugin.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "inputControlVis", - "path": "src/plugins/input_control_vis/public/control/list_control_factory.ts" - }, - { - "plugin": "inputControlVis", - "path": "src/plugins/input_control_vis/public/control/range_control_factory.ts" - }, - { - "plugin": "inputControlVis", - "path": "src/plugins/input_control_vis/public/components/editor/controls_tab.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts" - }, - { - "plugin": "savedObjects", - "path": "src/plugins/saved_objects/public/saved_object/saved_object.test.ts" - }, - { - "plugin": "savedObjects", - "path": "src/plugins/saved_objects/public/saved_object/saved_object.test.ts" - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginStart.search", - "type": "Object", - "tags": [], - "label": "search", - "description": [ - "\nsearch service\n{@link ISearchStart}" - ], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataSearchPluginApi", - "section": "def-public.ISearchStart", - "text": "ISearchStart" - } - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginStart.fieldFormats", - "type": "CompoundType", - "tags": [ - "deprecated" - ], - "label": "fieldFormats", - "description": [], - "signature": [ - "Omit<", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FieldFormatsRegistry", - "text": "FieldFormatsRegistry" - }, - ", \"init\" | \"register\"> & { deserialize: ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FormatFactory", - "text": "FormatFactory" - }, - "; }" - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": true, - "references": [ - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/actions/export_csv_action.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/alert_types/threshold/expression.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts" - }, - { - "plugin": "visTypeTable", - "path": "src/plugins/vis_types/table/public/plugin.ts" - }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/public/plugin.ts" - }, - { - "plugin": "visTypeXy", - "path": "src/plugins/vis_types/xy/public/plugin.ts" - }, - { - "plugin": "visTypeVislib", - "path": "src/plugins/vis_types/vislib/public/plugin.ts" - }, - { - "plugin": "expressionPartitionVis", - "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" - }, - { - "plugin": "expressionPartitionVis", - "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" - }, - { - "plugin": "expressionPartitionVis", - "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" - }, - { - "plugin": "expressionPartitionVis", - "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" - }, - { - "plugin": "expressionPartitionVis", - "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" - }, - { - "plugin": "expressionPartitionVis", - "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" - }, - { - "plugin": "expressionPartitionVis", - "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" - }, - { - "plugin": "expressionPartitionVis", - "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" - } - ] - }, - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginStart.query", - "type": "Object", - "tags": [], - "label": "query", - "description": [ - "\nquery service\n{@link QueryStart}" - ], - "signature": [ - { - "pluginId": "data", - "scope": "public", - "docId": "kibDataQueryPluginApi", - "section": "def-public.QueryStart", - "text": "QueryStart" - } - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-public.DataPublicPluginStart.nowProvider", - "type": "Object", - "tags": [], - "label": "nowProvider", - "description": [], - "signature": [ - "{ get: () => Date; }" - ], - "path": "src/plugins/data/public/types.ts", - "deprecated": false - } - ], - "lifecycle": "start", - "initialIsOpen": true - } - }, - "server": { - "classes": [ - { - "parentPluginId": "data", - "id": "def-server.DataServerPlugin", - "type": "Class", - "tags": [], - "label": "DataServerPlugin", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataPluginApi", - "section": "def-server.DataServerPlugin", - "text": "DataServerPlugin" - }, - " implements ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.Plugin", - "text": "Plugin" - }, - "<", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataPluginApi", - "section": "def-server.DataPluginSetup", - "text": "DataPluginSetup" - }, - ", ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataPluginApi", - "section": "def-server.DataPluginStart", - "text": "DataPluginStart" - }, - ", ", - "DataPluginSetupDependencies", - ", ", - "DataPluginStartDependencies", - ">" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataServerPlugin.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataServerPlugin.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "initializerContext", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.PluginInitializerContext", - "text": "PluginInitializerContext" - }, - "; }>; sessions: Readonly<{} & { enabled: boolean; pageSize: number; trackingInterval: moment.Duration; cleanupInterval: moment.Duration; expireInterval: moment.Duration; monitoringTaskTimeout: moment.Duration; notTouchedTimeout: moment.Duration; notTouchedInProgressTimeout: moment.Duration; maxUpdateRetries: number; defaultExpiration: moment.Duration; management: Readonly<{} & { refreshInterval: moment.Duration; maxSessions: number; refreshTimeout: moment.Duration; expiresSoonWarning: moment.Duration; }>; }>; }>; }>>" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataServerPlugin.setup", - "type": "Function", - "tags": [], - "label": "setup", - "description": [], - "signature": [ - "(core: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - "<", - "DataPluginStartDependencies", - ", ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataPluginApi", - "section": "def-server.DataPluginStart", - "text": "DataPluginStart" - }, - ">, { bfetch, expressions, usageCollection, fieldFormats, taskManager, security, }: ", - "DataPluginSetupDependencies", - ") => { search: ", - "ISearchSetup", - "; query: ", - "QuerySetup", - "; fieldFormats: ", - { - "pluginId": "fieldFormats", - "scope": "server", - "docId": "kibFieldFormatsPluginApi", - "section": "def-server.FieldFormatsSetup", - "text": "FieldFormatsSetup" - }, - "; }" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataServerPlugin.setup.$1", - "type": "Object", - "tags": [], - "label": "core", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreSetup", - "text": "CoreSetup" - }, - "<", - "DataPluginStartDependencies", - ", ", - { - "pluginId": "data", - "scope": "server", - "docId": "kibDataPluginApi", - "section": "def-server.DataPluginStart", - "text": "DataPluginStart" - }, - ">" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataServerPlugin.setup.$2", - "type": "Object", - "tags": [], - "label": "{\n bfetch,\n expressions,\n usageCollection,\n fieldFormats,\n taskManager,\n security,\n }", - "description": [], - "signature": [ - "DataPluginSetupDependencies" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataServerPlugin.start", - "type": "Function", - "tags": [], - "label": "start", - "description": [], - "signature": [ - "(core: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" - }, - ", { fieldFormats, dataViews, taskManager }: ", - "DataPluginStartDependencies", - ") => { datatableUtilities: ", - "DatatableUtilitiesService", - "; search: ", - "ISearchStart", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchRequest", - "text": "IEsSearchRequest" - }, - ", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchResponse", - "text": "IEsSearchResponse" - }, - ">; fieldFormats: ", - { - "pluginId": "fieldFormats", - "scope": "server", - "docId": "kibFieldFormatsPluginApi", - "section": "def-server.FieldFormatsStart", - "text": "FieldFormatsStart" - }, - "; indexPatterns: ", - { - "pluginId": "dataViews", - "scope": "server", - "docId": "kibDataViewsPluginApi", - "section": "def-server.DataViewsServerPluginStart", - "text": "DataViewsServerPluginStart" - }, - "; }" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataServerPlugin.start.$1", - "type": "Object", - "tags": [], - "label": "core", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.CoreStart", - "text": "CoreStart" - } - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataServerPlugin.start.$2", - "type": "Object", - "tags": [], - "label": "{ fieldFormats, dataViews, taskManager }", - "description": [], - "signature": [ - "DataPluginStartDependencies" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataServerPlugin.stop", - "type": "Function", - "tags": [], - "label": "stop", - "description": [], - "signature": [ - "() => void" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView", - "type": "Class", - "tags": [], - "label": "DataView", - "description": [ - "\nData view class. Central kibana abstraction around multiple indices." - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " implements ", - "DataViewBase" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.id", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "\nSaved object id" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.title", - "type": "string", - "tags": [], - "label": "title", - "description": [ - "\nTitle of data view" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.fieldFormatMap", - "type": "Object", - "tags": [], - "label": "fieldFormatMap", - "description": [ - "\nMap of field formats by field name" - ], - "signature": [ - "{ [x: string]: any; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.typeMeta", - "type": "Object", - "tags": [], - "label": "typeMeta", - "description": [ - "\nOnly used by rollup indices, used by rollup specific endpoint to load field list." - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.TypeMeta", - "text": "TypeMeta" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.fields", - "type": "CompoundType", - "tags": [], - "label": "fields", - "description": [ - "\nField list, in extended array format" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPatternFieldList", - "text": "IIndexPatternFieldList" - }, - " & { toSpec: () => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewFieldMap", - "text": "DataViewFieldMap" - }, - "; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.timeFieldName", - "type": "string", - "tags": [], - "label": "timeFieldName", - "description": [ - "\nTimestamp field name" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.type", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "\nType is used to identify rollup index patterns." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.flattenHit", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "flattenHit", - "description": [], - "signature": [ - "(hit: Record, deep?: boolean | undefined) => Record" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": true, - "references": [ - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" - } - ], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.flattenHit.$1", - "type": "Object", - "tags": [], - "label": "hit", - "description": [], - "signature": [ - "{ [x: string]: any; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.flattenHit.$2", - "type": "CompoundType", - "tags": [], - "label": "deep", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.metaFields", - "type": "Array", - "tags": [], - "label": "metaFields", - "description": [ - "\nList of meta fields by name" - ], - "signature": [ - "string[]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.version", - "type": "string", - "tags": [], - "label": "version", - "description": [ - "\nSavedObject version" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.sourceFilters", - "type": "Array", - "tags": [], - "label": "sourceFilters", - "description": [ - "\nArray of filters - hides fields in discover" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.SourceFilter", - "text": "SourceFilter" - }, - "[] | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.namespaces", - "type": "Array", - "tags": [], - "label": "namespaces", - "description": [ - "\nArray of namespace ids" - ], - "signature": [ - "string[]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.allowNoIndex", - "type": "boolean", - "tags": [], - "label": "allowNoIndex", - "description": [ - "\nPrevents errors when index pattern exists before indices" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.name", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "\nName of the data view. Human readable name used to differentiate data view." - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [ - "\nconstructor" - ], - "signature": [ - "any" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "config", - "description": [ - "- config data and dependencies" - ], - "signature": [ - "DataViewDeps" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getName", - "type": "Function", - "tags": [], - "label": "getName", - "description": [ - "\nGet name of Data View" - ], - "signature": [ - "() => string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getOriginalSavedObjectBody", - "type": "Function", - "tags": [], - "label": "getOriginalSavedObjectBody", - "description": [ - "\nGet last saved saved object fields" - ], - "signature": [ - "() => { fieldAttrs?: string | undefined; title?: string | undefined; timeFieldName?: string | undefined; fields?: string | undefined; sourceFilters?: string | undefined; fieldFormatMap?: string | undefined; typeMeta?: string | undefined; type?: string | undefined; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.resetOriginalSavedObjectBody", - "type": "Function", - "tags": [], - "label": "resetOriginalSavedObjectBody", - "description": [ - "\nReset last saved saved object fields. Used after saving." - ], - "signature": [ - "() => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getFieldAttrs", - "type": "Function", - "tags": [], - "label": "getFieldAttrs", - "description": [ - "\nReturns field attributes map" - ], - "signature": [ - "() => { [x: string]: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrSet", - "text": "FieldAttrSet" - }, - "; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getComputedFields", - "type": "Function", - "tags": [], - "label": "getComputedFields", - "description": [ - "\nReturns scripted fields" - ], - "signature": [ - "() => { storedFields: string[]; scriptFields: Record; docvalueFields: { field: string; format: string; }[]; runtimeFields: ", - "MappingRuntimeFields", - "; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.toSpec", - "type": "Function", - "tags": [], - "label": "toSpec", - "description": [ - "\nCreates static representation of the data view." - ], - "signature": [ - "() => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getSourceFiltering", - "type": "Function", - "tags": [], - "label": "getSourceFiltering", - "description": [ - "\nGet the source filtering configuration for that index." - ], - "signature": [ - "() => { excludes: string[]; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.removeScriptedField", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "removeScriptedField", - "description": [ - "\nRemoves scripted field from field list." - ], - "signature": [ - "(fieldName: string) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": true, - "references": [ - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/field_editor/field_editor.tsx" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - } - ], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.removeScriptedField.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "name of scripted field to remove" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getNonScriptedFields", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "getNonScriptedFields", - "description": [ - "\n" - ], - "signature": [ - "() => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - "[]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": true, - "references": [ - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts" - } - ], - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getScriptedFields", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "getScriptedFields", - "description": [ - "\n" - ], - "signature": [ - "() => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - "[]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": true, - "references": [ - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_views.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/server/register_index_pattern_usage_collection.ts" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - } - ], - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.isTimeBased", - "type": "Function", - "tags": [], - "label": "isTimeBased", - "description": [ - "\nDoes the data view have a timestamp field?" - ], - "signature": [ - "() => this is ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.TimeBasedDataView", - "text": "TimeBasedDataView" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.isTimeNanosBased", - "type": "Function", - "tags": [], - "label": "isTimeNanosBased", - "description": [ - "\nDoes the data view have a timestamp field and is it a date nanos field?" - ], - "signature": [ - "() => this is ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.TimeBasedDataView", - "text": "TimeBasedDataView" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getTimeField", - "type": "Function", - "tags": [], - "label": "getTimeField", - "description": [ - "\nGet timestamp field as DataViewField or return undefined" - ], - "signature": [ - "() => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getFieldByName", - "type": "Function", - "tags": [], - "label": "getFieldByName", - "description": [ - "\nGet field by name." - ], - "signature": [ - "(name: string) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.getFieldByName.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "field name" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getAggregationRestrictions", - "type": "Function", - "tags": [], - "label": "getAggregationRestrictions", - "description": [ - "\nGet aggregation restrictions. Rollup fields can only perform a subset of aggregations." - ], - "signature": [ - "() => Record | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getAsSavedObjectBody", - "type": "Function", - "tags": [], - "label": "getAsSavedObjectBody", - "description": [ - "\nReturns index pattern as saved object body for saving" - ], - "signature": [ - "() => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewAttributes", - "text": "DataViewAttributes" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getFormatterForField", - "type": "Function", - "tags": [], - "label": "getFormatterForField", - "description": [ - "\nProvide a field, get its formatter" - ], - "signature": [ - "(field: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - ") => ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.getFormatterForField.$1", - "type": "CompoundType", - "tags": [], - "label": "field", - "description": [ - "field to get formatter for" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.addRuntimeField", - "type": "Function", - "tags": [], - "label": "addRuntimeField", - "description": [ - "\nAdd a runtime field - Appended to existing mapped field or a new field is\ncreated as appropriate." - ], - "signature": [ - "(name: string, runtimeField: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.RuntimeField", - "text": "RuntimeField" - }, - ") => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - "[]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.addRuntimeField.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "Field name" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.addRuntimeField.$2", - "type": "Object", - "tags": [], - "label": "runtimeField", - "description": [ - "Runtime field definition" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.RuntimeField", - "text": "RuntimeField" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.hasRuntimeField", - "type": "Function", - "tags": [], - "label": "hasRuntimeField", - "description": [ - "\nChecks if runtime field exists" - ], - "signature": [ - "(name: string) => boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.hasRuntimeField.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "field name" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getRuntimeField", - "type": "Function", - "tags": [], - "label": "getRuntimeField", - "description": [ - "\nReturns runtime field if exists" - ], - "signature": [ - "(name: string) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.RuntimeField", - "text": "RuntimeField" - }, - " | null" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.getRuntimeField.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "Runtime field name" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getAllRuntimeFields", - "type": "Function", - "tags": [], - "label": "getAllRuntimeFields", - "description": [ - "\nGet all runtime field definitions." - ], - "signature": [ - "() => Record" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [ - "map of runtime field definitions by field name" - ] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getFieldsByRuntimeFieldName", - "type": "Function", - "tags": [], - "label": "getFieldsByRuntimeFieldName", - "description": [ - "\nReturns data view fields backed by runtime fields." - ], - "signature": [ - "(name: string) => Record | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.getFieldsByRuntimeFieldName.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "runtime field name" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "map of DataViewFields (that are runtime fields) by field name" - ] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.replaceAllRuntimeFields", - "type": "Function", - "tags": [], - "label": "replaceAllRuntimeFields", - "description": [ - "\nReplaces all existing runtime fields with new fields." - ], - "signature": [ - "(newFields: Record) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.replaceAllRuntimeFields.$1", - "type": "Object", - "tags": [], - "label": "newFields", - "description": [ - "Map of runtime field definitions by field name" - ], - "signature": [ - "Record" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.removeRuntimeField", - "type": "Function", - "tags": [], - "label": "removeRuntimeField", - "description": [ - "\nRemove a runtime field - removed from mapped field or removed unmapped\nfield as appropriate. Doesn't clear associated field attributes." - ], - "signature": [ - "(name: string) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.removeRuntimeField.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "- Field name to remove" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getRuntimeMappings", - "type": "Function", - "tags": [], - "label": "getRuntimeMappings", - "description": [ - "\nReturn the \"runtime_mappings\" section of the ES search query." - ], - "signature": [ - "() => ", - "MappingRuntimeFields" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.getFormatterForFieldNoDefault", - "type": "Function", - "tags": [], - "label": "getFormatterForFieldNoDefault", - "description": [ - "\nGet formatter for a given field name. Return undefined if none exists." - ], - "signature": [ - "(fieldname: string) => ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.getFormatterForFieldNoDefault.$1", - "type": "string", - "tags": [], - "label": "fieldname", - "description": [ - "name of field to get formatter for" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldAttrs", - "type": "Function", - "tags": [], - "label": "setFieldAttrs", - "description": [ - "\nSet field attribute" - ], - "signature": [ - "(fieldName: string, attrName: K, value: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrSet", - "text": "FieldAttrSet" - }, - "[K]) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldAttrs.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "name of field to set attribute on" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldAttrs.$2", - "type": "Uncategorized", - "tags": [], - "label": "attrName", - "description": [ - "name of attribute to set" - ], - "signature": [ - "K" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldAttrs.$3", - "type": "Uncategorized", - "tags": [], - "label": "value", - "description": [ - "value of attribute" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrSet", - "text": "FieldAttrSet" - }, - "[K]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldCustomLabel", - "type": "Function", - "tags": [], - "label": "setFieldCustomLabel", - "description": [ - "\nSet field custom label" - ], - "signature": [ - "(fieldName: string, customLabel: string | null | undefined) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldCustomLabel.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "name of field to set custom label on" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldCustomLabel.$2", - "type": "CompoundType", - "tags": [], - "label": "customLabel", - "description": [ - "custom label value. If undefined, custom label is removed" - ], - "signature": [ - "string | null | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldCount", - "type": "Function", - "tags": [], - "label": "setFieldCount", - "description": [ - "\nSet field count" - ], - "signature": [ - "(fieldName: string, count: number | null | undefined) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldCount.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "name of field to set count on" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldCount.$2", - "type": "CompoundType", - "tags": [], - "label": "count", - "description": [ - "count value. If undefined, count is removed" - ], - "signature": [ - "number | null | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldFormat", - "type": "Function", - "tags": [], - "label": "setFieldFormat", - "description": [ - "\nSet field formatter" - ], - "signature": [ - "(fieldName: string, format: ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.SerializedFieldFormat", - "text": "SerializedFieldFormat" - }, - "<", - "SerializableRecord", - ">) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldFormat.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "name of field to set format on" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.setFieldFormat.$2", - "type": "Object", - "tags": [], - "label": "format", - "description": [ - "field format in serialized form" - ], - "signature": [ - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.SerializedFieldFormat", - "text": "SerializedFieldFormat" - }, - "<", - "SerializableRecord", - ">" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataView.deleteFieldFormat", - "type": "Function", - "tags": [], - "label": "deleteFieldFormat", - "description": [ - "\nRemove field format from the field format map." - ], - "signature": [ - "(fieldName: string) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataView.deleteFieldFormat.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "field name associated with the format for removal" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService", - "type": "Class", - "tags": [], - "label": "DataViewsService", - "description": [ - "\nData views service, providing CRUD operations for data views." - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getCanSave", - "type": "Function", - "tags": [], - "label": "getCanSave", - "description": [ - "\nCan the user save data views?" - ], - "signature": [ - "() => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "returnComment": [], - "children": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [ - "\nDataViewsService constructor" - ], - "signature": [ - "any" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "deps", - "description": [ - "Service dependencies" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewsServiceDeps", - "text": "DataViewsServiceDeps" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getIds", - "type": "Function", - "tags": [], - "label": "getIds", - "description": [ - "\nGets list of index pattern ids." - ], - "signature": [ - "(refresh?: boolean) => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getIds.$1", - "type": "boolean", - "tags": [], - "label": "refresh", - "description": [ - "Force refresh of index pattern list" - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getTitles", - "type": "Function", - "tags": [], - "label": "getTitles", - "description": [ - "\nGets list of index pattern titles." - ], - "signature": [ - "(refresh?: boolean) => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getTitles.$1", - "type": "boolean", - "tags": [], - "label": "refresh", - "description": [ - "Force refresh of index pattern list" - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.find", - "type": "Function", - "tags": [], - "label": "find", - "description": [ - "\nFind and load index patterns by title." - ], - "signature": [ - "(search: string, size?: number) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - "[]>" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.find.$1", - "type": "string", - "tags": [], - "label": "search", - "description": [ - "Search string" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.find.$2", - "type": "number", - "tags": [], - "label": "size", - "description": [ - "Number of data views to return" - ], - "signature": [ - "number" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "DataView[]" - ] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getIdsWithTitle", - "type": "Function", - "tags": [], - "label": "getIdsWithTitle", - "description": [ - "\nGets list of index pattern ids with titles." - ], - "signature": [ - "(refresh?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewListItem", - "text": "DataViewListItem" - }, - "[]>" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getIdsWithTitle.$1", - "type": "boolean", - "tags": [], - "label": "refresh", - "description": [ - "Force refresh of index pattern list" - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.clearCache", - "type": "Function", - "tags": [], - "label": "clearCache", - "description": [ - "\nClear index pattern list cache." - ], - "signature": [ - "(id?: string | undefined) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.clearCache.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "optionally clear a single id" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getCache", - "type": "Function", - "tags": [], - "label": "getCache", - "description": [ - "\nGet cache, contains data view saved objects." - ], - "signature": [ - "() => Promise<", - "SavedObject", - "<", - "DataViewSavedObjectAttrs", - ">[] | null | undefined>" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getDefault", - "type": "Function", - "tags": [], - "label": "getDefault", - "description": [ - "\nGet default index pattern" - ], - "signature": [ - "() => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | null>" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getDefaultId", - "type": "Function", - "tags": [], - "label": "getDefaultId", - "description": [ - "\nGet default index pattern id" - ], - "signature": [ - "() => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.setDefault", - "type": "Function", - "tags": [], - "label": "setDefault", - "description": [ - "\nOptionally set default index pattern, unless force = true" - ], - "signature": [ - "(id: string | null, force?: boolean) => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.setDefault.$1", - "type": "CompoundType", - "tags": [], - "label": "id", - "description": [ - "data view id" - ], - "signature": [ - "string | null" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.setDefault.$2", - "type": "boolean", - "tags": [], - "label": "force", - "description": [ - "set default data view even if there's an existing default" - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.hasUserDataView", - "type": "Function", - "tags": [], - "label": "hasUserDataView", - "description": [ - "\nChecks if current user has a user created index pattern ignoring fleet's server default index patterns." - ], - "signature": [ - "() => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getFieldsForWildcard", - "type": "Function", - "tags": [], - "label": "getFieldsForWildcard", - "description": [ - "\nGet field list by providing { pattern }." - ], - "signature": [ - "(options: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - }, - ") => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]>" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getFieldsForWildcard.$1", - "type": "Object", - "tags": [], - "label": "options", - "description": [ - "options for getting field list" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "FieldSpec[]" - ] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getFieldsForIndexPattern", - "type": "Function", - "tags": [], - "label": "getFieldsForIndexPattern", - "description": [ - "\nGet field list by providing an index patttern (or spec)." - ], - "signature": [ - "(indexPattern: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - ", options?: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]>" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getFieldsForIndexPattern.$1", - "type": "CompoundType", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getFieldsForIndexPattern.$2", - "type": "Object", - "tags": [], - "label": "options", - "description": [ - "options for getting field list" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [ - "FieldSpec[]" - ] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.refreshFields", - "type": "Function", - "tags": [], - "label": "refreshFields", - "description": [ - "\nRefresh field list for a given index pattern." - ], - "signature": [ - "(indexPattern: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ") => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.refreshFields.$1", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.fieldArrayToMap", - "type": "Function", - "tags": [], - "label": "fieldArrayToMap", - "description": [ - "\nConverts field array to map." - ], - "signature": [ - "(fields: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[], fieldAttrs?: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrs", - "text": "FieldAttrs" - }, - " | undefined) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewFieldMap", - "text": "DataViewFieldMap" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.fieldArrayToMap.$1", - "type": "Array", - "tags": [], - "label": "fields", - "description": [ - ": FieldSpec[]" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.fieldArrayToMap.$2", - "type": "Object", - "tags": [], - "label": "fieldAttrs", - "description": [ - ": FieldAttrs" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrs", - "text": "FieldAttrs" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [ - "Record" - ] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.savedObjectToSpec", - "type": "Function", - "tags": [], - "label": "savedObjectToSpec", - "description": [ - "\nConverts data view saved object to data view spec." - ], - "signature": [ - "(savedObject: ", - "SavedObject", - "<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewAttributes", - "text": "DataViewAttributes" - }, - ">) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.savedObjectToSpec.$1", - "type": "Object", - "tags": [], - "label": "savedObject", - "description": [], - "signature": [ - "SavedObject", - "<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewAttributes", - "text": "DataViewAttributes" - }, - ">" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "DataViewSpec" - ] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.get", - "type": "Function", - "tags": [], - "label": "get", - "description": [ - "\nGet an index pattern by id, cache optimized." - ], - "signature": [ - "(id: string) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ">" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.get.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.create", - "type": "Function", - "tags": [], - "label": "create", - "description": [ - "\nCreate a new data view instance." - ], - "signature": [ - "(spec: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - ", skipFetchFields?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ">" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.create.$1", - "type": "Object", - "tags": [], - "label": "spec", - "description": [ - "data view spec" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.create.$2", - "type": "boolean", - "tags": [], - "label": "skipFetchFields", - "description": [ - "if true, will not fetch fields" - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "DataView" - ] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.createAndSave", - "type": "Function", - "tags": [], - "label": "createAndSave", - "description": [ - "\nCreate a new data view and save it right away." - ], - "signature": [ - "(spec: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - ", override?: boolean, skipFetchFields?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ">" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.createAndSave.$1", - "type": "Object", - "tags": [], - "label": "spec", - "description": [ - "data view spec" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.createAndSave.$2", - "type": "boolean", - "tags": [], - "label": "override", - "description": [ - "Overwrite if existing index pattern exists." - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.createAndSave.$3", - "type": "boolean", - "tags": [], - "label": "skipFetchFields", - "description": [ - "Whether to skip field refresh step." - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.createSavedObject", - "type": "Function", - "tags": [], - "label": "createSavedObject", - "description": [ - "\nSave a new data view." - ], - "signature": [ - "(dataView: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ", override?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ">" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.createSavedObject.$1", - "type": "Object", - "tags": [], - "label": "dataView", - "description": [ - "data view instance" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.createSavedObject.$2", - "type": "boolean", - "tags": [], - "label": "override", - "description": [ - "Overwrite if existing index pattern exists" - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.updateSavedObject", - "type": "Function", - "tags": [], - "label": "updateSavedObject", - "description": [ - "\nSave existing dat aview. Will attempt to merge differences if there are conflicts." - ], - "signature": [ - "(indexPattern: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ", saveAttempts?: number, ignoreErrors?: boolean) => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.updateSavedObject.$1", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.updateSavedObject.$2", - "type": "number", - "tags": [], - "label": "saveAttempts", - "description": [], - "signature": [ - "number" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.updateSavedObject.$3", - "type": "boolean", - "tags": [], - "label": "ignoreErrors", - "description": [], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.delete", - "type": "Function", - "tags": [], - "label": "delete", - "description": [ - "\nDeletes an index pattern from .kibana index." - ], - "signature": [ - "(indexPatternId: string) => Promise<{}>" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.delete.$1", - "type": "string", - "tags": [], - "label": "indexPatternId", - "description": [ - ": Id of kibana Index Pattern to delete" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsService.getDefaultDataView", - "type": "Function", - "tags": [], - "label": "getDefaultDataView", - "description": [ - "\nReturns the default data view as an object.\nIf no default is found, or it is missing\nanother data view is selected as default and returned.\nIf no possible data view found to become a default returns null.\n" - ], - "signature": [ - "() => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | null>" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [], - "returnComment": [ - "default data view" - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher", - "type": "Class", - "tags": [], - "label": "IndexPatternsFetcher", - "description": [], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "elasticsearchClient", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchClient", - "text": "ElasticsearchClient" - } - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.Unnamed.$2", - "type": "boolean", - "tags": [], - "label": "allowNoIndices", - "description": [], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard", - "type": "Function", - "tags": [ - "property", - "property", - "return" - ], - "label": "getFieldsForWildcard", - "description": [ - "\n Get a list of field objects for an index pattern that may contain wildcards\n" - ], - "signature": [ - "(options: { pattern: string | string[]; metaFields?: string[] | undefined; fieldCapsOptions?: { allow_no_indices: boolean; } | undefined; type?: string | undefined; rollupIndex?: string | undefined; filter?: ", - "QueryDslQueryContainer", - " | undefined; }) => Promise<", - { - "pluginId": "dataViews", - "scope": "server", - "docId": "kibDataViewsPluginApi", - "section": "def-server.FieldDescriptor", - "text": "FieldDescriptor" - }, - "[]>" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.pattern", - "type": "CompoundType", - "tags": [], - "label": "pattern", - "description": [], - "signature": [ - "string | string[]" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.metaFields", - "type": "Array", - "tags": [], - "label": "metaFields", - "description": [], - "signature": [ - "string[] | undefined" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.fieldCapsOptions", - "type": "Object", - "tags": [], - "label": "fieldCapsOptions", - "description": [], - "signature": [ - "{ allow_no_indices: boolean; } | undefined" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.rollupIndex", - "type": "string", - "tags": [], - "label": "rollupIndex", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.filter", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "QueryDslQueryContainer", - " | undefined" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.validatePatternListActive", - "type": "Function", - "tags": [ - "return" - ], - "label": "validatePatternListActive", - "description": [ - "\n Returns an index pattern list of only those index pattern strings in the given list that return indices\n" - ], - "signature": [ - "(patternList: string[]) => Promise" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IndexPatternsFetcher.validatePatternListActive.$1", - "type": "Array", - "tags": [], - "label": "patternList", - "description": [ - "string[]" - ], - "signature": [ - "string[]" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "functions": [ - { - "parentPluginId": "data", - "id": "def-server.getCapabilitiesForRollupIndices", - "type": "Function", - "tags": [], - "label": "getCapabilitiesForRollupIndices", - "description": [ - "\nGet rollup job capabilities" - ], - "signature": [ - "(indices: Record) => { [key: string]: any; }" - ], - "path": "src/plugins/data_views/server/fetcher/lib/map_capabilities.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.getCapabilitiesForRollupIndices.$1", - "type": "Object", - "tags": [], - "label": "indices", - "description": [ - "rollup job index capabilites" - ], - "signature": [ - "Record" - ], - "path": "src/plugins/data_views/server/fetcher/lib/map_capabilities.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.getEsQueryConfig", - "type": "Function", - "tags": [], - "label": "getEsQueryConfig", - "description": [], - "signature": [ - "(config: KibanaConfig) => ", - "EsQueryConfig" - ], - "path": "src/plugins/data/common/es_query/get_es_query_config.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.getEsQueryConfig.$1", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "KibanaConfig" - ], - "path": "src/plugins/data/common/es_query/get_es_query_config.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.getRequestAbortedSignal", - "type": "Function", - "tags": [], - "label": "getRequestAbortedSignal", - "description": [ - "\nA simple utility function that returns an `AbortSignal` corresponding to an `AbortController`\nwhich aborts when the given request is aborted." - ], - "signature": [ - "(aborted$: ", - "Observable", - ") => AbortSignal" - ], - "path": "src/plugins/data/server/lib/get_request_aborted_signal.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.getRequestAbortedSignal.$1", - "type": "Object", - "tags": [], - "label": "aborted$", - "description": [ - "The observable of abort events (usually `request.events.aborted$`)" - ], - "signature": [ - "Observable", - "" - ], - "path": "src/plugins/data/server/lib/get_request_aborted_signal.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.getTime", - "type": "Function", - "tags": [], - "label": "getTime", - "description": [], - "signature": [ - "(indexPattern: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | undefined, timeRange: ", - "TimeRange", - ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => ", - "RangeFilter", - " | ", - "ScriptedRangeFilter", - " | MatchAllRangeFilter | undefined" - ], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.getTime.$1", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | undefined" - ], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "data", - "id": "def-server.getTime.$2", - "type": "Object", - "tags": [], - "label": "timeRange", - "description": [], - "signature": [ - "TimeRange" - ], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-server.getTime.$3", - "type": "Object", - "tags": [], - "label": "options", - "description": [], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.getTime.$3.forceNow", - "type": "Object", - "tags": [], - "label": "forceNow", - "description": [], - "signature": [ - "Date | undefined" - ], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.getTime.$3.fieldName", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/common/query/timefilter/get_time.ts", - "deprecated": false - } - ] - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.parseInterval", - "type": "Function", - "tags": [], - "label": "parseInterval", - "description": [], - "signature": [ - "(interval: string) => moment.Duration | null" - ], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.parseInterval.$1", - "type": "string", - "tags": [], - "label": "interval", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - } - ], - "interfaces": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsServerPluginStart", - "type": "Interface", - "tags": [], - "label": "DataViewsServerPluginStart", - "description": [ - "\nDataViews server plugin start api" - ], - "path": "src/plugins/data_views/server/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsServerPluginStart.dataViewsServiceFactory", - "type": "Function", - "tags": [], - "label": "dataViewsServiceFactory", - "description": [ - "\nReturns a DataViews service instance" - ], - "signature": [ - "(savedObjectsClient: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsClientContract", - "text": "SavedObjectsClientContract" - }, - ", elasticsearchClient: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCorePluginApi", - "section": "def-server.ElasticsearchClient", - "text": "ElasticsearchClient" - }, - ", request?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.KibanaRequest", - "text": "KibanaRequest" - }, - " | undefined, byPassCapabilities?: boolean | undefined) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewsService", - "text": "DataViewsService" - }, - ">" - ], - "path": "src/plugins/data_views/server/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataViewsServerPluginStart.dataViewsServiceFactory.$1", - "type": "Object", - "tags": [], - "label": "savedObjectsClient", - "description": [], - "signature": [ - "{ create: (type: string, attributes: T, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCreateOptions", - "text": "SavedObjectsCreateOptions" - }, - " | undefined) => Promise<", - "SavedObject", - ">; bulkCreate: (objects: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkCreateObject", - "text": "SavedObjectsBulkCreateObject" - }, - "[], options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCreateOptions", - "text": "SavedObjectsCreateOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkResponse", - "text": "SavedObjectsBulkResponse" - }, - ">; checkConflicts: (objects?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCheckConflictsObject", - "text": "SavedObjectsCheckConflictsObject" - }, - "[], options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBaseOptions", - "text": "SavedObjectsBaseOptions" - }, - ") => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCheckConflictsResponse", - "text": "SavedObjectsCheckConflictsResponse" - }, - ">; delete: (type: string, id: string, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsDeleteOptions", - "text": "SavedObjectsDeleteOptions" - }, - ") => Promise<{}>; find: (options: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsFindOptions", - "text": "SavedObjectsFindOptions" - }, - ") => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsFindResponse", - "text": "SavedObjectsFindResponse" - }, - ">; bulkGet: (objects?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkGetObject", - "text": "SavedObjectsBulkGetObject" - }, - "[], options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBaseOptions", - "text": "SavedObjectsBaseOptions" - }, - ") => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkResponse", - "text": "SavedObjectsBulkResponse" - }, - ">; bulkResolve: (objects: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkResolveObject", - "text": "SavedObjectsBulkResolveObject" - }, - "[], options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBaseOptions", - "text": "SavedObjectsBaseOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkResolveResponse", - "text": "SavedObjectsBulkResolveResponse" - }, - ">; get: (type: string, id: string, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBaseOptions", - "text": "SavedObjectsBaseOptions" - }, - ") => Promise<", - "SavedObject", - ">; resolve: (type: string, id: string, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBaseOptions", - "text": "SavedObjectsBaseOptions" - }, - ") => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsResolveResponse", - "text": "SavedObjectsResolveResponse" - }, - ">; update: (type: string, id: string, attributes: Partial, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateOptions", - "text": "SavedObjectsUpdateOptions" - }, - ") => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateResponse", - "text": "SavedObjectsUpdateResponse" - }, - ">; collectMultiNamespaceReferences: (objects: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesObject", - "text": "SavedObjectsCollectMultiNamespaceReferencesObject" - }, - "[], options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesOptions", - "text": "SavedObjectsCollectMultiNamespaceReferencesOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesResponse", - "text": "SavedObjectsCollectMultiNamespaceReferencesResponse" - }, - ">; updateObjectsSpaces: (objects: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateObjectsSpacesObject", - "text": "SavedObjectsUpdateObjectsSpacesObject" - }, - "[], spacesToAdd: string[], spacesToRemove: string[], options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateObjectsSpacesOptions", - "text": "SavedObjectsUpdateObjectsSpacesOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsUpdateObjectsSpacesResponse", - "text": "SavedObjectsUpdateObjectsSpacesResponse" - }, - ">; bulkUpdate: (objects: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkUpdateObject", - "text": "SavedObjectsBulkUpdateObject" - }, - "[], options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkUpdateOptions", - "text": "SavedObjectsBulkUpdateOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBulkUpdateResponse", - "text": "SavedObjectsBulkUpdateResponse" - }, - ">; removeReferencesTo: (type: string, id: string, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsRemoveReferencesToOptions", - "text": "SavedObjectsRemoveReferencesToOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsRemoveReferencesToResponse", - "text": "SavedObjectsRemoveReferencesToResponse" - }, - ">; openPointInTimeForType: (type: string | string[], options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsOpenPointInTimeOptions", - "text": "SavedObjectsOpenPointInTimeOptions" - }, - ") => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsOpenPointInTimeResponse", - "text": "SavedObjectsOpenPointInTimeResponse" - }, - ">; closePointInTime: (id: string, options?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsBaseOptions", - "text": "SavedObjectsBaseOptions" - }, - " | undefined) => Promise<", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsClosePointInTimeResponse", - "text": "SavedObjectsClosePointInTimeResponse" - }, - ">; createPointInTimeFinder: (findOptions: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCreatePointInTimeFinderOptions", - "text": "SavedObjectsCreatePointInTimeFinderOptions" - }, - ", dependencies?: ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsCreatePointInTimeFinderDependencies", - "text": "SavedObjectsCreatePointInTimeFinderDependencies" - }, - " | undefined) => ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.ISavedObjectsPointInTimeFinder", - "text": "ISavedObjectsPointInTimeFinder" - }, - "; errors: typeof ", - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreSavedObjectsPluginApi", - "section": "def-server.SavedObjectsErrorHelpers", - "text": "SavedObjectsErrorHelpers" - }, - "; }" - ], - "path": "src/plugins/data_views/server/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsServerPluginStart.dataViewsServiceFactory.$2", - "type": "Object", - "tags": [], - "label": "elasticsearchClient", - "description": [], - "signature": [ - "{ eql: ", - "default", - "; search: { >(this: That, params?: ", - "SearchRequest", - " | ", - "SearchRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "SearchResponse", - ">; >(this: That, params?: ", - "SearchRequest", - " | ", - "SearchRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "SearchResponse", - ", unknown>>; >(this: That, params?: ", - "SearchRequest", - " | ", - "SearchRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "SearchResponse", - ">; }; create: { (this: That, params: ", - "CreateRequest", - " | ", - "CreateRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "WriteResponseBase", - ">; (this: That, params: ", - "CreateRequest", - " | ", - "CreateRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "WriteResponseBase", - ", unknown>>; (this: That, params: ", - "CreateRequest", - " | ", - "CreateRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "WriteResponseBase", - ">; }; monitoring: ", - "default", - "; security: ", - "default", - "; name: string | symbol; index: { (this: That, params: ", - "IndexRequest", - " | ", - "IndexRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "WriteResponseBase", - ">; (this: That, params: ", - "IndexRequest", - " | ", - "IndexRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "WriteResponseBase", - ", unknown>>; (this: That, params: ", - "IndexRequest", - " | ", - "IndexRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "WriteResponseBase", - ">; }; delete: { (this: That, params: ", - "DeleteRequest", - " | ", - "DeleteRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "WriteResponseBase", - ">; (this: That, params: ", - "DeleteRequest", - " | ", - "DeleteRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "WriteResponseBase", - ", unknown>>; (this: That, params: ", - "DeleteRequest", - " | ", - "DeleteRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "WriteResponseBase", - ">; }; get: { (this: That, params: ", - "GetRequest", - " | ", - "GetRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "GetResponse", - ">; (this: That, params: ", - "GetRequest", - " | ", - "GetRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "GetResponse", - ", unknown>>; (this: That, params: ", - "GetRequest", - " | ", - "GetRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "GetResponse", - ">; }; update: { (this: That, params: ", - "UpdateRequest", - " | ", - "UpdateRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "UpdateResponse", - ">; (this: That, params: ", - "UpdateRequest", - " | ", - "UpdateRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "UpdateResponse", - ", unknown>>; (this: That, params: ", - "UpdateRequest", - " | ", - "UpdateRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "UpdateResponse", - ">; }; closePointInTime: { (this: That, params: ", - "ClosePointInTimeRequest", - " | ", - "ClosePointInTimeRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ClosePointInTimeResponse", - ">; (this: That, params: ", - "ClosePointInTimeRequest", - " | ", - "ClosePointInTimeRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ClosePointInTimeResponse", - ", unknown>>; (this: That, params: ", - "ClosePointInTimeRequest", - " | ", - "ClosePointInTimeRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ClosePointInTimeResponse", - ">; }; helpers: ", - "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", - "default", - "; child: (opts: ", - "ClientOptions", - ") => ", - "default", - "; Internal: ", - "default", - "; asyncSearch: ", - "default", - "; autoscaling: ", - "default", - "; bulk: { (this: That, params: ", - "BulkRequest", - " | ", - "BulkRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "BulkResponse", - ">; (this: That, params: ", - "BulkRequest", - " | ", - "BulkRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "BulkResponse", - ", unknown>>; (this: That, params: ", - "BulkRequest", - " | ", - "BulkRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "BulkResponse", - ">; }; cat: ", - "default", - "; ccr: ", - "default", - "; clearScroll: { (this: That, params?: ", - "ClearScrollRequest", - " | ", - "ClearScrollRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ClearScrollResponse", - ">; (this: That, params?: ", - "ClearScrollRequest", - " | ", - "ClearScrollRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ClearScrollResponse", - ", unknown>>; (this: That, params?: ", - "ClearScrollRequest", - " | ", - "ClearScrollRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ClearScrollResponse", - ">; }; cluster: ", - "default", - "; count: { (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "CountResponse", - ">; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "CountResponse", - ", unknown>>; (this: That, params?: ", - "CountRequest", - " | ", - "CountRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "CountResponse", - ">; }; danglingIndices: ", - "default", - "; deleteByQuery: { (this: That, params: ", - "DeleteByQueryRequest", - " | ", - "DeleteByQueryRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "DeleteByQueryResponse", - ">; (this: That, params: ", - "DeleteByQueryRequest", - " | ", - "DeleteByQueryRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "DeleteByQueryResponse", - ", unknown>>; (this: That, params: ", - "DeleteByQueryRequest", - " | ", - "DeleteByQueryRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "DeleteByQueryResponse", - ">; }; deleteByQueryRethrottle: { (this: That, params: ", - "DeleteByQueryRethrottleRequest", - " | ", - "DeleteByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "TasksTaskListResponseBase", - ">; (this: That, params: ", - "DeleteByQueryRethrottleRequest", - " | ", - "DeleteByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "TasksTaskListResponseBase", - ", unknown>>; (this: That, params: ", - "DeleteByQueryRethrottleRequest", - " | ", - "DeleteByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "TasksTaskListResponseBase", - ">; }; deleteScript: { (this: That, params: ", - "DeleteScriptRequest", - " | ", - "DeleteScriptRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "AcknowledgedResponseBase", - ">; (this: That, params: ", - "DeleteScriptRequest", - " | ", - "DeleteScriptRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "AcknowledgedResponseBase", - ", unknown>>; (this: That, params: ", - "DeleteScriptRequest", - " | ", - "DeleteScriptRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "AcknowledgedResponseBase", - ">; }; enrich: ", - "default", - "; exists: { (this: That, params: ", - "ExistsRequest", - " | ", - "ExistsRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise; (this: That, params: ", - "ExistsRequest", - " | ", - "ExistsRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - ">; (this: That, params: ", - "ExistsRequest", - " | ", - "ExistsRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise; }; existsSource: { (this: That, params: ", - "ExistsSourceRequest", - " | ", - "ExistsSourceRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise; (this: That, params: ", - "ExistsSourceRequest", - " | ", - "ExistsSourceRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - ">; (this: That, params: ", - "ExistsSourceRequest", - " | ", - "ExistsSourceRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise; }; explain: { (this: That, params: ", - "ExplainRequest", - " | ", - "ExplainRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ExplainResponse", - ">; (this: That, params: ", - "ExplainRequest", - " | ", - "ExplainRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ExplainResponse", - ", unknown>>; (this: That, params: ", - "ExplainRequest", - " | ", - "ExplainRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ExplainResponse", - ">; }; features: ", - "default", - "; fieldCaps: { (this: That, params: ", - "FieldCapsRequest", - " | ", - "FieldCapsRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "FieldCapsResponse", - ">; (this: That, params: ", - "FieldCapsRequest", - " | ", - "FieldCapsRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "FieldCapsResponse", - ", unknown>>; (this: That, params: ", - "FieldCapsRequest", - " | ", - "FieldCapsRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "FieldCapsResponse", - ">; }; fleet: ", - "default", - "; getScript: { (this: That, params: ", - "GetScriptRequest", - " | ", - "GetScriptRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "GetScriptResponse", - ">; (this: That, params: ", - "GetScriptRequest", - " | ", - "GetScriptRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "GetScriptResponse", - ", unknown>>; (this: That, params: ", - "GetScriptRequest", - " | ", - "GetScriptRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "GetScriptResponse", - ">; }; getScriptContext: { (this: That, params?: ", - "GetScriptContextRequest", - " | ", - "GetScriptContextRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "GetScriptContextResponse", - ">; (this: That, params?: ", - "GetScriptContextRequest", - " | ", - "GetScriptContextRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "GetScriptContextResponse", - ", unknown>>; (this: That, params?: ", - "GetScriptContextRequest", - " | ", - "GetScriptContextRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "GetScriptContextResponse", - ">; }; getScriptLanguages: { (this: That, params?: ", - "GetScriptLanguagesRequest", - " | ", - "GetScriptLanguagesRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "GetScriptLanguagesResponse", - ">; (this: That, params?: ", - "GetScriptLanguagesRequest", - " | ", - "GetScriptLanguagesRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "GetScriptLanguagesResponse", - ", unknown>>; (this: That, params?: ", - "GetScriptLanguagesRequest", - " | ", - "GetScriptLanguagesRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "GetScriptLanguagesResponse", - ">; }; getSource: { (this: That, params: ", - "GetSourceRequest", - " | ", - "GetSourceRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise; (this: That, params: ", - "GetSourceRequest", - " | ", - "GetSourceRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - ">; (this: That, params: ", - "GetSourceRequest", - " | ", - "GetSourceRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise; }; graph: ", - "default", - "; ilm: ", - "default", - "; indices: ", - "default", - "; info: { (this: That, params?: ", - "InfoRequest", - " | ", - "InfoRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "InfoResponse", - ">; (this: That, params?: ", - "InfoRequest", - " | ", - "InfoRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "InfoResponse", - ", unknown>>; (this: That, params?: ", - "InfoRequest", - " | ", - "InfoRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "InfoResponse", - ">; }; ingest: ", - "default", - "; knnSearch: { (this: That, params: ", - "KnnSearchRequest", - " | ", - "KnnSearchRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "KnnSearchResponse", - ">; (this: That, params: ", - "KnnSearchRequest", - " | ", - "KnnSearchRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "KnnSearchResponse", - ", unknown>>; (this: That, params: ", - "KnnSearchRequest", - " | ", - "KnnSearchRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "KnnSearchResponse", - ">; }; license: ", - "default", - "; logstash: ", - "default", - "; mget: { (this: That, params?: ", - "MgetRequest", - " | ", - "MgetRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "MgetResponse", - ">; (this: That, params?: ", - "MgetRequest", - " | ", - "MgetRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "MgetResponse", - ", unknown>>; (this: That, params?: ", - "MgetRequest", - " | ", - "MgetRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "MgetResponse", - ">; }; migration: ", - "default", - "; ml: ", - "default", - "; msearch: { >(this: That, params: ", - "MsearchRequest", - " | ", - "MsearchRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "MsearchResponse", - ">; >(this: That, params: ", - "MsearchRequest", - " | ", - "MsearchRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "MsearchResponse", - ", unknown>>; >(this: That, params: ", - "MsearchRequest", - " | ", - "MsearchRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "MsearchResponse", - ">; }; msearchTemplate: { >(this: That, params: ", - "MsearchTemplateRequest", - " | ", - "MsearchTemplateRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "MsearchTemplateResponse", - ">; >(this: That, params: ", - "MsearchTemplateRequest", - " | ", - "MsearchTemplateRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "MsearchTemplateResponse", - ", unknown>>; >(this: That, params: ", - "MsearchTemplateRequest", - " | ", - "MsearchTemplateRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "MsearchTemplateResponse", - ">; }; mtermvectors: { (this: That, params?: ", - "MtermvectorsRequest", - " | ", - "MtermvectorsRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "MtermvectorsResponse", - ">; (this: That, params?: ", - "MtermvectorsRequest", - " | ", - "MtermvectorsRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "MtermvectorsResponse", - ", unknown>>; (this: That, params?: ", - "MtermvectorsRequest", - " | ", - "MtermvectorsRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "MtermvectorsResponse", - ">; }; nodes: ", - "default", - "; openPointInTime: { (this: That, params: ", - "OpenPointInTimeRequest", - " | ", - "OpenPointInTimeRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "OpenPointInTimeResponse", - ">; (this: That, params: ", - "OpenPointInTimeRequest", - " | ", - "OpenPointInTimeRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "OpenPointInTimeResponse", - ", unknown>>; (this: That, params: ", - "OpenPointInTimeRequest", - " | ", - "OpenPointInTimeRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "OpenPointInTimeResponse", - ">; }; ping: { (this: That, params?: ", - "PingRequest", - " | ", - "PingRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise; (this: That, params?: ", - "PingRequest", - " | ", - "PingRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - ">; (this: That, params?: ", - "PingRequest", - " | ", - "PingRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise; }; putScript: { (this: That, params: ", - "PutScriptRequest", - " | ", - "PutScriptRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "AcknowledgedResponseBase", - ">; (this: That, params: ", - "PutScriptRequest", - " | ", - "PutScriptRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "AcknowledgedResponseBase", - ", unknown>>; (this: That, params: ", - "PutScriptRequest", - " | ", - "PutScriptRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "AcknowledgedResponseBase", - ">; }; rankEval: { (this: That, params: ", - "RankEvalRequest", - " | ", - "RankEvalRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "RankEvalResponse", - ">; (this: That, params: ", - "RankEvalRequest", - " | ", - "RankEvalRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "RankEvalResponse", - ", unknown>>; (this: That, params: ", - "RankEvalRequest", - " | ", - "RankEvalRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "RankEvalResponse", - ">; }; reindex: { (this: That, params: ", - "ReindexRequest", - " | ", - "ReindexRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ReindexResponse", - ">; (this: That, params: ", - "ReindexRequest", - " | ", - "ReindexRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ReindexResponse", - ", unknown>>; (this: That, params: ", - "ReindexRequest", - " | ", - "ReindexRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ReindexResponse", - ">; }; reindexRethrottle: { (this: That, params: ", - "ReindexRethrottleRequest", - " | ", - "ReindexRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ReindexRethrottleResponse", - ">; (this: That, params: ", - "ReindexRethrottleRequest", - " | ", - "ReindexRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ReindexRethrottleResponse", - ", unknown>>; (this: That, params: ", - "ReindexRethrottleRequest", - " | ", - "ReindexRethrottleRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ReindexRethrottleResponse", - ">; }; renderSearchTemplate: { (this: That, params?: ", - "RenderSearchTemplateRequest", - " | ", - "RenderSearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "RenderSearchTemplateResponse", - ">; (this: That, params?: ", - "RenderSearchTemplateRequest", - " | ", - "RenderSearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "RenderSearchTemplateResponse", - ", unknown>>; (this: That, params?: ", - "RenderSearchTemplateRequest", - " | ", - "RenderSearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "RenderSearchTemplateResponse", - ">; }; rollup: ", - "default", - "; scriptsPainlessExecute: { (this: That, params?: ", - "ScriptsPainlessExecuteRequest", - " | ", - "ScriptsPainlessExecuteRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ScriptsPainlessExecuteResponse", - ">; (this: That, params?: ", - "ScriptsPainlessExecuteRequest", - " | ", - "ScriptsPainlessExecuteRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ScriptsPainlessExecuteResponse", - ", unknown>>; (this: That, params?: ", - "ScriptsPainlessExecuteRequest", - " | ", - "ScriptsPainlessExecuteRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ScriptsPainlessExecuteResponse", - ">; }; scroll: { >(this: That, params: ", - "ScrollRequest", - " | ", - "ScrollRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "ScrollResponse", - ">; >(this: That, params: ", - "ScrollRequest", - " | ", - "ScrollRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "ScrollResponse", - ", unknown>>; >(this: That, params: ", - "ScrollRequest", - " | ", - "ScrollRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "ScrollResponse", - ">; }; searchMvt: { (this: That, params: ", - "SearchMvtRequest", - " | ", - "SearchMvtRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise; (this: That, params: ", - "SearchMvtRequest", - " | ", - "SearchMvtRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - ">; (this: That, params: ", - "SearchMvtRequest", - " | ", - "SearchMvtRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise; }; searchShards: { (this: That, params?: ", - "SearchShardsRequest", - " | ", - "SearchShardsRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "SearchShardsResponse", - ">; (this: That, params?: ", - "SearchShardsRequest", - " | ", - "SearchShardsRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "SearchShardsResponse", - ", unknown>>; (this: That, params?: ", - "SearchShardsRequest", - " | ", - "SearchShardsRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "SearchShardsResponse", - ">; }; searchTemplate: { (this: That, params?: ", - "SearchTemplateRequest", - " | ", - "SearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "SearchTemplateResponse", - ">; (this: That, params?: ", - "SearchTemplateRequest", - " | ", - "SearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "SearchTemplateResponse", - ", unknown>>; (this: That, params?: ", - "SearchTemplateRequest", - " | ", - "SearchTemplateRequest", - " | undefined, options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "SearchTemplateResponse", - ">; }; searchableSnapshots: ", - "default", - "; shutdown: ", - "default", - "; slm: ", - "default", - "; snapshot: ", - "default", - "; sql: ", - "default", - "; ssl: ", - "default", - "; tasks: ", - "default", - "; termsEnum: { (this: That, params: ", - "TermsEnumRequest", - " | ", - "TermsEnumRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "TermsEnumResponse", - ">; (this: That, params: ", - "TermsEnumRequest", - " | ", - "TermsEnumRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "TermsEnumResponse", - ", unknown>>; (this: That, params: ", - "TermsEnumRequest", - " | ", - "TermsEnumRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "TermsEnumResponse", - ">; }; termvectors: { (this: That, params: ", - "TermvectorsRequest", - " | ", - "TermvectorsRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "TermvectorsResponse", - ">; (this: That, params: ", - "TermvectorsRequest", - " | ", - "TermvectorsRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "TermvectorsResponse", - ", unknown>>; (this: That, params: ", - "TermvectorsRequest", - " | ", - "TermvectorsRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "TermvectorsResponse", - ">; }; textStructure: ", - "default", - "; transform: ", - "default", - "; updateByQuery: { (this: That, params: ", - "UpdateByQueryRequest", - " | ", - "UpdateByQueryRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "UpdateByQueryResponse", - ">; (this: That, params: ", - "UpdateByQueryRequest", - " | ", - "UpdateByQueryRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "UpdateByQueryResponse", - ", unknown>>; (this: That, params: ", - "UpdateByQueryRequest", - " | ", - "UpdateByQueryRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "UpdateByQueryResponse", - ">; }; updateByQueryRethrottle: { (this: That, params: ", - "UpdateByQueryRethrottleRequest", - " | ", - "UpdateByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithOutMeta", - " | undefined): Promise<", - "UpdateByQueryRethrottleResponse", - ">; (this: That, params: ", - "UpdateByQueryRethrottleRequest", - " | ", - "UpdateByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptionsWithMeta", - " | undefined): Promise<", - "TransportResult", - "<", - "UpdateByQueryRethrottleResponse", - ", unknown>>; (this: That, params: ", - "UpdateByQueryRethrottleRequest", - " | ", - "UpdateByQueryRethrottleRequest", - ", options?: ", - "TransportRequestOptions", - " | undefined): Promise<", - "UpdateByQueryRethrottleResponse", - ">; }; watcher: ", - "default", - "; xpack: ", - "default", - "; }" - ], - "path": "src/plugins/data_views/server/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsServerPluginStart.dataViewsServiceFactory.$3", - "type": "Object", - "tags": [], - "label": "request", - "description": [], - "signature": [ - { - "pluginId": "core", - "scope": "server", - "docId": "kibCoreHttpPluginApi", - "section": "def-server.KibanaRequest", - "text": "KibanaRequest" - }, - " | undefined" - ], - "path": "src/plugins/data_views/server/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataViewsServerPluginStart.dataViewsServiceFactory.$4", - "type": "CompoundType", - "tags": [], - "label": "byPassCapabilities", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/server/types.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor", - "type": "Interface", - "tags": [], - "label": "FieldDescriptor", - "description": [], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.aggregatable", - "type": "boolean", - "tags": [], - "label": "aggregatable", - "description": [], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.readFromDocValues", - "type": "boolean", - "tags": [], - "label": "readFromDocValues", - "description": [], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.searchable", - "type": "boolean", - "tags": [], - "label": "searchable", - "description": [], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.esTypes", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.subType", - "type": "Object", - "tags": [], - "label": "subType", - "description": [], - "signature": [ - "FieldSubType | undefined" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.FieldDescriptor.metadata_field", - "type": "CompoundType", - "tags": [], - "label": "metadata_field", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.IEsSearchRequest", - "type": "Interface", - "tags": [], - "label": "IEsSearchRequest", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchRequest", - "text": "IEsSearchRequest" - }, - " extends ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IKibanaSearchRequest", - "text": "IKibanaSearchRequest" - }, - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ISearchRequestParams", - "text": "ISearchRequestParams" - }, - ">" - ], - "path": "src/plugins/data/common/search/strategies/es_search/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.IEsSearchRequest.indexType", - "type": "string", - "tags": [], - "label": "indexType", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/common/search/strategies/es_search/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions", - "type": "Interface", - "tags": [], - "label": "ISearchOptions", - "description": [], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.abortSignal", - "type": "Object", - "tags": [], - "label": "abortSignal", - "description": [ - "\nAn `AbortSignal` that allows the caller of `search` to abort a search request." - ], - "signature": [ - "AbortSignal | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.strategy", - "type": "string", - "tags": [], - "label": "strategy", - "description": [ - "\nUse this option to force using a specific server side search strategy. Leave empty to use the default strategy." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.legacyHitsTotal", - "type": "CompoundType", - "tags": [], - "label": "legacyHitsTotal", - "description": [ - "\nRequest the legacy format for the total number of hits. If sending `rest_total_hits_as_int` to\nsomething other than `true`, this should be set to `false`." - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.sessionId", - "type": "string", - "tags": [], - "label": "sessionId", - "description": [ - "\nA session ID, grouping multiple search requests into a single session." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.isStored", - "type": "CompoundType", - "tags": [], - "label": "isStored", - "description": [ - "\nWhether the session is already saved (i.e. sent to background)" - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.isRestore", - "type": "CompoundType", - "tags": [], - "label": "isRestore", - "description": [ - "\nWhether the session is restored (i.e. search requests should re-use the stored search IDs,\nrather than starting from scratch)" - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.indexPattern", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [ - "\nIndex pattern reference is used for better error messages" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.inspector", - "type": "Object", - "tags": [], - "label": "inspector", - "description": [ - "\nInspector integration options" - ], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IInspectorInfo", - "text": "IInspectorInfo" - }, - " | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.ISearchOptions.executionContext", - "type": "Object", - "tags": [], - "label": "executionContext", - "description": [], - "signature": [ - "KibanaExecutionContext", - " | undefined" - ], - "path": "src/plugins/data/common/search/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - } - ], - "enums": [ - { - "parentPluginId": "data", - "id": "def-server.ES_FIELD_TYPES", - "type": "Enum", - "tags": [], - "label": "ES_FIELD_TYPES", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.KBN_FIELD_TYPES", - "type": "Enum", - "tags": [], - "label": "KBN_FIELD_TYPES", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.METRIC_TYPES", - "type": "Enum", - "tags": [], - "label": "METRIC_TYPES", - "description": [], - "path": "src/plugins/data/common/search/aggs/metrics/metric_agg_types.ts", - "deprecated": false, - "initialIsOpen": false - } - ], - "misc": [ - { - "parentPluginId": "data", - "id": "def-server.DEFAULT_QUERY_LANGUAGE", - "type": "string", - "tags": [], - "label": "DEFAULT_QUERY_LANGUAGE", - "description": [], - "signature": [ - "\"kuery\"" - ], - "path": "src/plugins/data/common/constants.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.ES_SEARCH_STRATEGY", - "type": "string", - "tags": [], - "label": "ES_SEARCH_STRATEGY", - "description": [], - "signature": [ - "\"es\"" - ], - "path": "src/plugins/data/common/search/strategies/es_search/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.EsQueryConfig", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "EsQueryConfig", - "description": [], - "signature": [ - "KueryQueryOptions", - " & { allowLeadingWildcards: boolean; queryStringOptions: ", - "SerializableRecord", - "; ignoreFilterIfFieldNotInIndex: boolean; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.Filter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "Filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [ - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/view_alert/view_alert_route.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/view_alert/view_alert_route.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.IEsSearchResponse", - "type": "Type", - "tags": [], - "label": "IEsSearchResponse", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IKibanaSearchResponse", - "text": "IKibanaSearchResponse" - }, - "<", - "SearchResponse", - ">>" - ], - "path": "src/plugins/data/common/search/strategies/es_search/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.KueryNode", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "KueryNode", - "description": [], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.ParsedInterval", - "type": "Type", - "tags": [], - "label": "ParsedInterval", - "description": [], - "signature": [ - "{ value: number; unit: ", - "Unit", - "; type: \"calendar\" | \"fixed\"; }" - ], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_es_interval.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.Query", - "type": "Type", - "tags": [], - "label": "Query", - "description": [], - "signature": [ - "{ query: string | { [key: string]: any; }; language: string; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.TimeRange", - "type": "Type", - "tags": [ - "deprecated", - "deprecated" - ], - "label": "TimeRange", - "description": [ - "\n" - ], - "signature": [ - "{ from: string; to: string; mode?: \"absolute\" | \"relative\" | undefined; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [ - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/locator.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/locator.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/types.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/types.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/search_embeddable_factory.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/search_embeddable_factory.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/layout/types.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/layout/types.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/top_nav/discover_topnav.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/top_nav/discover_topnav.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/visualize_app/types.ts" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/visualize_app/types.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/types.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/types.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/types.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/top_nav/show_share_modal.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/top_nav/show_share_modal.tsx" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/public/services/kibana/options_list.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/public/services/kibana/options_list.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/locator.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/locator.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/reducers/map/types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/reducers/map/types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/selectors/map_selectors.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/selectors/map_selectors.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/actions/map_actions.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/actions/map_actions.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/url_state/global_sync.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/url_state/global_sync.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/index.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/index.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" - }, - { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/types/embeddables.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/types/embeddables.ts" - }, - { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" - }, - { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" - }, - { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" - }, - { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/url_state.ts" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/url_state.ts" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx" - }, - { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" - }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_container.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_container.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_container.ts" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg_group.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg_group.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx" - }, - { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable_factory.ts" - }, - { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable_factory.ts" - }, - { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/timelion_vis_fn.ts" - }, - { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/timelion_vis_fn.ts" - }, - { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts" - }, - { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts" - }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx" - }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_fn.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_fn.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_request_handler.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_request_handler.ts" - }, - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/common/locator.ts" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/common/locator.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/types.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/types.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/control_types/options_list/types.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/control_types/options_list/types.ts" - }, - { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts" - }, - { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts" - }, - { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts" - }, - { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/types.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/connected_components/timeslider/timeslider.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/connected_components/timeslider/timeslider.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts" - }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/common/util/date_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/common/util/date_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/common/util/date_utils.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/types.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/types.ts" - }, - { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/types.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/functions/timelion.ts" - }, - { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/functions/timelion.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts" - }, - { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/data_model/time_cache.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/data_model/time_cache.ts" - }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/data_model/time_cache.ts" - } - ], - "initialIsOpen": false - } - ], - "objects": [ - { - "parentPluginId": "data", - "id": "def-server.esFilters", - "type": "Object", - "tags": [], - "label": "esFilters", - "description": [], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildQueryFilter", - "type": "Function", - "tags": [], - "label": "buildQueryFilter", - "description": [], - "signature": [ - "(query: (Record & { query_string?: { query: string; fields?: string[] | undefined; } | undefined; }) | undefined, index: string, alias?: string | undefined, meta?: ", - "FilterMeta", - " | undefined) => { query: (Record & { query_string?: { query: string; fields?: string[] | undefined; } | undefined; }) | undefined; meta: { alias: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index: string; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; }" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildQueryFilter.$1", - "type": "CompoundType", - "tags": [], - "label": "query", - "description": [], - "signature": [ - "(Record & { query_string?: { query: string; fields?: string[] | undefined; } | undefined; }) | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildQueryFilter.$2", - "type": "string", - "tags": [], - "label": "index", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildQueryFilter.$3", - "type": "string", - "tags": [], - "label": "alias", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildQueryFilter.$4", - "type": "Object", - "tags": [], - "label": "meta", - "description": [], - "signature": [ - "FilterMeta", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildCustomFilter", - "type": "Function", - "tags": [], - "label": "buildCustomFilter", - "description": [], - "signature": [ - "(indexPatternString: string, queryDsl: ", - "QueryDslQueryContainer", - ", disabled: boolean, negate: boolean, alias: string | null, store: ", - "FilterStateStore", - ") => ", - "Filter" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildCustomFilter.$1", - "type": "string", - "tags": [], - "label": "indexPatternString", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildCustomFilter.$2", - "type": "Object", - "tags": [], - "label": "queryDsl", - "description": [], - "signature": [ - "QueryDslQueryContainer" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildCustomFilter.$3", - "type": "boolean", - "tags": [], - "label": "disabled", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildCustomFilter.$4", - "type": "boolean", - "tags": [], - "label": "negate", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildCustomFilter.$5", - "type": "CompoundType", - "tags": [], - "label": "alias", - "description": [], - "signature": [ - "string | null" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildCustomFilter.$6", - "type": "Enum", - "tags": [], - "label": "store", - "description": [], - "signature": [ - "FilterStateStore" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildEmptyFilter", - "type": "Function", - "tags": [], - "label": "buildEmptyFilter", - "description": [], - "signature": [ - "(isPinned: boolean, index?: string | undefined) => ", - "Filter" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildEmptyFilter.$1", - "type": "boolean", - "tags": [], - "label": "isPinned", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildEmptyFilter.$2", - "type": "string", - "tags": [], - "label": "index", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildExistsFilter", - "type": "Function", - "tags": [], - "label": "buildExistsFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", indexPattern: ", - "DataViewBase", - ") => ", - "ExistsFilter" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildExistsFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildExistsFilter.$2", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildFilter", - "type": "Function", - "tags": [], - "label": "buildFilter", - "description": [], - "signature": [ - "(indexPattern: ", - "DataViewBase", - ", field: ", - "DataViewFieldBase", - ", type: ", - "FILTERS", - ", negate: boolean, disabled: boolean, params: ", - "Serializable", - ", alias: string | null, store?: ", - "FilterStateStore", - " | undefined) => ", - "Filter" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildFilter.$1", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildFilter.$2", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildFilter.$3", - "type": "Enum", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "FILTERS" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildFilter.$4", - "type": "boolean", - "tags": [], - "label": "negate", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildFilter.$5", - "type": "boolean", - "tags": [], - "label": "disabled", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildFilter.$6", - "type": "CompoundType", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "string | number | boolean | ", - "SerializableRecord", - " | SerializableArray | null | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildFilter.$7", - "type": "CompoundType", - "tags": [], - "label": "alias", - "description": [], - "signature": [ - "string | null" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildFilter.$8", - "type": "CompoundType", - "tags": [], - "label": "store", - "description": [], - "signature": [ - "FilterStateStore", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildPhraseFilter", - "type": "Function", - "tags": [], - "label": "buildPhraseFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", value: PhraseFilterValue, indexPattern: ", - "DataViewBase", - ") => ", - "PhraseFilter", - " | ", - "ScriptedPhraseFilter" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildPhraseFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildPhraseFilter.$2", - "type": "CompoundType", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "string | number | boolean" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildPhraseFilter.$3", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildPhrasesFilter", - "type": "Function", - "tags": [], - "label": "buildPhrasesFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", params: PhraseFilterValue[], indexPattern: ", - "DataViewBase", - ") => ", - "PhrasesFilter" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildPhrasesFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildPhrasesFilter.$2", - "type": "Array", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "PhraseFilterValue[]" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildPhrasesFilter.$3", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildRangeFilter", - "type": "Function", - "tags": [], - "label": "buildRangeFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", params: ", - "RangeFilterParams", - ", indexPattern?: ", - "DataViewBase", - " | undefined, formattedValue?: string | undefined) => ", - "RangeFilter", - " | ", - "ScriptedRangeFilter", - " | MatchAllRangeFilter" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildRangeFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildRangeFilter.$2", - "type": "Object", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "RangeFilterParams" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildRangeFilter.$3", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "DataViewBase", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.buildRangeFilter.$4", - "type": "string", - "tags": [], - "label": "formattedValue", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esFilters.isFilterDisabled", - "type": "Function", - "tags": [], - "label": "isFilterDisabled", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => boolean" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esFilters.isFilterDisabled.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.esKuery", - "type": "Object", - "tags": [], - "label": "esKuery", - "description": [], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esKuery.fromKueryExpression", - "type": "Function", - "tags": [], - "label": "fromKueryExpression", - "description": [], - "signature": [ - "(expression: string | ", - "QueryDslQueryContainer", - ", parseOptions?: Partial<", - "KueryParseOptions", - "> | undefined) => ", - "KueryNode" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esKuery.fromKueryExpression.$1", - "type": "CompoundType", - "tags": [], - "label": "expression", - "description": [], - "signature": [ - "string | ", - "QueryDslQueryContainer" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esKuery.fromKueryExpression.$2", - "type": "Object", - "tags": [], - "label": "parseOptions", - "description": [], - "signature": [ - "Partial<", - "KueryParseOptions", - "> | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esKuery.toElasticsearchQuery", - "type": "Function", - "tags": [], - "label": "toElasticsearchQuery", - "description": [], - "signature": [ - "(node: ", - "KueryNode", - ", indexPattern?: ", - "DataViewBase", - " | undefined, config?: ", - "KueryQueryOptions", - " | undefined, context?: Record | undefined) => ", - "QueryDslQueryContainer" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esKuery.toElasticsearchQuery.$1", - "type": "Object", - "tags": [], - "label": "node", - "description": [], - "signature": [ - "KueryNode" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esKuery.toElasticsearchQuery.$2", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "DataViewBase", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esKuery.toElasticsearchQuery.$3", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "KueryQueryOptions", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esKuery.toElasticsearchQuery.$4", - "type": "Object", - "tags": [], - "label": "context", - "description": [], - "signature": [ - "Record | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.esQuery", - "type": "Object", - "tags": [], - "label": "esQuery", - "description": [], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esQuery.buildQueryFromFilters", - "type": "Function", - "tags": [], - "label": "buildQueryFromFilters", - "description": [], - "signature": [ - "(filters: ", - "Filter", - "[] | undefined, indexPattern: ", - "DataViewBase", - " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => ", - "BoolQuery" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esQuery.buildQueryFromFilters.$1", - "type": "Array", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - "Filter", - "[] | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esQuery.buildQueryFromFilters.$2", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "DataViewBase", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esQuery.buildQueryFromFilters.$3", - "type": "CompoundType", - "tags": [], - "label": "ignoreFilterIfFieldNotInIndex", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esQuery.getEsQueryConfig", - "type": "Function", - "tags": [], - "label": "getEsQueryConfig", - "description": [], - "signature": [ - "(config: KibanaConfig) => ", - "EsQueryConfig" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esQuery.getEsQueryConfig.$1", - "type": "Object", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "KibanaConfig" - ], - "path": "src/plugins/data/common/es_query/get_es_query_config.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.esQuery.buildEsQuery", - "type": "Function", - "tags": [], - "label": "buildEsQuery", - "description": [], - "signature": [ - "(indexPattern: ", - "DataViewBase", - " | undefined, queries: ", - "Query", - " | ", - "Query", - "[], filters: ", - "Filter", - " | ", - "Filter", - "[], config?: ", - "EsQueryConfig", - " | undefined) => { bool: ", - "BoolQuery", - "; }" - ], - "path": "src/plugins/data/server/deprecated.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.esQuery.buildEsQuery.$1", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "DataViewBase", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esQuery.buildEsQuery.$2", - "type": "CompoundType", - "tags": [], - "label": "queries", - "description": [], - "signature": [ - "Query", - " | ", - "Query", - "[]" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esQuery.buildEsQuery.$3", - "type": "CompoundType", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - "Filter", - " | ", - "Filter", - "[]" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.esQuery.buildEsQuery.$4", - "type": "CompoundType", - "tags": [], - "label": "config", - "description": [], - "signature": [ - "EsQueryConfig", - " | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.exporters", - "type": "Object", - "tags": [], - "label": "exporters", - "description": [], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.exporters.datatableToCSV", - "type": "Function", - "tags": [], - "label": "datatableToCSV", - "description": [], - "signature": [ - "({ columns, rows }: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - }, - ", { csvSeparator, quoteValues, formatFactory, raw, escapeFormulaValues }: CSVOptions) => string" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.exporters.datatableToCSV.$1", - "type": "Object", - "tags": [], - "label": "__0", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - } - ], - "path": "src/plugins/data/common/exports/export_csv.tsx", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.exporters.datatableToCSV.$2", - "type": "Object", - "tags": [], - "label": "__1", - "description": [], - "signature": [ - "CSVOptions" - ], - "path": "src/plugins/data/common/exports/export_csv.tsx", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.exporters.CSV_MIME_TYPE", - "type": "string", - "tags": [], - "label": "CSV_MIME_TYPE", - "description": [], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.search", - "type": "Object", - "tags": [], - "label": "search", - "description": [], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.search.aggs", - "type": "Object", - "tags": [], - "label": "aggs", - "description": [], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.search.aggs.CidrMask", - "type": "Object", - "tags": [], - "label": "CidrMask", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.CidrMask", - "text": "CidrMask" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.dateHistogramInterval", - "type": "Function", - "tags": [], - "label": "dateHistogramInterval", - "description": [], - "signature": [ - "(interval: string) => Interval" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.search.aggs.dateHistogramInterval.$1", - "type": "string", - "tags": [], - "label": "interval", - "description": [], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/date_histogram_interval.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.IpAddress", - "type": "Object", - "tags": [], - "label": "IpAddress", - "description": [], - "signature": [ - "typeof ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IpAddress", - "text": "IpAddress" - } - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.parseInterval", - "type": "Function", - "tags": [], - "label": "parseInterval", - "description": [], - "signature": [ - "(interval: string) => moment.Duration | null" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.search.aggs.parseInterval.$1", - "type": "string", - "tags": [], - "label": "interval", - "description": [], - "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.calcAutoIntervalLessThan", - "type": "Function", - "tags": [], - "label": "calcAutoIntervalLessThan", - "description": [], - "signature": [ - "(maxBucketCount: number, duration: number) => moment.Duration" - ], - "path": "src/plugins/data/server/index.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-server.search.aggs.calcAutoIntervalLessThan.$1", - "type": "number", - "tags": [], - "label": "maxBucketCount", - "description": [], - "path": "src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_auto_interval.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.search.aggs.calcAutoIntervalLessThan.$2", - "type": "number", - "tags": [], - "label": "duration", - "description": [], - "path": "src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_auto_interval.ts", - "deprecated": false - } - ] - } - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-server.UI_SETTINGS", - "type": "Object", - "tags": [], - "label": "UI_SETTINGS", - "description": [], - "signature": [ - "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; readonly DATE_FORMAT: \"dateFormat\"; readonly DATEFORMAT_TZ: \"dateFormat:tz\"; }" - ], - "path": "src/plugins/data/common/constants.ts", - "deprecated": false, - "initialIsOpen": false - } - ], - "setup": { - "parentPluginId": "data", - "id": "def-server.DataPluginSetup", - "type": "Interface", - "tags": [], - "label": "DataPluginSetup", - "description": [], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataPluginSetup.search", - "type": "Object", - "tags": [], - "label": "search", - "description": [], - "signature": [ - "ISearchSetup" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataPluginSetup.query", - "type": "Object", - "tags": [], - "label": "query", - "description": [], - "signature": [ - "QuerySetup" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataPluginSetup.fieldFormats", - "type": "Object", - "tags": [ - "deprecated" - ], - "label": "fieldFormats", - "description": [], - "signature": [ - { - "pluginId": "fieldFormats", - "scope": "server", - "docId": "kibFieldFormatsPluginApi", - "section": "def-server.FieldFormatsSetup", - "text": "FieldFormatsSetup" - } - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": true, - "references": [] - } - ], - "lifecycle": "setup", - "initialIsOpen": true - }, - "start": { - "parentPluginId": "data", - "id": "def-server.DataPluginStart", - "type": "Interface", - "tags": [], - "label": "DataPluginStart", - "description": [], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-server.DataPluginStart.search", - "type": "Object", - "tags": [], - "label": "search", - "description": [], - "signature": [ - "ISearchStart", - "<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchRequest", - "text": "IEsSearchRequest" - }, - ", ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.IEsSearchResponse", - "text": "IEsSearchResponse" - }, - ">" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataPluginStart.fieldFormats", - "type": "Object", - "tags": [ - "deprecated" - ], - "label": "fieldFormats", - "description": [], - "signature": [ - { - "pluginId": "fieldFormats", - "scope": "server", - "docId": "kibFieldFormatsPluginApi", - "section": "def-server.FieldFormatsStart", - "text": "FieldFormatsStart" - } - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": true, - "references": [ - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/plugin.ts" - } - ] - }, - { - "parentPluginId": "data", - "id": "def-server.DataPluginStart.indexPatterns", - "type": "Object", - "tags": [], - "label": "indexPatterns", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "server", - "docId": "kibDataViewsPluginApi", - "section": "def-server.DataViewsServerPluginStart", - "text": "DataViewsServerPluginStart" - } - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-server.DataPluginStart.datatableUtilities", - "type": "Object", - "tags": [], - "label": "datatableUtilities", - "description": [ - "\nDatatable type utility functions." - ], - "signature": [ - "DatatableUtilitiesService" - ], - "path": "src/plugins/data/server/plugin.ts", - "deprecated": false - } - ], - "lifecycle": "start", - "initialIsOpen": true - } - }, - "common": { - "classes": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService", - "type": "Class", - "tags": [], - "label": "DatatableUtilitiesService", - "description": [], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "aggs", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggsCommonStart", - "text": "AggsCommonStart" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.Unnamed.$2", - "type": "Object", - "tags": [], - "label": "dataViews", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewsContract", - "text": "DataViewsContract" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.Unnamed.$3", - "type": "Object", - "tags": [], - "label": "fieldFormats", - "description": [], - "signature": [ - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FieldFormatsStartCommon", - "text": "FieldFormatsStartCommon" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.clearField", - "type": "Function", - "tags": [], - "label": "clearField", - "description": [], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ") => void" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.clearField.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.clearFieldFormat", - "type": "Function", - "tags": [], - "label": "clearFieldFormat", - "description": [], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ") => void" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.clearFieldFormat.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getAggConfig", - "type": "Function", - "tags": [], - "label": "getAggConfig", - "description": [], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ") => Promise<", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.AggConfig", - "text": "AggConfig" - }, - " | undefined>" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getAggConfig.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getDateHistogramMeta", - "type": "Function", - "tags": [], - "label": "getDateHistogramMeta", - "description": [ - "\nHelper function returning the used interval, used time zone and applied time filters for data table column created by the date_histogramm agg type.\n\"auto\" will get expanded to the actually used interval.\nIf the column is not a column created by a date_histogram aggregation of the esaggs data source,\nthis function will return undefined." - ], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ", defaults?: Partial<{ timeZone: string; }>) => DateHistogramMeta | undefined" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getDateHistogramMeta.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getDateHistogramMeta.$2", - "type": "Object", - "tags": [], - "label": "defaults", - "description": [], - "signature": [ - "Partial<{ timeZone: string; }>" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getDataView", - "type": "Function", - "tags": [], - "label": "getDataView", - "description": [], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ") => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | undefined>" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getDataView.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getField", - "type": "Function", - "tags": [], - "label": "getField", - "description": [], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ") => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - " | undefined>" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getField.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getFieldFormat", - "type": "Function", - "tags": [], - "label": "getFieldFormat", - "description": [], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ") => ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - " | undefined" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getFieldFormat.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getInterval", - "type": "Function", - "tags": [], - "label": "getInterval", - "description": [], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ") => string | undefined" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getInterval.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getNumberHistogramInterval", - "type": "Function", - "tags": [], - "label": "getNumberHistogramInterval", - "description": [ - "\nHelper function returning the used interval for data table column created by the histogramm agg type.\n\"auto\" will get expanded to the actually used interval.\nIf the column is not a column created by a histogram aggregation of the esaggs data source,\nthis function will return undefined." - ], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ") => number | undefined" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getNumberHistogramInterval.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getTotalCount", - "type": "Function", - "tags": [], - "label": "getTotalCount", - "description": [], - "signature": [ - "(table: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - }, - ") => number | undefined" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.getTotalCount.$1", - "type": "Object", - "tags": [], - "label": "table", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.hasPrecisionError", - "type": "Function", - "tags": [], - "label": "hasPrecisionError", - "description": [], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ") => ", - "Serializable" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.hasPrecisionError.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.isFilterable", - "type": "Function", - "tags": [], - "label": "isFilterable", - "description": [], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ") => boolean" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.isFilterable.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.setFieldFormat", - "type": "Function", - "tags": [], - "label": "setFieldFormat", - "description": [], - "signature": [ - "(column: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - ", fieldFormat: ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - ") => void" - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.setFieldFormat.$1", - "type": "Object", - "tags": [], - "label": "column", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DatatableUtilitiesService.setFieldFormat.$2", - "type": "Object", - "tags": [], - "label": "fieldFormat", - "description": [], - "signature": [ - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView", - "type": "Class", - "tags": [], - "label": "DataView", - "description": [ - "\nData view class. Central kibana abstraction around multiple indices." - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " implements ", - "DataViewBase" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.id", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "\nSaved object id" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.title", - "type": "string", - "tags": [], - "label": "title", - "description": [ - "\nTitle of data view" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.fieldFormatMap", - "type": "Object", - "tags": [], - "label": "fieldFormatMap", - "description": [ - "\nMap of field formats by field name" - ], - "signature": [ - "{ [x: string]: any; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.typeMeta", - "type": "Object", - "tags": [], - "label": "typeMeta", - "description": [ - "\nOnly used by rollup indices, used by rollup specific endpoint to load field list." - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.TypeMeta", - "text": "TypeMeta" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.fields", - "type": "CompoundType", - "tags": [], - "label": "fields", - "description": [ - "\nField list, in extended array format" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPatternFieldList", - "text": "IIndexPatternFieldList" - }, - " & { toSpec: () => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewFieldMap", - "text": "DataViewFieldMap" - }, - "; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.timeFieldName", - "type": "string", - "tags": [], - "label": "timeFieldName", - "description": [ - "\nTimestamp field name" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.type", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "\nType is used to identify rollup index patterns." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.flattenHit", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "flattenHit", - "description": [], - "signature": [ - "(hit: Record, deep?: boolean | undefined) => Record" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": true, - "references": [ - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.ts" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" - }, - { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" - } - ], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.flattenHit.$1", - "type": "Object", - "tags": [], - "label": "hit", - "description": [], - "signature": [ - "{ [x: string]: any; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.flattenHit.$2", - "type": "CompoundType", - "tags": [], - "label": "deep", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - } - ] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.metaFields", - "type": "Array", - "tags": [], - "label": "metaFields", - "description": [ - "\nList of meta fields by name" - ], - "signature": [ - "string[]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.version", - "type": "string", - "tags": [], - "label": "version", - "description": [ - "\nSavedObject version" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.sourceFilters", - "type": "Array", - "tags": [], - "label": "sourceFilters", - "description": [ - "\nArray of filters - hides fields in discover" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.SourceFilter", - "text": "SourceFilter" - }, - "[] | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.namespaces", - "type": "Array", - "tags": [], - "label": "namespaces", - "description": [ - "\nArray of namespace ids" - ], - "signature": [ - "string[]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.allowNoIndex", - "type": "boolean", - "tags": [], - "label": "allowNoIndex", - "description": [ - "\nPrevents errors when index pattern exists before indices" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.name", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "\nName of the data view. Human readable name used to differentiate data view." - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [ - "\nconstructor" - ], - "signature": [ - "any" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.Unnamed.$1", - "type": "Object", - "tags": [], - "label": "config", - "description": [ - "- config data and dependencies" - ], - "signature": [ - "DataViewDeps" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getName", - "type": "Function", - "tags": [], - "label": "getName", - "description": [ - "\nGet name of Data View" - ], - "signature": [ - "() => string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getOriginalSavedObjectBody", - "type": "Function", - "tags": [], - "label": "getOriginalSavedObjectBody", - "description": [ - "\nGet last saved saved object fields" - ], - "signature": [ - "() => { fieldAttrs?: string | undefined; title?: string | undefined; timeFieldName?: string | undefined; fields?: string | undefined; sourceFilters?: string | undefined; fieldFormatMap?: string | undefined; typeMeta?: string | undefined; type?: string | undefined; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.resetOriginalSavedObjectBody", - "type": "Function", - "tags": [], - "label": "resetOriginalSavedObjectBody", - "description": [ - "\nReset last saved saved object fields. Used after saving." - ], - "signature": [ - "() => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getFieldAttrs", - "type": "Function", - "tags": [], - "label": "getFieldAttrs", - "description": [ - "\nReturns field attributes map" - ], - "signature": [ - "() => { [x: string]: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrSet", - "text": "FieldAttrSet" - }, - "; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getComputedFields", - "type": "Function", - "tags": [], - "label": "getComputedFields", - "description": [ - "\nReturns scripted fields" - ], - "signature": [ - "() => { storedFields: string[]; scriptFields: Record; docvalueFields: { field: string; format: string; }[]; runtimeFields: ", - "MappingRuntimeFields", - "; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.toSpec", - "type": "Function", - "tags": [], - "label": "toSpec", - "description": [ - "\nCreates static representation of the data view." - ], - "signature": [ - "() => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getSourceFiltering", - "type": "Function", - "tags": [], - "label": "getSourceFiltering", - "description": [ - "\nGet the source filtering configuration for that index." - ], - "signature": [ - "() => { excludes: string[]; }" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.removeScriptedField", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "removeScriptedField", - "description": [ - "\nRemoves scripted field from field list." - ], - "signature": [ - "(fieldName: string) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": true, - "references": [ - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/field_editor/field_editor.tsx" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - } - ], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.removeScriptedField.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "name of scripted field to remove" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getNonScriptedFields", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "getNonScriptedFields", - "description": [ - "\n" - ], - "signature": [ - "() => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - "[]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": true, - "references": [ - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" - }, - { - "plugin": "graph", - "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - }, - { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts" - } - ], - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getScriptedFields", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "getScriptedFields", - "description": [ - "\n" - ], - "signature": [ - "() => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - "[]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": true, - "references": [ - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_views.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/server/register_index_pattern_usage_collection.ts" - }, - { - "plugin": "dataViewManagement", - "path": "src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - }, - { - "plugin": "dataViews", - "path": "src/plugins/data_views/common/data_views/data_view.test.ts" - } - ], - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.isTimeBased", - "type": "Function", - "tags": [], - "label": "isTimeBased", - "description": [ - "\nDoes the data view have a timestamp field?" - ], - "signature": [ - "() => this is ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.TimeBasedDataView", - "text": "TimeBasedDataView" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.isTimeNanosBased", - "type": "Function", - "tags": [], - "label": "isTimeNanosBased", - "description": [ - "\nDoes the data view have a timestamp field and is it a date nanos field?" - ], - "signature": [ - "() => this is ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.TimeBasedDataView", - "text": "TimeBasedDataView" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getTimeField", - "type": "Function", - "tags": [], - "label": "getTimeField", - "description": [ - "\nGet timestamp field as DataViewField or return undefined" - ], - "signature": [ - "() => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getFieldByName", - "type": "Function", - "tags": [], - "label": "getFieldByName", - "description": [ - "\nGet field by name." - ], - "signature": [ - "(name: string) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.getFieldByName.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "field name" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getAggregationRestrictions", - "type": "Function", - "tags": [], - "label": "getAggregationRestrictions", - "description": [ - "\nGet aggregation restrictions. Rollup fields can only perform a subset of aggregations." - ], - "signature": [ - "() => Record | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getAsSavedObjectBody", - "type": "Function", - "tags": [], - "label": "getAsSavedObjectBody", - "description": [ - "\nReturns index pattern as saved object body for saving" - ], - "signature": [ - "() => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewAttributes", - "text": "DataViewAttributes" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getFormatterForField", - "type": "Function", - "tags": [], - "label": "getFormatterForField", - "description": [ - "\nProvide a field, get its formatter" - ], - "signature": [ - "(field: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - ") => ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.getFormatterForField.$1", - "type": "CompoundType", - "tags": [], - "label": "field", - "description": [ - "field to get formatter for" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.addRuntimeField", - "type": "Function", - "tags": [], - "label": "addRuntimeField", - "description": [ - "\nAdd a runtime field - Appended to existing mapped field or a new field is\ncreated as appropriate." - ], - "signature": [ - "(name: string, runtimeField: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.RuntimeField", - "text": "RuntimeField" - }, - ") => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - "[]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.addRuntimeField.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "Field name" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.addRuntimeField.$2", - "type": "Object", - "tags": [], - "label": "runtimeField", - "description": [ - "Runtime field definition" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.RuntimeField", - "text": "RuntimeField" - } - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.hasRuntimeField", - "type": "Function", - "tags": [], - "label": "hasRuntimeField", - "description": [ - "\nChecks if runtime field exists" - ], - "signature": [ - "(name: string) => boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.hasRuntimeField.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "field name" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getRuntimeField", - "type": "Function", - "tags": [], - "label": "getRuntimeField", - "description": [ - "\nReturns runtime field if exists" - ], - "signature": [ - "(name: string) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.RuntimeField", - "text": "RuntimeField" - }, - " | null" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.getRuntimeField.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "Runtime field name" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getAllRuntimeFields", - "type": "Function", - "tags": [], - "label": "getAllRuntimeFields", - "description": [ - "\nGet all runtime field definitions." - ], - "signature": [ - "() => Record" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [ - "map of runtime field definitions by field name" - ] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getFieldsByRuntimeFieldName", - "type": "Function", - "tags": [], - "label": "getFieldsByRuntimeFieldName", - "description": [ - "\nReturns data view fields backed by runtime fields." - ], - "signature": [ - "(name: string) => Record | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.getFieldsByRuntimeFieldName.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "runtime field name" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "map of DataViewFields (that are runtime fields) by field name" - ] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.replaceAllRuntimeFields", - "type": "Function", - "tags": [], - "label": "replaceAllRuntimeFields", - "description": [ - "\nReplaces all existing runtime fields with new fields." - ], - "signature": [ - "(newFields: Record) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.replaceAllRuntimeFields.$1", - "type": "Object", - "tags": [], - "label": "newFields", - "description": [ - "Map of runtime field definitions by field name" - ], - "signature": [ - "Record" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.removeRuntimeField", - "type": "Function", - "tags": [], - "label": "removeRuntimeField", - "description": [ - "\nRemove a runtime field - removed from mapped field or removed unmapped\nfield as appropriate. Doesn't clear associated field attributes." - ], - "signature": [ - "(name: string) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.removeRuntimeField.$1", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "- Field name to remove" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getRuntimeMappings", - "type": "Function", - "tags": [], - "label": "getRuntimeMappings", - "description": [ - "\nReturn the \"runtime_mappings\" section of the ES search query." - ], - "signature": [ - "() => ", - "MappingRuntimeFields" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.getFormatterForFieldNoDefault", - "type": "Function", - "tags": [], - "label": "getFormatterForFieldNoDefault", - "description": [ - "\nGet formatter for a given field name. Return undefined if none exists." - ], - "signature": [ - "(fieldname: string) => ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.FieldFormat", - "text": "FieldFormat" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.getFormatterForFieldNoDefault.$1", - "type": "string", - "tags": [], - "label": "fieldname", - "description": [ - "name of field to get formatter for" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldAttrs", - "type": "Function", - "tags": [], - "label": "setFieldAttrs", - "description": [ - "\nSet field attribute" - ], - "signature": [ - "(fieldName: string, attrName: K, value: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrSet", - "text": "FieldAttrSet" - }, - "[K]) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldAttrs.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "name of field to set attribute on" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldAttrs.$2", - "type": "Uncategorized", - "tags": [], - "label": "attrName", - "description": [ - "name of attribute to set" - ], - "signature": [ - "K" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldAttrs.$3", - "type": "Uncategorized", - "tags": [], - "label": "value", - "description": [ - "value of attribute" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrSet", - "text": "FieldAttrSet" - }, - "[K]" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldCustomLabel", - "type": "Function", - "tags": [], - "label": "setFieldCustomLabel", - "description": [ - "\nSet field custom label" - ], - "signature": [ - "(fieldName: string, customLabel: string | null | undefined) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldCustomLabel.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "name of field to set custom label on" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldCustomLabel.$2", - "type": "CompoundType", - "tags": [], - "label": "customLabel", - "description": [ - "custom label value. If undefined, custom label is removed" - ], - "signature": [ - "string | null | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldCount", - "type": "Function", - "tags": [], - "label": "setFieldCount", - "description": [ - "\nSet field count" - ], - "signature": [ - "(fieldName: string, count: number | null | undefined) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldCount.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "name of field to set count on" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldCount.$2", - "type": "CompoundType", - "tags": [], - "label": "count", - "description": [ - "count value. If undefined, count is removed" - ], - "signature": [ - "number | null | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldFormat", - "type": "Function", - "tags": [], - "label": "setFieldFormat", - "description": [ - "\nSet field formatter" - ], - "signature": [ - "(fieldName: string, format: ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.SerializedFieldFormat", - "text": "SerializedFieldFormat" - }, - "<", - "SerializableRecord", - ">) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldFormat.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "name of field to set format on" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.setFieldFormat.$2", - "type": "Object", - "tags": [], - "label": "format", - "description": [ - "field format in serialized form" - ], - "signature": [ - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.SerializedFieldFormat", - "text": "SerializedFieldFormat" - }, - "<", - "SerializableRecord", - ">" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataView.deleteFieldFormat", - "type": "Function", - "tags": [], - "label": "deleteFieldFormat", - "description": [ - "\nRemove field format from the field format map." - ], - "signature": [ - "(fieldName: string) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataView.deleteFieldFormat.$1", - "type": "string", - "tags": [], - "label": "fieldName", - "description": [ - "field name associated with the format for removal" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_view.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField", - "type": "Class", - "tags": [], - "label": "DataViewField", - "description": [ - "\nData view field class" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - }, - " implements ", - "DataViewFieldBase" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataViewField.spec", - "type": "CompoundType", - "tags": [], - "label": "spec", - "description": [], - "signature": [ - "DataViewFieldBase", - " & { count?: number | undefined; conflictDescriptions?: Record | undefined; format?: ", - { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.SerializedFieldFormat", - "text": "SerializedFieldFormat" - }, - "<", - "SerializableRecord", - "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.RuntimeFieldSpec", - "text": "RuntimeFieldSpec" - }, - " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; }" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.Unnamed", - "type": "Function", - "tags": [ - "constructor" - ], - "label": "Constructor", - "description": [ - "\nDataView constructor" - ], - "signature": [ - "any" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataViewField.Unnamed.$1", - "type": "CompoundType", - "tags": [], - "label": "spec", - "description": [ - "Configuration for the field" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - } - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.count", - "type": "number", - "tags": [], - "label": "count", - "description": [ - "\nCount is used for field popularity in discover." - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.count", - "type": "number", - "tags": [], - "label": "count", - "description": [ - "\nSet count, which is used for field popularity in discover." - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.runtimeField", - "type": "CompoundType", - "tags": [], - "label": "runtimeField", - "description": [ - "\nReturns runtime field definition or undefined if field is not runtime field." - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.RuntimeFieldSpec", - "text": "RuntimeFieldSpec" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.runtimeField", - "type": "CompoundType", - "tags": [], - "label": "runtimeField", - "description": [ - "\nSets runtime field definition or unsets if undefined is provided." - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.RuntimeFieldSpec", - "text": "RuntimeFieldSpec" - }, - " | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.script", - "type": "string", - "tags": [], - "label": "script", - "description": [ - "\nScript field code" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.script", - "type": "string", - "tags": [], - "label": "script", - "description": [ - "\nSets scripted field painless code" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.lang", - "type": "string", - "tags": [], - "label": "lang", - "description": [ - "\nScript field language" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.lang", - "type": "string", - "tags": [], - "label": "lang", - "description": [ - "\nSets scripted field langauge." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.customLabel", - "type": "string", - "tags": [], - "label": "customLabel", - "description": [ - "\nReturns custom label if set, otherwise undefined." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.customLabel", - "type": "string", - "tags": [], - "label": "customLabel", - "description": [ - "\nSets custom label for field, or unsets if passed undefined." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.conflictDescriptions", - "type": "Object", - "tags": [], - "label": "conflictDescriptions", - "description": [ - "\nDescription of field type conflicts across different indices in the same index pattern." - ], - "signature": [ - "Record | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.conflictDescriptions", - "type": "Object", - "tags": [], - "label": "conflictDescriptions", - "description": [ - "\nSets conflict descriptions for field." - ], - "signature": [ - "Record | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.name", - "type": "string", - "tags": [], - "label": "name", - "description": [ - "\nGet field name" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.displayName", - "type": "string", - "tags": [], - "label": "displayName", - "description": [ - "\nGets display name, calcualted based on name, custom label and shortDotsEnable." - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.type", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "\nGets field type" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.esTypes", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [ - "\nGets ES types as string array" - ], - "signature": [ - "string[] | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.scripted", - "type": "boolean", - "tags": [], - "label": "scripted", - "description": [ - "\nReturns true if scripted field" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.searchable", - "type": "boolean", - "tags": [], - "label": "searchable", - "description": [ - "\nReturns true if field is searchable" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.aggregatable", - "type": "boolean", - "tags": [], - "label": "aggregatable", - "description": [ - "\nReturns true if field is aggregatable" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.readFromDocValues", - "type": "boolean", - "tags": [], - "label": "readFromDocValues", - "description": [ - "\nReturns true if field is available via doc values" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.subType", - "type": "CompoundType", - "tags": [], - "label": "subType", - "description": [ - "\nReturns field subtype, multi, nested, or undefined if neither" - ], - "signature": [ - "IFieldSubType", - " | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.isMapped", - "type": "CompoundType", - "tags": [], - "label": "isMapped", - "description": [ - "\nIs the field part of the index mapping?" - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.isRuntimeField", - "type": "boolean", - "tags": [], - "label": "isRuntimeField", - "description": [ - "\nReturns true if runtime field defined on data view" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.sortable", - "type": "boolean", - "tags": [], - "label": "sortable", - "description": [ - "\nReturns true if field is sortable" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.filterable", - "type": "boolean", - "tags": [], - "label": "filterable", - "description": [ - "\nReturns true if field is filterable" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.visualizable", - "type": "boolean", - "tags": [], - "label": "visualizable", - "description": [ - "\nReturns true if field is visualizable" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.isSubtypeNested", - "type": "Function", - "tags": [], - "label": "isSubtypeNested", - "description": [ - "\nReturns true if field is subtype nested" - ], - "signature": [ - "() => boolean" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.isSubtypeMulti", - "type": "Function", - "tags": [], - "label": "isSubtypeMulti", - "description": [ - "\nReturns true if field is subtype multi" - ], - "signature": [ - "() => boolean" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.getSubtypeNested", - "type": "Function", - "tags": [], - "label": "getSubtypeNested", - "description": [ - "\nReturns subtype nested data if exists" - ], - "signature": [ - "() => ", - "IFieldSubTypeNested", - " | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.getSubtypeMulti", - "type": "Function", - "tags": [], - "label": "getSubtypeMulti", - "description": [ - "\nReturns subtype multi data if exists" - ], - "signature": [ - "() => ", - "IFieldSubTypeMulti", - " | undefined" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.deleteCount", - "type": "Function", - "tags": [], - "label": "deleteCount", - "description": [ - "\nDeletes count value. Popularity as used by discover" - ], - "signature": [ - "() => void" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, + "parentPluginId": "data", + "id": "def-public.indexPatterns.validate", + "type": "Function", + "tags": [], + "label": "validate", + "description": [], + "signature": [ + "(indexPattern: string) => { ILLEGAL_CHARACTERS?: string[] | undefined; CONTAINS_SPACES?: boolean | undefined; }" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.indexPatterns.validate.$1", + "type": "string", + "tags": [], + "label": "indexPattern", + "description": [], + "path": "src/plugins/data_views/common/lib/validate_data_view.ts", + "deprecated": false + } + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-public.search", + "type": "Object", + "tags": [], + "label": "search", + "description": [], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewField.toJSON", - "type": "Function", + "id": "def-public.search.aggs", + "type": "Object", "tags": [], - "label": "toJSON", - "description": [ - "\nJSON version of field" - ], - "signature": [ - "() => { count: number; script: string | undefined; lang: string | undefined; conflictDescriptions: Record | undefined; name: string; type: string; esTypes: string[] | undefined; scripted: boolean; searchable: boolean; aggregatable: boolean; readFromDocValues: boolean; subType: ", - "IFieldSubType", - " | undefined; customLabel: string | undefined; }" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "label": "aggs", + "description": [], + "path": "src/plugins/data/public/index.ts", "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.toSpec", - "type": "Function", - "tags": [], - "label": "toSpec", - "description": [ - "\nGet field in serialized form - fieldspec." - ], - "signature": [ - "(config?: ", + "children": [ + { + "parentPluginId": "data", + "id": "def-public.search.aggs.CidrMask", + "type": "Object", + "tags": [], + "label": "CidrMask", + "description": [], + "signature": [ + "typeof ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.CidrMask", + "text": "CidrMask" + } + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.dateHistogramInterval", + "type": "Function", + "tags": [], + "label": "dateHistogramInterval", + "description": [], + "signature": [ + "(interval: string) => Interval" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.search.aggs.dateHistogramInterval.$1", + "type": "string", + "tags": [], + "label": "interval", + "description": [], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/date_histogram_interval.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.intervalOptions", + "type": "Array", + "tags": [], + "label": "intervalOptions", + "description": [], + "signature": [ + "({ display: string; val: string; enabled(agg: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IBucketAggConfig", + "text": "IBucketAggConfig" + }, + "): boolean; } | { display: string; val: string; })[]" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.InvalidEsCalendarIntervalError", + "type": "Object", + "tags": [], + "label": "InvalidEsCalendarIntervalError", + "description": [], + "signature": [ + "typeof ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.InvalidEsCalendarIntervalError", + "text": "InvalidEsCalendarIntervalError" + } + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.InvalidEsIntervalFormatError", + "type": "Object", + "tags": [], + "label": "InvalidEsIntervalFormatError", + "description": [], + "signature": [ + "typeof ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.InvalidEsIntervalFormatError", + "text": "InvalidEsIntervalFormatError" + } + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.IpAddress", + "type": "Object", + "tags": [], + "label": "IpAddress", + "description": [], + "signature": [ + "typeof ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IpAddress", + "text": "IpAddress" + } + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.isDateHistogramBucketAggConfig", + "type": "Function", + "tags": [], + "label": "isDateHistogramBucketAggConfig", + "description": [], + "signature": [ + "(agg: any) => agg is ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IBucketDateHistogramAggConfig", + "text": "IBucketDateHistogramAggConfig" + } + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.search.aggs.isDateHistogramBucketAggConfig.$1", + "type": "Any", + "tags": [], + "label": "agg", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/data/common/search/aggs/buckets/date_histogram.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.isNumberType", + "type": "Function", + "tags": [], + "label": "isNumberType", + "description": [], + "signature": [ + "(agg: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.AggConfig", + "text": "AggConfig" + }, + ") => boolean" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.search.aggs.isNumberType.$1", + "type": "Object", + "tags": [], + "label": "agg", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.AggConfig", + "text": "AggConfig" + } + ], + "path": "src/plugins/data/common/search/aggs/buckets/migrate_include_exclude_format.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.isStringType", + "type": "Function", + "tags": [], + "label": "isStringType", + "description": [], + "signature": [ + "(agg: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.AggConfig", + "text": "AggConfig" + }, + ") => boolean" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.search.aggs.isStringType.$1", + "type": "Object", + "tags": [], + "label": "agg", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.AggConfig", + "text": "AggConfig" + } + ], + "path": "src/plugins/data/common/search/aggs/buckets/migrate_include_exclude_format.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.isType", + "type": "Function", + "tags": [], + "label": "isType", + "description": [], + "signature": [ + "(...types: string[]) => (agg: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.AggConfig", + "text": "AggConfig" + }, + ") => boolean" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.search.aggs.isType.$1", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/data/common/search/aggs/buckets/migrate_include_exclude_format.ts", + "deprecated": false + } + ] + }, { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.ToSpecConfig", - "text": "ToSpecConfig" + "parentPluginId": "data", + "id": "def-public.search.aggs.isValidEsInterval", + "type": "Function", + "tags": [], + "label": "isValidEsInterval", + "description": [], + "signature": [ + "(interval: string) => boolean" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.search.aggs.isValidEsInterval.$1", + "type": "string", + "tags": [], + "label": "interval", + "description": [], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/is_valid_es_interval.ts", + "deprecated": false + } + ] }, - ") => ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - } - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false, - "children": [ + "parentPluginId": "data", + "id": "def-public.search.aggs.isValidInterval", + "type": "Function", + "tags": [], + "label": "isValidInterval", + "description": [], + "signature": [ + "(value: string, baseInterval?: string | undefined) => boolean" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.search.aggs.isValidInterval.$1", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/is_valid_interval.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.isValidInterval.$2", + "type": "string", + "tags": [], + "label": "baseInterval", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/is_valid_interval.ts", + "deprecated": false + } + ] + }, { "parentPluginId": "data", - "id": "def-common.DataViewField.toSpec.$1", - "type": "Object", + "id": "def-public.search.aggs.parentPipelineType", + "type": "string", "tags": [], - "label": "config", - "description": [ - "provide a method to get a field formatter" + "label": "parentPipelineType", + "description": [], + "path": "src/plugins/data/public/index.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.parseEsInterval", + "type": "Function", + "tags": [], + "label": "parseEsInterval", + "description": [], + "signature": [ + "(interval: string) => { value: number; unit: ", + "Unit", + "; type: \"calendar\" | \"fixed\"; }" ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.search.aggs.parseEsInterval.$1", + "type": "string", + "tags": [], + "label": "interval", + "description": [], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_es_interval.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.parseInterval", + "type": "Function", + "tags": [], + "label": "parseInterval", + "description": [], "signature": [ + "(interval: string) => moment.Duration | null" + ], + "path": "src/plugins/data/public/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.ToSpecConfig", - "text": "ToSpecConfig" + "parentPluginId": "data", + "id": "def-public.search.aggs.parseInterval.$1", + "type": "string", + "tags": [], + "label": "interval", + "description": [], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", + "deprecated": false } + ] + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.propFilter", + "type": "Function", + "tags": [], + "label": "propFilter", + "description": [], + "signature": [ + "

(prop: P) => (list: T[], filters?: string | string[] | FilterFunc) => T[]" ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "path": "src/plugins/data/public/index.ts", "deprecated": false, - "isRequired": true - } - ], - "returnComment": [ - "field in serialized form - field spec" - ] - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewField.isRuntimeCompositeSubField", - "type": "Function", - "tags": [], - "label": "isRuntimeCompositeSubField", - "description": [ - "\nReturns true if composite runtime field" - ], - "signature": [ - "() => boolean" - ], - "path": "src/plugins/data_views/common/fields/data_view_field.ts", - "deprecated": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewSavedObjectConflictError", - "type": "Class", - "tags": [], - "label": "DataViewSavedObjectConflictError", - "description": [ - "\nError thrown when saved object has been changed when attempting to save." - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSavedObjectConflictError", - "text": "DataViewSavedObjectConflictError" - }, - " extends Error" - ], - "path": "src/plugins/data_views/common/errors/data_view_saved_object_conflict.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataViewSavedObjectConflictError.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [ - "\nconstructor" - ], - "signature": [ - "any" - ], - "path": "src/plugins/data_views/common/errors/data_view_saved_object_conflict.ts", - "deprecated": false, - "children": [ + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.search.aggs.propFilter.$1", + "type": "Uncategorized", + "tags": [], + "label": "prop", + "description": [], + "signature": [ + "P" + ], + "path": "src/plugins/data/common/search/aggs/utils/prop_filter.ts", + "deprecated": false + } + ] + }, { "parentPluginId": "data", - "id": "def-common.DataViewSavedObjectConflictError.Unnamed.$1", + "id": "def-public.search.aggs.siblingPipelineType", "type": "string", "tags": [], - "label": "savedObjectId", - "description": [ - "saved object id with conflict" - ], + "label": "siblingPipelineType", + "description": [], + "path": "src/plugins/data/public/index.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.search.aggs.termsAggFilter", + "type": "Array", + "tags": [], + "label": "termsAggFilter", + "description": [], "signature": [ - "string" + "string[]" ], - "path": "src/plugins/data_views/common/errors/data_view_saved_object_conflict.ts", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewsService", - "type": "Class", - "tags": [], - "label": "DataViewsService", - "description": [ - "\nData views service, providing CRUD operations for data views." - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.getCanSave", - "type": "Function", - "tags": [], - "label": "getCanSave", - "description": [ - "\nCan the user save data views?" - ], - "signature": [ - "() => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "returnComment": [], - "children": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.Unnamed", - "type": "Function", - "tags": [], - "label": "Constructor", - "description": [ - "\nDataViewsService constructor" - ], - "signature": [ - "any" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ + "path": "src/plugins/data/public/index.ts", + "deprecated": false + }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.Unnamed.$1", - "type": "Object", + "id": "def-public.search.aggs.toAbsoluteDates", + "type": "Function", "tags": [], - "label": "deps", - "description": [ - "Service dependencies" - ], + "label": "toAbsoluteDates", + "description": [], "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewsServiceDeps", - "text": "DataViewsServiceDeps" - } + "(range: ", + "TimeRange", + ") => { from: Date; to: Date; } | undefined" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data/public/index.ts", "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.getIds", - "type": "Function", - "tags": [], - "label": "getIds", - "description": [ - "\nGets list of index pattern ids." - ], - "signature": [ - "(refresh?: boolean) => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-public.search.aggs.toAbsoluteDates.$1", + "type": "Object", + "tags": [], + "label": "range", + "description": [], + "signature": [ + "{ from: string; to: string; mode?: \"absolute\" | \"relative\" | undefined; }" + ], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/to_absolute_dates.ts", + "deprecated": false + } + ] + }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.getIds.$1", - "type": "boolean", + "id": "def-public.search.aggs.boundsDescendingRaw", + "type": "Array", "tags": [], - "label": "refresh", - "description": [ - "Force refresh of index pattern list" - ], + "label": "boundsDescendingRaw", + "description": [], "signature": [ - "boolean" + "({ bound: number; interval: moment.Duration; boundLabel: string; intervalLabel: string; } | { bound: moment.Duration; interval: moment.Duration; boundLabel: string; intervalLabel: string; })[]" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "path": "src/plugins/data/public/index.ts", + "deprecated": false } - ], - "returnComment": [] + ] }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.getTitles", + "id": "def-public.search.getResponseInspectorStats", "type": "Function", "tags": [], - "label": "getTitles", - "description": [ - "\nGets list of index pattern titles." - ], + "label": "getResponseInspectorStats", + "description": [], "signature": [ - "(refresh?: boolean) => Promise" + "(resp?: ", + "SearchResponse", + "> | undefined, searchSource?: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ISearchSource", + "text": "ISearchSource" + }, + " | undefined) => ", + { + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.RequestStatistics", + "text": "RequestStatistics" + } ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data/public/index.ts", "deprecated": false, + "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewsService.getTitles.$1", - "type": "boolean", + "id": "def-public.search.getResponseInspectorStats.$1", + "type": "Object", "tags": [], - "label": "refresh", - "description": [ - "Force refresh of index pattern list" + "label": "resp", + "description": [], + "signature": [ + "SearchResponse", + "> | undefined" ], + "path": "src/plugins/data/common/search/search_source/inspect/inspector_stats.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.search.getResponseInspectorStats.$2", + "type": "Object", + "tags": [], + "label": "searchSource", + "description": [], "signature": [ - "boolean" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ISearchSource", + "text": "ISearchSource" + }, + " | undefined" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "path": "src/plugins/data/common/search/search_source/inspect/inspector_stats.ts", + "deprecated": false } - ], - "returnComment": [] + ] }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.find", + "id": "def-public.search.tabifyAggResponse", "type": "Function", "tags": [], - "label": "find", - "description": [ - "\nFind and load index patterns by title." - ], + "label": "tabifyAggResponse", + "description": [], "signature": [ - "(search: string, size?: number) => Promise<", + "(aggConfigs: ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.AggConfigs", + "text": "AggConfigs" + }, + ", esResponse: Record, respOpts?: Partial<", + "TabbedResponseWriterOptions", + "> | undefined) => ", { - "pluginId": "dataViews", + "pluginId": "expressions", "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - "[]>" + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + } ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data/public/index.ts", "deprecated": false, + "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewsService.find.$1", - "type": "string", + "id": "def-public.search.tabifyAggResponse.$1", + "type": "Object", "tags": [], - "label": "search", - "description": [ - "Search string" - ], + "label": "aggConfigs", + "description": [], "signature": [ - "string" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.AggConfigs", + "text": "AggConfigs" + } ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "path": "src/plugins/data/common/search/tabify/tabify.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.find.$2", - "type": "number", + "id": "def-public.search.tabifyAggResponse.$2", + "type": "Object", "tags": [], - "label": "size", - "description": [ - "Number of data views to return" + "label": "esResponse", + "description": [], + "signature": [ + "{ [x: string]: any; }" ], + "path": "src/plugins/data/common/search/tabify/tabify.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.search.tabifyAggResponse.$3", + "type": "Object", + "tags": [], + "label": "respOpts", + "description": [], "signature": [ - "number" + "Partial<", + "TabbedResponseWriterOptions", + "> | undefined" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "path": "src/plugins/data/common/search/tabify/tabify.ts", + "deprecated": false } - ], - "returnComment": [ - "DataView[]" ] }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.getIdsWithTitle", + "id": "def-public.search.tabifyGetColumns", "type": "Function", "tags": [], - "label": "getIdsWithTitle", - "description": [ - "\nGets list of index pattern ids with titles." - ], + "label": "tabifyGetColumns", + "description": [], "signature": [ - "(refresh?: boolean) => Promise<", + "(aggs: ", { - "pluginId": "dataViews", + "pluginId": "data", "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewListItem", - "text": "DataViewListItem" + "docId": "kibDataSearchPluginApi", + "section": "def-common.AggConfig", + "text": "AggConfig" }, - "[]>" + "[], minimalColumns: boolean) => ", + "TabbedAggColumn", + "[]" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data/public/index.ts", "deprecated": false, + "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewsService.getIdsWithTitle.$1", - "type": "boolean", + "id": "def-public.search.tabifyGetColumns.$1", + "type": "Array", "tags": [], - "label": "refresh", - "description": [ - "Force refresh of index pattern list" - ], + "label": "aggs", + "description": [], "signature": [ - "boolean" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.AggConfig", + "text": "AggConfig" + }, + "[]" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "path": "src/plugins/data/common/search/tabify/get_columns.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.search.tabifyGetColumns.$2", + "type": "boolean", + "tags": [], + "label": "minimalColumns", + "description": [], + "path": "src/plugins/data/common/search/tabify/get_columns.ts", + "deprecated": false } - ], - "returnComment": [] - }, + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-public.UI_SETTINGS", + "type": "Object", + "tags": [], + "label": "UI_SETTINGS", + "description": [], + "signature": [ + "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; readonly DATE_FORMAT: \"dateFormat\"; readonly DATEFORMAT_TZ: \"dateFormat:tz\"; }" + ], + "path": "src/plugins/data/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "setup": { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginSetup", + "type": "Interface", + "tags": [], + "label": "DataPublicPluginSetup", + "description": [ + "\nData plugin public Setup contract" + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginSetup.search", + "type": "Object", + "tags": [], + "label": "search", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataSearchPluginApi", + "section": "def-public.ISearchSetup", + "text": "ISearchSetup" + } + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginSetup.query", + "type": "Object", + "tags": [], + "label": "query", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.QuerySetup", + "text": "QuerySetup" + } + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": false + } + ], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginStart", + "type": "Interface", + "tags": [], + "label": "DataPublicPluginStart", + "description": [ + "\nData plugin public Start contract" + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginStart.actions", + "type": "Object", + "tags": [], + "label": "actions", + "description": [ + "\nfilter creation utilities\n{@link DataPublicPluginStartActions}" + ], + "signature": [ + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataPluginApi", + "section": "def-public.DataPublicPluginStartActions", + "text": "DataPublicPluginStartActions" + } + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginStart.dataViews", + "type": "Object", + "tags": [], + "label": "dataViews", + "description": [ + "\ndata views service\n{@link DataViewsContract}" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "public", + "docId": "kibDataViewsPluginApi", + "section": "def-public.DataViewsServicePublic", + "text": "DataViewsServicePublic" + } + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginStart.datatableUtilities", + "type": "Object", + "tags": [], + "label": "datatableUtilities", + "description": [ + "\nDatatable type utility functions." + ], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataPluginApi", + "section": "def-common.DatatableUtilitiesService", + "text": "DatatableUtilitiesService" + } + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginStart.indexPatterns", + "type": "Object", + "tags": [ + "deprecated" + ], + "label": "indexPatterns", + "description": [ + "\nindex patterns service\n{@link DataViewsContract}" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "public", + "docId": "kibDataViewsPluginApi", + "section": "def-public.DataViewsServicePublic", + "text": "DataViewsServicePublic" + } + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": true, + "references": [ + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/plugin.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/kibana_services.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.ts" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/plugin.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/alert_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/list_control_factory.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/control/range_control_factory.ts" + }, + { + "plugin": "inputControlVis", + "path": "src/plugins/input_control_vis/public/components/editor/controls_tab.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts" + }, + { + "plugin": "savedObjects", + "path": "src/plugins/saved_objects/public/saved_object/saved_object.test.ts" + }, + { + "plugin": "savedObjects", + "path": "src/plugins/saved_objects/public/saved_object/saved_object.test.ts" + } + ] + }, + { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginStart.search", + "type": "Object", + "tags": [], + "label": "search", + "description": [ + "\nsearch service\n{@link ISearchStart}" + ], + "signature": [ + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataSearchPluginApi", + "section": "def-public.ISearchStart", + "text": "ISearchStart" + } + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginStart.fieldFormats", + "type": "CompoundType", + "tags": [ + "deprecated" + ], + "label": "fieldFormats", + "description": [], + "signature": [ + "Omit<", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsRegistry", + "text": "FieldFormatsRegistry" + }, + ", \"init\" | \"register\"> & { deserialize: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FormatFactory", + "text": "FormatFactory" + }, + "; }" + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": true, + "references": [ + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/application/actions/export_csv_action.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/alert_types/threshold/expression.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts" + }, + { + "plugin": "visTypeTable", + "path": "src/plugins/vis_types/table/public/plugin.ts" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/public/plugin.ts" + }, + { + "plugin": "visTypeXy", + "path": "src/plugins/vis_types/xy/public/plugin.ts" + }, + { + "plugin": "visTypeVislib", + "path": "src/plugins/vis_types/vislib/public/plugin.ts" + }, + { + "plugin": "expressionPartitionVis", + "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" + }, + { + "plugin": "expressionPartitionVis", + "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" + }, + { + "plugin": "expressionPartitionVis", + "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" + }, + { + "plugin": "expressionPartitionVis", + "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" + }, + { + "plugin": "expressionPartitionVis", + "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" + }, + { + "plugin": "expressionPartitionVis", + "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" + }, + { + "plugin": "expressionPartitionVis", + "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" + }, + { + "plugin": "expressionPartitionVis", + "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_layers.test.ts" + } + ] + }, + { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginStart.query", + "type": "Object", + "tags": [], + "label": "query", + "description": [ + "\nquery service\n{@link QueryStart}" + ], + "signature": [ + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataQueryPluginApi", + "section": "def-public.QueryStart", + "text": "QueryStart" + } + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-public.DataPublicPluginStart.nowProvider", + "type": "Object", + "tags": [], + "label": "nowProvider", + "description": [], + "signature": [ + "{ get: () => Date; }" + ], + "path": "src/plugins/data/public/types.ts", + "deprecated": false + } + ], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "server": { + "classes": [ + { + "parentPluginId": "data", + "id": "def-server.DataServerPlugin", + "type": "Class", + "tags": [], + "label": "DataServerPlugin", + "description": [], + "signature": [ { - "parentPluginId": "data", - "id": "def-common.DataViewsService.clearCache", - "type": "Function", - "tags": [], - "label": "clearCache", - "description": [ - "\nClear index pattern list cache." - ], - "signature": [ - "(id?: string | undefined) => void" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.clearCache.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "optionally clear a single id" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": false - } - ], - "returnComment": [] + "pluginId": "data", + "scope": "server", + "docId": "kibDataPluginApi", + "section": "def-server.DataServerPlugin", + "text": "DataServerPlugin" }, + " implements ", { - "parentPluginId": "data", - "id": "def-common.DataViewsService.getCache", - "type": "Function", - "tags": [], - "label": "getCache", - "description": [ - "\nGet cache, contains data view saved objects." - ], - "signature": [ - "() => Promise<", - "SavedObject", - "<", - "DataViewSavedObjectAttrs", - ">[] | null | undefined>" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.Plugin", + "text": "Plugin" }, + "<", { - "parentPluginId": "data", - "id": "def-common.DataViewsService.getDefault", - "type": "Function", - "tags": [], - "label": "getDefault", - "description": [ - "\nGet default index pattern" - ], - "signature": [ - "() => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | null>" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "pluginId": "data", + "scope": "server", + "docId": "kibDataPluginApi", + "section": "def-server.DataPluginSetup", + "text": "DataPluginSetup" }, + ", ", { - "parentPluginId": "data", - "id": "def-common.DataViewsService.getDefaultId", - "type": "Function", - "tags": [], - "label": "getDefaultId", - "description": [ - "\nGet default index pattern id" - ], - "signature": [ - "() => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "pluginId": "data", + "scope": "server", + "docId": "kibDataPluginApi", + "section": "def-server.DataPluginStart", + "text": "DataPluginStart" }, + ", ", + "DataPluginSetupDependencies", + ", ", + "DataPluginStartDependencies", + ">" + ], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": false, + "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewsService.setDefault", + "id": "def-server.DataServerPlugin.Unnamed", "type": "Function", "tags": [], - "label": "setDefault", - "description": [ - "\nOptionally set default index pattern, unless force = true" - ], + "label": "Constructor", + "description": [], "signature": [ - "(id: string | null, force?: boolean) => Promise" + "any" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data/server/plugin.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewsService.setDefault.$1", - "type": "CompoundType", - "tags": [], - "label": "id", - "description": [ - "data view id" - ], - "signature": [ - "string | null" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.setDefault.$2", - "type": "boolean", + "id": "def-server.DataServerPlugin.Unnamed.$1", + "type": "Object", "tags": [], - "label": "force", - "description": [ - "set default data view even if there's an existing default" - ], + "label": "initializerContext", + "description": [], "signature": [ - "boolean" + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.PluginInitializerContext", + "text": "PluginInitializerContext" + }, + "; }>; sessions: Readonly<{} & { enabled: boolean; pageSize: number; trackingInterval: moment.Duration; cleanupInterval: moment.Duration; expireInterval: moment.Duration; monitoringTaskTimeout: moment.Duration; notTouchedTimeout: moment.Duration; notTouchedInProgressTimeout: moment.Duration; maxUpdateRetries: number; defaultExpiration: moment.Duration; management: Readonly<{} & { refreshInterval: moment.Duration; maxSessions: number; refreshTimeout: moment.Duration; expiresSoonWarning: moment.Duration; }>; }>; }>; }>>" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data/server/plugin.ts", "deprecated": false, "isRequired": true } @@ -25227,573 +11229,723 @@ }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.hasUserDataView", - "type": "Function", - "tags": [], - "label": "hasUserDataView", - "description": [ - "\nChecks if current user has a user created index pattern ignoring fleet's server default index patterns." - ], - "signature": [ - "() => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.getFieldsForWildcard", + "id": "def-server.DataServerPlugin.setup", "type": "Function", "tags": [], - "label": "getFieldsForWildcard", - "description": [ - "\nGet field list by providing { pattern }." - ], + "label": "setup", + "description": [], "signature": [ - "(options: ", + "(core: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreSetup", + "text": "CoreSetup" }, - ") => Promise<", + "<", + "DataPluginStartDependencies", + ", ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" + "pluginId": "data", + "scope": "server", + "docId": "kibDataPluginApi", + "section": "def-server.DataPluginStart", + "text": "DataPluginStart" + }, + ">, { bfetch, expressions, usageCollection, fieldFormats, taskManager, security, }: ", + "DataPluginSetupDependencies", + ") => { search: ", + "ISearchSetup", + "; query: ", + "QuerySetup", + "; fieldFormats: ", + { + "pluginId": "fieldFormats", + "scope": "server", + "docId": "kibFieldFormatsPluginApi", + "section": "def-server.FieldFormatsSetup", + "text": "FieldFormatsSetup" }, - "[]>" + "; }" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data/server/plugin.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewsService.getFieldsForWildcard.$1", + "id": "def-server.DataServerPlugin.setup.$1", "type": "Object", "tags": [], - "label": "options", - "description": [ - "options for getting field list" - ], + "label": "core", + "description": [], "signature": [ { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - } + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreSetup", + "text": "CoreSetup" + }, + "<", + "DataPluginStartDependencies", + ", ", + { + "pluginId": "data", + "scope": "server", + "docId": "kibDataPluginApi", + "section": "def-server.DataPluginStart", + "text": "DataPluginStart" + }, + ">" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data/server/plugin.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataServerPlugin.setup.$2", + "type": "Object", + "tags": [], + "label": "{\n bfetch,\n expressions,\n usageCollection,\n fieldFormats,\n taskManager,\n security,\n }", + "description": [], + "signature": [ + "DataPluginSetupDependencies" + ], + "path": "src/plugins/data/server/plugin.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [ - "FieldSpec[]" - ] + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.getFieldsForIndexPattern", + "id": "def-server.DataServerPlugin.start", "type": "Function", "tags": [], - "label": "getFieldsForIndexPattern", - "description": [ - "\nGet field list by providing an index patttern (or spec)." - ], + "label": "start", + "description": [], "signature": [ - "(indexPattern: ", + "(core: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreStart", + "text": "CoreStart" }, - " | ", + ", { fieldFormats, dataViews, taskManager }: ", + "DataPluginStartDependencies", + ") => { datatableUtilities: ", + "DatatableUtilitiesService", + "; search: ", + "ISearchStart", + "<", { - "pluginId": "dataViews", + "pluginId": "data", "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" + "docId": "kibDataSearchPluginApi", + "section": "def-common.IEsSearchRequest", + "text": "IEsSearchRequest" }, - ", options?: ", + ", ", { - "pluginId": "dataViews", + "pluginId": "data", "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" + "docId": "kibDataSearchPluginApi", + "section": "def-common.IEsSearchResponse", + "text": "IEsSearchResponse" }, - " | undefined) => Promise<", + ">; fieldFormats: ", + { + "pluginId": "fieldFormats", + "scope": "server", + "docId": "kibFieldFormatsPluginApi", + "section": "def-server.FieldFormatsStart", + "text": "FieldFormatsStart" + }, + "; indexPatterns: ", { "pluginId": "dataViews", - "scope": "common", + "scope": "server", "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" + "section": "def-server.DataViewsServerPluginStart", + "text": "DataViewsServerPluginStart" }, - "[]>" + "; }" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data/server/plugin.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewsService.getFieldsForIndexPattern.$1", - "type": "CompoundType", + "id": "def-server.DataServerPlugin.start.$1", + "type": "Object", "tags": [], - "label": "indexPattern", + "label": "core", "description": [], "signature": [ { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.CoreStart", + "text": "CoreStart" } ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data/server/plugin.ts", "deprecated": false, "isRequired": true }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.getFieldsForIndexPattern.$2", + "id": "def-server.DataServerPlugin.start.$2", "type": "Object", "tags": [], - "label": "options", - "description": [ - "options for getting field list" - ], + "label": "{ fieldFormats, dataViews, taskManager }", + "description": [], "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - }, - " | undefined" + "DataPluginStartDependencies" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data/server/plugin.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], - "returnComment": [ - "FieldSpec[]" - ] + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.DataServerPlugin.stop", + "type": "Function", + "tags": [], + "label": "stop", + "description": [], + "signature": [ + "() => void" + ], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataView", + "type": "Class", + "tags": [], + "label": "DataView", + "description": [ + "\nData view class. Central kibana abstraction around multiple indices." + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " implements ", + "DataViewBase" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nSaved object id" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.title", + "type": "string", + "tags": [], + "label": "title", + "description": [ + "\nTitle of data view" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.fieldFormatMap", + "type": "Object", + "tags": [], + "label": "fieldFormatMap", + "description": [ + "\nMap of field formats by field name" + ], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.refreshFields", - "type": "Function", + "id": "def-server.DataView.typeMeta", + "type": "Object", "tags": [], - "label": "refreshFields", + "label": "typeMeta", "description": [ - "\nRefresh field list for a given index pattern." + "\nOnly used by rollup indices, used by rollup specific endpoint to load field list." ], "signature": [ - "(indexPattern: ", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "section": "def-common.TypeMeta", + "text": "TypeMeta" }, - ") => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.refreshFields.$1", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } + " | undefined" ], - "returnComment": [] + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.fieldArrayToMap", - "type": "Function", + "id": "def-server.DataView.fields", + "type": "CompoundType", "tags": [], - "label": "fieldArrayToMap", + "label": "fields", "description": [ - "\nConverts field array to map." + "\nField list, in extended array format" ], "signature": [ - "(fields: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[], fieldAttrs?: ", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrs", - "text": "FieldAttrs" + "section": "def-common.IIndexPatternFieldList", + "text": "IIndexPatternFieldList" }, - " | undefined) => ", + " & { toSpec: () => ", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", "section": "def-common.DataViewFieldMap", "text": "DataViewFieldMap" + }, + "; }" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.timeFieldName", + "type": "string", + "tags": [], + "label": "timeFieldName", + "description": [ + "\nTimestamp field name" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "\nType is used to identify rollup index patterns." + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.flattenHit", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "flattenHit", + "description": [], + "signature": [ + "(hit: Record, deep?: boolean | undefined) => Record" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": true, + "references": [ + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" } ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, + "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewsService.fieldArrayToMap.$1", - "type": "Array", + "id": "def-server.DataView.flattenHit.$1", + "type": "Object", "tags": [], - "label": "fields", - "description": [ - ": FieldSpec[]" - ], + "label": "hit", + "description": [], "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]" + "{ [x: string]: any; }" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.fieldArrayToMap.$2", - "type": "Object", + "id": "def-server.DataView.flattenHit.$2", + "type": "CompoundType", "tags": [], - "label": "fieldAttrs", - "description": [ - ": FieldAttrs" - ], + "label": "deep", + "description": [], "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrs", - "text": "FieldAttrs" - }, - " | undefined" + "boolean | undefined" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": false + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false } + ] + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.metaFields", + "type": "Array", + "tags": [], + "label": "metaFields", + "description": [ + "\nList of meta fields by name" + ], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.version", + "type": "string", + "tags": [], + "label": "version", + "description": [ + "\nSavedObject version" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.sourceFilters", + "type": "Array", + "tags": [], + "label": "sourceFilters", + "description": [ + "\nArray of filters - hides fields in discover" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.SourceFilter", + "text": "SourceFilter" + }, + "[] | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.namespaces", + "type": "Array", + "tags": [], + "label": "namespaces", + "description": [ + "\nArray of namespace ids" + ], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.allowNoIndex", + "type": "boolean", + "tags": [], + "label": "allowNoIndex", + "description": [ + "\nPrevents errors when index pattern exists before indices" ], - "returnComment": [ - "Record" - ] + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.savedObjectToSpec", + "id": "def-server.DataView.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "\nName of the data view. Human readable name used to differentiate data view." + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.Unnamed", "type": "Function", "tags": [], - "label": "savedObjectToSpec", + "label": "Constructor", "description": [ - "\nConverts data view saved object to data view spec." + "\nconstructor" ], "signature": [ - "(savedObject: ", - "SavedObject", - "<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewAttributes", - "text": "DataViewAttributes" - }, - ">) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - } + "any" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewsService.savedObjectToSpec.$1", + "id": "def-server.DataView.Unnamed.$1", "type": "Object", "tags": [], - "label": "savedObject", - "description": [], + "label": "config", + "description": [ + "- config data and dependencies" + ], "signature": [ - "SavedObject", - "<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewAttributes", - "text": "DataViewAttributes" - }, - ">" + "DataViewDeps" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, "isRequired": true } ], - "returnComment": [ - "DataViewSpec" - ] + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.get", + "id": "def-server.DataView.getName", "type": "Function", "tags": [], - "label": "get", + "label": "getName", "description": [ - "\nGet an index pattern by id, cache optimized." + "\nGet name of Data View" ], "signature": [ - "(id: string) => Promise<", + "() => string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.getOriginalSavedObjectBody", + "type": "Function", + "tags": [], + "label": "getOriginalSavedObjectBody", + "description": [ + "\nGet last saved saved object fields" + ], + "signature": [ + "() => { fieldAttrs?: string | undefined; title?: string | undefined; timeFieldName?: string | undefined; fields?: string | undefined; sourceFilters?: string | undefined; fieldFormatMap?: string | undefined; typeMeta?: string | undefined; type?: string | undefined; }" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.resetOriginalSavedObjectBody", + "type": "Function", + "tags": [], + "label": "resetOriginalSavedObjectBody", + "description": [ + "\nReset last saved saved object fields. Used after saving." + ], + "signature": [ + "() => void" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.getFieldAttrs", + "type": "Function", + "tags": [], + "label": "getFieldAttrs", + "description": [ + "\nReturns field attributes map" + ], + "signature": [ + "() => { [x: string]: ", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "section": "def-common.FieldAttrSet", + "text": "FieldAttrSet" }, - ">" + "; }" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.get.$1", - "type": "string", - "tags": [], - "label": "id", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.getComputedFields", + "type": "Function", + "tags": [], + "label": "getComputedFields", + "description": [ + "\nReturns scripted fields" + ], + "signature": [ + "() => { storedFields: string[]; scriptFields: Record; docvalueFields: { field: string; format: string; }[]; runtimeFields: ", + "MappingRuntimeFields", + "; }" ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.create", + "id": "def-server.DataView.toSpec", "type": "Function", "tags": [], - "label": "create", + "label": "toSpec", "description": [ - "\nCreate a new data view instance." + "\nCreates static representation of the data view." ], "signature": [ - "(spec: ", + "() => ", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", "section": "def-common.DataViewSpec", "text": "DataViewSpec" - }, - ", skipFetchFields?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ">" + } ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.create.$1", - "type": "Object", - "tags": [], - "label": "spec", - "description": [ - "data view spec" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.create.$2", - "type": "boolean", - "tags": [], - "label": "skipFetchFields", - "description": [ - "if true, will not fetch fields" - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - } + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.getSourceFiltering", + "type": "Function", + "tags": [], + "label": "getSourceFiltering", + "description": [ + "\nGet the source filtering configuration for that index." ], - "returnComment": [ - "DataView" - ] + "signature": [ + "() => { excludes: string[]; }" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.createAndSave", + "id": "def-server.DataView.removeScriptedField", "type": "Function", - "tags": [], - "label": "createAndSave", + "tags": [ + "deprecated" + ], + "label": "removeScriptedField", "description": [ - "\nCreate a new data view and save it right away." + "\nRemoves scripted field from field list." ], "signature": [ - "(spec: ", + "(fieldName: string) => void" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": true, + "references": [ { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" }, - ", override?: boolean, skipFetchFields?: boolean) => Promise<", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/field_editor/field_editor.tsx" }, - ">" + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + } ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewsService.createAndSave.$1", - "type": "Object", - "tags": [], - "label": "spec", - "description": [ - "data view spec" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.createAndSave.$2", - "type": "boolean", - "tags": [], - "label": "override", - "description": [ - "Overwrite if existing index pattern exists." - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewsService.createAndSave.$3", - "type": "boolean", + "id": "def-server.DataView.removeScriptedField.$1", + "type": "string", "tags": [], - "label": "skipFetchFields", + "label": "fieldName", "description": [ - "Whether to skip field refresh step." + "name of scripted field to remove" ], "signature": [ - "boolean" + "string" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, "isRequired": true } @@ -25802,2595 +11954,2540 @@ }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.createSavedObject", + "id": "def-server.DataView.getNonScriptedFields", "type": "Function", - "tags": [], - "label": "createSavedObject", + "tags": [ + "deprecated" + ], + "label": "getNonScriptedFields", "description": [ - "\nSave a new data view." + "\n" ], "signature": [ - "(dataView: ", + "() => ", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "section": "def-common.DataViewField", + "text": "DataViewField" }, - ", override?: boolean) => Promise<", + "[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": true, + "references": [ { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" }, - ">" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ { - "parentPluginId": "data", - "id": "def-common.DataViewsService.createSavedObject.$1", - "type": "Object", - "tags": [], - "label": "dataView", - "description": [ - "data view instance" - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "plugin": "graph", + "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" }, { - "parentPluginId": "data", - "id": "def-common.DataViewsService.createSavedObject.$2", - "type": "boolean", - "tags": [], - "label": "override", - "description": [ - "Overwrite if existing index pattern exists" - ], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "plugin": "graph", + "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts" } ], + "children": [], "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.updateSavedObject", + "id": "def-server.DataView.getScriptedFields", "type": "Function", - "tags": [], - "label": "updateSavedObject", + "tags": [ + "deprecated" + ], + "label": "getScriptedFields", "description": [ - "\nSave existing dat aview. Will attempt to merge differences if there are conflicts." + "\n" ], "signature": [ - "(indexPattern: ", + "() => ", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "section": "def-common.DataViewField", + "text": "DataViewField" }, - ", saveAttempts?: number, ignoreErrors?: boolean) => Promise" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ { - "parentPluginId": "data", - "id": "def-common.DataViewsService.updateSavedObject.$1", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - } - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_views.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/server/register_index_pattern_usage_collection.ts" }, { - "parentPluginId": "data", - "id": "def-common.DataViewsService.updateSavedObject.$2", - "type": "number", - "tags": [], - "label": "saveAttempts", - "description": [], - "signature": [ - "number" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" }, { - "parentPluginId": "data", - "id": "def-common.DataViewsService.updateSavedObject.$3", - "type": "boolean", - "tags": [], - "label": "ignoreErrors", - "description": [], - "signature": [ - "boolean" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" } ], + "children": [], "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.delete", + "id": "def-server.DataView.isTimeBased", "type": "Function", "tags": [], - "label": "delete", + "label": "isTimeBased", "description": [ - "\nDeletes an index pattern from .kibana index." + "\nDoes the data view have a timestamp field?" ], "signature": [ - "(indexPatternId: string) => Promise<{}>" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "children": [ + "() => this is ", { - "parentPluginId": "data", - "id": "def-common.DataViewsService.delete.$1", - "type": "string", - "tags": [], - "label": "indexPatternId", - "description": [ - ": Id of kibana Index Pattern to delete" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "isRequired": true + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.TimeBasedDataView", + "text": "TimeBasedDataView" } ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.DataViewsService.getDefaultDataView", + "id": "def-server.DataView.isTimeNanosBased", "type": "Function", "tags": [], - "label": "getDefaultDataView", + "label": "isTimeNanosBased", "description": [ - "\nReturns the default data view as an object.\nIf no default is found, or it is missing\nanother data view is selected as default and returned.\nIf no possible data view found to become a default returns null.\n" + "\nDoes the data view have a timestamp field and is it a date nanos field?" ], "signature": [ - "() => Promise<", + "() => this is ", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | null>" + "section": "def-common.TimeBasedDataView", + "text": "TimeBasedDataView" + } ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, "children": [], - "returnComment": [ - "default data view" - ] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.DuplicateDataViewError", - "type": "Class", - "tags": [], - "label": "DuplicateDataViewError", - "description": [ - "\nError thrown when attempting to create duplicate index pattern based on title." - ], - "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DuplicateDataViewError", - "text": "DuplicateDataViewError" + "returnComment": [] }, - " extends Error" - ], - "path": "src/plugins/data_views/common/errors/duplicate_index_pattern.ts", - "deprecated": false, - "children": [ { "parentPluginId": "data", - "id": "def-common.DuplicateDataViewError.Unnamed", + "id": "def-server.DataView.getTimeField", "type": "Function", "tags": [], - "label": "Constructor", + "label": "getTimeField", "description": [ - "\nconstructor" + "\nGet timestamp field as DataViewField or return undefined" ], "signature": [ - "any" - ], - "path": "src/plugins/data_views/common/errors/duplicate_index_pattern.ts", - "deprecated": false, - "children": [ + "() => ", { - "parentPluginId": "data", - "id": "def-common.DuplicateDataViewError.Unnamed.$1", - "type": "string", - "tags": [], - "label": "message", - "description": [ - "- Error message" - ], - "signature": [ - "string" - ], - "path": "src/plugins/data_views/common/errors/duplicate_index_pattern.ts", - "deprecated": false, - "isRequired": true - } + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + " | undefined" ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.KbnFieldType", - "type": "Class", - "tags": [], - "label": "KbnFieldType", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.KbnFieldType.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.KbnFieldType.sortable", - "type": "boolean", - "tags": [], - "label": "sortable", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.KbnFieldType.filterable", - "type": "boolean", - "tags": [], - "label": "filterable", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.KbnFieldType.esTypes", - "type": "Object", - "tags": [], - "label": "esTypes", - "description": [], - "signature": [ - "readonly ", - "ES_FIELD_TYPES", - "[]" - ], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.KbnFieldType.Unnamed", + "id": "def-server.DataView.getFieldByName", "type": "Function", "tags": [], - "label": "Constructor", - "description": [], + "label": "getFieldByName", + "description": [ + "\nGet field by name." + ], "signature": [ - "any" + "(name: string) => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + " | undefined" ], - "path": "node_modules/@types/kbn__field-types/index.d.ts", + "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.KbnFieldType.Unnamed.$1", - "type": "Object", + "id": "def-server.DataView.getFieldByName.$1", + "type": "string", "tags": [], - "label": "options", - "description": [], - "signature": [ - "Partial<", - "KbnFieldTypeOptions", - "> | undefined" + "label": "name", + "description": [ + "field name" ], - "path": "node_modules/@types/kbn__field-types/index.d.ts", + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, - "isRequired": false + "isRequired": true } ], "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "functions": [ - { - "parentPluginId": "data", - "id": "def-common.buildCustomFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildCustomFilter", - "description": [], - "signature": [ - "(indexPatternString: string, queryDsl: ", - "QueryDslQueryContainer", - ", disabled: boolean, negate: boolean, alias: string | null, store: ", - "FilterStateStore", - ") => ", - "Filter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.buildCustomFilter.$1", - "type": "string", - "tags": [], - "label": "indexPatternString", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.buildCustomFilter.$2", - "type": "Object", + "id": "def-server.DataView.getAggregationRestrictions", + "type": "Function", "tags": [], - "label": "queryDsl", - "description": [], + "label": "getAggregationRestrictions", + "description": [ + "\nGet aggregation restrictions. Rollup fields can only perform a subset of aggregations." + ], "signature": [ - "QueryDslQueryContainer" + "() => Record | undefined" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildCustomFilter.$3", - "type": "boolean", - "tags": [], - "label": "disabled", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildCustomFilter.$4", - "type": "boolean", - "tags": [], - "label": "negate", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildCustomFilter.$5", - "type": "CompoundType", + "id": "def-server.DataView.getAsSavedObjectBody", + "type": "Function", "tags": [], - "label": "alias", - "description": [], + "label": "getAsSavedObjectBody", + "description": [ + "\nReturns index pattern as saved object body for saving" + ], "signature": [ - "string | null" + "() => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewAttributes", + "text": "DataViewAttributes" + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildCustomFilter.$6", - "type": "Enum", + "id": "def-server.DataView.getFormatterForField", + "type": "Function", "tags": [], - "label": "store", - "description": [], + "label": "getFormatterForField", + "description": [ + "\nProvide a field, get its formatter" + ], "signature": [ - "FilterStateStore" + "(field: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + " | ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + ") => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildEmptyFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildEmptyFilter", - "description": [], - "signature": [ - "(isPinned: boolean, index?: string | undefined) => ", - "Filter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.buildEmptyFilter.$1", - "type": "boolean", - "tags": [], - "label": "isPinned", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.getFormatterForField.$1", + "type": "CompoundType", + "tags": [], + "label": "field", + "description": [ + "field to get formatter for" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + " | ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + } + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildEmptyFilter.$2", - "type": "string", + "id": "def-server.DataView.addRuntimeField", + "type": "Function", "tags": [], - "label": "index", - "description": [], - "signature": [ - "string | undefined" + "label": "addRuntimeField", + "description": [ + "\nAdd a runtime field - Appended to existing mapped field or a new field is\ncreated as appropriate." ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildEsQuery", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildEsQuery", - "description": [], - "signature": [ - "(indexPattern: ", - "DataViewBase", - " | undefined, queries: ", - "Query", - " | ", - "Query", - "[], filters: ", - "Filter", - " | ", - "Filter", - "[], config?: ", - "EsQueryConfig", - " | undefined) => { bool: ", - "BoolQuery", - "; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.buildEsQuery.$1", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], "signature": [ - "DataViewBase", - " | undefined" + "(name: string, runtimeField: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.RuntimeField", + "text": "RuntimeField" + }, + ") => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + "[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.addRuntimeField.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "Field name" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.addRuntimeField.$2", + "type": "Object", + "tags": [], + "label": "runtimeField", + "description": [ + "Runtime field definition" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.RuntimeField", + "text": "RuntimeField" + } + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildEsQuery.$2", - "type": "CompoundType", + "id": "def-server.DataView.hasRuntimeField", + "type": "Function", "tags": [], - "label": "queries", - "description": [], + "label": "hasRuntimeField", + "description": [ + "\nChecks if runtime field exists" + ], "signature": [ - "Query", - " | ", - "Query", - "[]" + "(name: string) => boolean" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.hasRuntimeField.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "field name" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildEsQuery.$3", - "type": "CompoundType", + "id": "def-server.DataView.getRuntimeField", + "type": "Function", "tags": [], - "label": "filters", - "description": [], + "label": "getRuntimeField", + "description": [ + "\nReturns runtime field if exists" + ], "signature": [ - "Filter", - " | ", - "Filter", - "[]" + "(name: string) => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.RuntimeField", + "text": "RuntimeField" + }, + " | null" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.getRuntimeField.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "Runtime field name" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildEsQuery.$4", - "type": "CompoundType", + "id": "def-server.DataView.getAllRuntimeFields", + "type": "Function", "tags": [], - "label": "config", - "description": [], - "signature": [ - "EsQueryConfig", - " | undefined" + "label": "getAllRuntimeFields", + "description": [ + "\nGet all runtime field definitions." ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildExistsFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildExistsFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", indexPattern: ", - "DataViewBase", - ") => ", - "ExistsFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.buildExistsFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" + "() => Record" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "map of runtime field definitions by field name" + ] }, { "parentPluginId": "data", - "id": "def-common.buildExistsFilter.$2", - "type": "Object", + "id": "def-server.DataView.getFieldsByRuntimeFieldName", + "type": "Function", "tags": [], - "label": "indexPattern", - "description": [], + "label": "getFieldsByRuntimeFieldName", + "description": [ + "\nReturns data view fields backed by runtime fields." + ], "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" + "(name: string) => Record | undefined" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildFilter", - "description": [], - "signature": [ - "(indexPattern: ", - "DataViewBase", - ", field: ", - "DataViewFieldBase", - ", type: ", - "FILTERS", - ", negate: boolean, disabled: boolean, params: ", - "Serializable", - ", alias: string | null, store?: ", - "FilterStateStore", - " | undefined) => ", - "Filter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.getFieldsByRuntimeFieldName.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "runtime field name" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "map of DataViewFields (that are runtime fields) by field name" + ] + }, { "parentPluginId": "data", - "id": "def-common.buildFilter.$1", - "type": "Object", + "id": "def-server.DataView.replaceAllRuntimeFields", + "type": "Function", "tags": [], - "label": "indexPattern", - "description": [], + "label": "replaceAllRuntimeFields", + "description": [ + "\nReplaces all existing runtime fields with new fields." + ], "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" + "(newFields: Record) => void" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.replaceAllRuntimeFields.$1", + "type": "Object", + "tags": [], + "label": "newFields", + "description": [ + "Map of runtime field definitions by field name" + ], + "signature": [ + "Record" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildFilter.$2", - "type": "Object", + "id": "def-server.DataView.removeRuntimeField", + "type": "Function", "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" + "label": "removeRuntimeField", + "description": [ + "\nRemove a runtime field - removed from mapped field or removed unmapped\nfield as appropriate. Doesn't clear associated field attributes." ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildFilter.$3", - "type": "Enum", - "tags": [], - "label": "type", - "description": [], "signature": [ - "FILTERS" + "(name: string) => void" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildFilter.$4", - "type": "boolean", - "tags": [], - "label": "negate", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildFilter.$5", - "type": "boolean", - "tags": [], - "label": "disabled", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildFilter.$6", - "type": "CompoundType", - "tags": [], - "label": "params", - "description": [], - "signature": [ - "string | number | boolean | ", - "SerializableRecord", - " | SerializableArray | null | undefined" + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.removeRuntimeField.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "- Field name to remove" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildFilter.$7", - "type": "CompoundType", + "id": "def-server.DataView.getRuntimeMappings", + "type": "Function", "tags": [], - "label": "alias", - "description": [], + "label": "getRuntimeMappings", + "description": [ + "\nReturn the \"runtime_mappings\" section of the ES search query." + ], "signature": [ - "string | null" + "() => ", + "MappingRuntimeFields" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildFilter.$8", - "type": "CompoundType", + "id": "def-server.DataView.getFormatterForFieldNoDefault", + "type": "Function", "tags": [], - "label": "store", - "description": [], + "label": "getFormatterForFieldNoDefault", + "description": [ + "\nGet formatter for a given field name. Return undefined if none exists." + ], "signature": [ - "FilterStateStore", + "(fieldname: string) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, " | undefined" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildPhraseFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildPhraseFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", value: PhraseFilterValue, indexPattern: ", - "DataViewBase", - ") => ", - "PhraseFilter", - " | ", - "ScriptedPhraseFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.buildPhraseFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.getFormatterForFieldNoDefault.$1", + "type": "string", + "tags": [], + "label": "fieldname", + "description": [ + "name of field to get formatter for" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildPhraseFilter.$2", - "type": "CompoundType", + "id": "def-server.DataView.setFieldAttrs", + "type": "Function", "tags": [], - "label": "value", - "description": [], - "signature": [ - "string | number | boolean" + "label": "setFieldAttrs", + "description": [ + "\nSet field attribute" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildPhraseFilter.$3", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" + "(fieldName: string, attrName: K, value: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrSet", + "text": "FieldAttrSet" + }, + "[K]) => void" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildPhrasesFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildPhrasesFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", params: PhraseFilterValue[], indexPattern: ", - "DataViewBase", - ") => ", - "PhrasesFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.buildPhrasesFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.setFieldAttrs.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "name of field to set attribute on" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.setFieldAttrs.$2", + "type": "Uncategorized", + "tags": [], + "label": "attrName", + "description": [ + "name of attribute to set" + ], + "signature": [ + "K" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.setFieldAttrs.$3", + "type": "Uncategorized", + "tags": [], + "label": "value", + "description": [ + "value of attribute" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrSet", + "text": "FieldAttrSet" + }, + "[K]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildPhrasesFilter.$2", - "type": "Array", + "id": "def-server.DataView.setFieldCustomLabel", + "type": "Function", "tags": [], - "label": "params", - "description": [], - "signature": [ - "PhraseFilterValue[]" + "label": "setFieldCustomLabel", + "description": [ + "\nSet field custom label" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildPhrasesFilter.$3", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], "signature": [ - "{ fields: ", - "DataViewFieldBase", - "[]; id?: string | undefined; title: string; }" + "(fieldName: string, customLabel: string | null | undefined) => void" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildQueryFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildQueryFilter", - "description": [], - "signature": [ - "(query: (Record & { query_string?: { query: string; fields?: string[] | undefined; } | undefined; }) | undefined, index: string, alias?: string | undefined, meta?: ", - "FilterMeta", - " | undefined) => { query: (Record & { query_string?: { query: string; fields?: string[] | undefined; } | undefined; }) | undefined; meta: { alias: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index: string; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.buildQueryFilter.$1", - "type": "CompoundType", - "tags": [], - "label": "query", - "description": [], - "signature": [ - "(Record & { query_string?: { query: string; fields?: string[] | undefined; } | undefined; }) | undefined" + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.setFieldCustomLabel.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "name of field to set custom label on" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.setFieldCustomLabel.$2", + "type": "CompoundType", + "tags": [], + "label": "customLabel", + "description": [ + "custom label value. If undefined, custom label is removed" + ], + "signature": [ + "string | null | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": false + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildQueryFilter.$2", - "type": "string", - "tags": [], - "label": "index", - "description": [], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildQueryFilter.$3", - "type": "string", + "id": "def-server.DataView.setFieldCount", + "type": "Function", "tags": [], - "label": "alias", - "description": [], - "signature": [ - "string | undefined" + "label": "setFieldCount", + "description": [ + "\nSet field count" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildQueryFilter.$4", - "type": "Object", - "tags": [], - "label": "meta", - "description": [], "signature": [ - "FilterMeta", - " | undefined" + "(fieldName: string, count: number | null | undefined) => void" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildQueryFromFilters", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildQueryFromFilters", - "description": [], - "signature": [ - "(filters: ", - "Filter", - "[] | undefined, indexPattern: ", - "DataViewBase", - " | undefined, ignoreFilterIfFieldNotInIndex?: boolean | undefined) => ", - "BoolQuery" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.buildQueryFromFilters.$1", - "type": "Array", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - "Filter", - "[] | undefined" + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.setFieldCount.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "name of field to set count on" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.setFieldCount.$2", + "type": "CompoundType", + "tags": [], + "label": "count", + "description": [ + "count value. If undefined, count is removed" + ], + "signature": [ + "number | null | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": false + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildQueryFromFilters.$2", - "type": "Object", + "id": "def-server.DataView.setFieldFormat", + "type": "Function", "tags": [], - "label": "indexPattern", - "description": [], - "signature": [ - "DataViewBase", - " | undefined" + "label": "setFieldFormat", + "description": [ + "\nSet field formatter" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildQueryFromFilters.$3", - "type": "CompoundType", - "tags": [], - "label": "ignoreFilterIfFieldNotInIndex", - "description": [], "signature": [ - "boolean | undefined" + "(fieldName: string, format: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "<", + "SerializableRecord", + ">) => void" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildRangeFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "buildRangeFilter", - "description": [], - "signature": [ - "(field: ", - "DataViewFieldBase", - ", params: ", - "RangeFilterParams", - ", indexPattern?: ", - "DataViewBase", - " | undefined, formattedValue?: string | undefined) => ", - "RangeFilter", - " | ", - "ScriptedRangeFilter", - " | MatchAllRangeFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.buildRangeFilter.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ name: string; type: string; subType?: ", - "IFieldSubType", - " | undefined; script?: string | undefined; lang?: string | undefined; scripted?: boolean | undefined; }" + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.setFieldFormat.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "name of field to set format on" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataView.setFieldFormat.$2", + "type": "Object", + "tags": [], + "label": "format", + "description": [ + "field format in serialized form" + ], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "<", + "SerializableRecord", + ">" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.buildRangeFilter.$2", - "type": "Object", + "id": "def-server.DataView.deleteFieldFormat", + "type": "Function", "tags": [], - "label": "params", - "description": [], - "signature": [ - "RangeFilterParams" + "label": "deleteFieldFormat", + "description": [ + "\nRemove field format from the field format map." ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildRangeFilter.$3", - "type": "Object", - "tags": [], - "label": "indexPattern", - "description": [], "signature": [ - "DataViewBase", - " | undefined" + "(fieldName: string) => void" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.buildRangeFilter.$4", - "type": "string", - "tags": [], - "label": "formattedValue", - "description": [], - "signature": [ - "string | undefined" + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.deleteFieldFormat.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "field name associated with the format for removal" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "returnComment": [] } ], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.cellHasFormulas", - "type": "Function", + "id": "def-server.DataViewsService", + "type": "Class", "tags": [], - "label": "cellHasFormulas", - "description": [], - "signature": [ - "(val: string) => boolean" + "label": "DataViewsService", + "description": [ + "\nData views service, providing CRUD operations for data views." ], - "path": "src/plugins/data/common/exports/formula_checks.ts", + "path": "src/plugins/data_views/common/data_views/data_views.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.cellHasFormulas.$1", - "type": "string", + "id": "def-server.DataViewsService.getCanSave", + "type": "Function", "tags": [], - "label": "val", - "description": [], + "label": "getCanSave", + "description": [ + "\nCan the user save data views?" + ], "signature": [ - "string" + "() => Promise" ], - "path": "src/plugins/data/common/exports/formula_checks.ts", + "path": "src/plugins/data_views/common/data_views/data_views.ts", "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.compareFilters", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "compareFilters", - "description": [], - "signature": [ - "(first: ", - "Filter", - " | ", - "Filter", - "[], second: ", - "Filter", - " | ", - "Filter", - "[], comparatorOptions?: ", - "FilterCompareOptions", - " | undefined) => boolean" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "returnComment": [], + "children": [] + }, { "parentPluginId": "data", - "id": "def-common.compareFilters.$1", - "type": "CompoundType", + "id": "def-server.DataViewsService.Unnamed", + "type": "Function", "tags": [], - "label": "first", - "description": [], + "label": "Constructor", + "description": [ + "\nDataViewsService constructor" + ], "signature": [ - "Filter", - " | ", - "Filter", - "[]" + "any" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "deps", + "description": [ + "Service dependencies" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewsServiceDeps", + "text": "DataViewsServiceDeps" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.compareFilters.$2", - "type": "CompoundType", + "id": "def-server.DataViewsService.getIds", + "type": "Function", "tags": [], - "label": "second", - "description": [], + "label": "getIds", + "description": [ + "\nGets list of index pattern ids." + ], "signature": [ - "Filter", - " | ", - "Filter", - "[]" + "(refresh?: boolean) => Promise" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.getIds.$1", + "type": "boolean", + "tags": [], + "label": "refresh", + "description": [ + "Force refresh of index pattern list" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.compareFilters.$3", - "type": "Object", + "id": "def-server.DataViewsService.getTitles", + "type": "Function", "tags": [], - "label": "comparatorOptions", - "description": [], - "signature": [ - "FilterCompareOptions", - " | undefined" + "label": "getTitles", + "description": [ + "\nGets list of index pattern titles." ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.createEscapeValue", - "type": "Function", - "tags": [], - "label": "createEscapeValue", - "description": [ - "\nCreate a function that will escape CSV values like \"=\", \"@\" and \"+\" with a\n\"'\". This will also place CSV values in \"\" if contain non-alphanumeric chars.\n\nFor example:\n\nGiven: =1+1\nReturns: \"'=1+1\"\n\nSee OWASP: https://www.owasp.org/index.php/CSV_Injection." - ], - "signature": [ - "(quoteValues: boolean, escapeFormulas: boolean) => (val: RawValue) => string" - ], - "path": "src/plugins/data/common/exports/escape_value.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.createEscapeValue.$1", - "type": "boolean", - "tags": [], - "label": "quoteValues", - "description": [], "signature": [ - "boolean" + "(refresh?: boolean) => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.getTitles.$1", + "type": "boolean", + "tags": [], + "label": "refresh", + "description": [ + "Force refresh of index pattern list" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "src/plugins/data/common/exports/escape_value.ts", - "deprecated": false, - "isRequired": true + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.createEscapeValue.$2", - "type": "boolean", + "id": "def-server.DataViewsService.find", + "type": "Function", "tags": [], - "label": "escapeFormulas", - "description": [], + "label": "find", + "description": [ + "\nFind and load index patterns by title." + ], "signature": [ - "boolean" + "(search: string, size?: number) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + "[]>" ], - "path": "src/plugins/data/common/exports/escape_value.ts", + "path": "src/plugins/data_views/common/data_views/data_views.ts", "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.datatableToCSV", - "type": "Function", - "tags": [], - "label": "datatableToCSV", - "description": [], - "signature": [ - "({ columns, rows }: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.find.$1", + "type": "string", + "tags": [], + "label": "search", + "description": [ + "Search string" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.find.$2", + "type": "number", + "tags": [], + "label": "size", + "description": [ + "Number of data views to return" + ], + "signature": [ + "number" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "DataView[]" + ] }, - ", { csvSeparator, quoteValues, formatFactory, raw, escapeFormulaValues }: CSVOptions) => string" - ], - "path": "src/plugins/data/common/exports/export_csv.tsx", - "deprecated": false, - "children": [ { "parentPluginId": "data", - "id": "def-common.datatableToCSV.$1", - "type": "Object", + "id": "def-server.DataViewsService.getIdsWithTitle", + "type": "Function", "tags": [], - "label": "{ columns, rows }", - "description": [], + "label": "getIdsWithTitle", + "description": [ + "\nGets list of index pattern ids with titles." + ], "signature": [ + "(refresh?: boolean) => Promise<", { - "pluginId": "expressions", + "pluginId": "dataViews", "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Datatable", - "text": "Datatable" - } + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewListItem", + "text": "DataViewListItem" + }, + "[]>" ], - "path": "src/plugins/data/common/exports/export_csv.tsx", + "path": "src/plugins/data_views/common/data_views/data_views.ts", "deprecated": false, - "isRequired": true + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.getIdsWithTitle.$1", + "type": "boolean", + "tags": [], + "label": "refresh", + "description": [ + "Force refresh of index pattern list" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.datatableToCSV.$2", - "type": "Object", + "id": "def-server.DataViewsService.clearCache", + "type": "Function", "tags": [], - "label": "{ csvSeparator, quoteValues, formatFactory, raw, escapeFormulaValues }", - "description": [], + "label": "clearCache", + "description": [ + "\nClear index pattern list cache." + ], "signature": [ - "CSVOptions" + "(id?: string | undefined) => void" ], - "path": "src/plugins/data/common/exports/export_csv.tsx", + "path": "src/plugins/data_views/common/data_views/data_views.ts", "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.decorateQuery", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "decorateQuery", - "description": [], - "signature": [ - "(query: ", - "QueryDslQueryContainer", - ", queryStringOptions: string | ", - "SerializableRecord", - ", dateFormatTZ?: string | undefined) => ", - "QueryDslQueryContainer" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.decorateQuery.$1", - "type": "Object", - "tags": [], - "label": "query", - "description": [], - "signature": [ - "QueryDslQueryContainer" + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.clearCache.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "optionally clear a single id" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": false + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.decorateQuery.$2", - "type": "CompoundType", + "id": "def-server.DataViewsService.getCache", + "type": "Function", "tags": [], - "label": "queryStringOptions", - "description": [], + "label": "getCache", + "description": [ + "\nGet cache, contains data view saved objects." + ], "signature": [ - "string | ", - "SerializableRecord" + "() => Promise<", + "SavedObject", + "<", + "DataViewSavedObjectAttrs", + ">[] | null | undefined>" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.decorateQuery.$3", - "type": "string", + "id": "def-server.DataViewsService.getDefault", + "type": "Function", "tags": [], - "label": "dateFormatTZ", - "description": [], + "label": "getDefault", + "description": [ + "\nGet default index pattern" + ], "signature": [ - "string | undefined" + "() => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " | null>" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.dedupFilters", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "dedupFilters", - "description": [], - "signature": [ - "(existingFilters: ", - "Filter", - "[], filters: ", - "Filter", - "[], comparatorOptions?: ", - "FilterCompareOptions", - " | undefined) => ", - "Filter", - "[]" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "data", - "id": "def-common.dedupFilters.$1", - "type": "Array", + "id": "def-server.DataViewsService.getDefaultId", + "type": "Function", "tags": [], - "label": "existingFilters", - "description": [], + "label": "getDefaultId", + "description": [ + "\nGet default index pattern id" + ], "signature": [ - "Filter", - "[]" + "() => Promise" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.dedupFilters.$2", - "type": "Array", + "id": "def-server.DataViewsService.setDefault", + "type": "Function", "tags": [], - "label": "filters", - "description": [], + "label": "setDefault", + "description": [ + "\nOptionally set default index pattern, unless force = true" + ], "signature": [ - "Filter", - "[]" + "(id: string | null, force?: boolean) => Promise" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.setDefault.$1", + "type": "CompoundType", + "tags": [], + "label": "id", + "description": [ + "data view id" + ], + "signature": [ + "string | null" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.setDefault.$2", + "type": "boolean", + "tags": [], + "label": "force", + "description": [ + "set default data view even if there's an existing default" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.dedupFilters.$3", - "type": "Object", + "id": "def-server.DataViewsService.hasUserDataView", + "type": "Function", "tags": [], - "label": "comparatorOptions", - "description": [], + "label": "hasUserDataView", + "description": [ + "\nChecks if current user has a user created index pattern ignoring fleet's server default index patterns." + ], "signature": [ - "FilterCompareOptions", - " | undefined" + "() => Promise" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.disableFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "disableFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => ", - "Filter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "data", - "id": "def-common.disableFilter.$1", - "type": "Object", + "id": "def-server.DataViewsService.getFieldsForWildcard", + "type": "Function", "tags": [], - "label": "filter", - "description": [], + "label": "getFieldsForWildcard", + "description": [ + "\nGet field list by providing { pattern }." + ], "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" + "(options: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + }, + ") => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + "[]>" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.enableFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "enableFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => ", - "Filter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.getFieldsForWildcard.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [ + "options for getting field list" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "FieldSpec[]" + ] + }, { "parentPluginId": "data", - "id": "def-common.enableFilter.$1", - "type": "Object", + "id": "def-server.DataViewsService.getFieldsForIndexPattern", + "type": "Function", "tags": [], - "label": "filter", - "description": [], + "label": "getFieldsForIndexPattern", + "description": [ + "\nGet field list by providing an index patttern (or spec)." + ], "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" + "(indexPattern: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " | ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + }, + ", options?: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + }, + " | undefined) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + "[]>" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.getFieldsForIndexPattern.$1", + "type": "CompoundType", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " | ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.getFieldsForIndexPattern.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [ + "options for getting field list" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + }, + " | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": false + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.fieldList", - "type": "Function", - "tags": [], - "label": "fieldList", - "description": [], - "signature": [ - "(specs?: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" + "returnComment": [ + "FieldSpec[]" + ] }, - "[], shortDotsEnable?: boolean) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.IIndexPatternFieldList", - "text": "IIndexPatternFieldList" - } - ], - "path": "src/plugins/data_views/common/fields/field_list.ts", - "deprecated": false, - "children": [ { "parentPluginId": "data", - "id": "def-common.fieldList.$1", - "type": "Array", + "id": "def-server.DataViewsService.refreshFields", + "type": "Function", "tags": [], - "label": "specs", - "description": [], + "label": "refreshFields", + "description": [ + "\nRefresh field list for a given index pattern." + ], "signature": [ + "(indexPattern: ", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" + "section": "def-common.DataView", + "text": "DataView" }, - "[]" - ], - "path": "src/plugins/data_views/common/fields/field_list.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.fieldList.$2", - "type": "boolean", - "tags": [], - "label": "shortDotsEnable", - "description": [], - "signature": [ - "boolean" + ") => Promise" ], - "path": "src/plugins/data_views/common/fields/field_list.ts", + "path": "src/plugins/data_views/common/data_views/data_views.ts", "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.fromKueryExpression", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "fromKueryExpression", - "description": [], - "signature": [ - "(expression: string | ", - "QueryDslQueryContainer", - ", parseOptions?: Partial<", - "KueryParseOptions", - "> | undefined) => ", - "KueryNode" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.fromKueryExpression.$1", - "type": "CompoundType", - "tags": [], - "label": "expression", - "description": [], - "signature": [ - "string | ", - "QueryDslQueryContainer" + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.refreshFields.$1", + "type": "Object", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.fromKueryExpression.$2", - "type": "Object", + "id": "def-server.DataViewsService.fieldArrayToMap", + "type": "Function", "tags": [], - "label": "parseOptions", - "description": [], - "signature": [ - "Partial<", - "KueryParseOptions", - "> | undefined" + "label": "fieldArrayToMap", + "description": [ + "\nConverts field array to map." ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getEsQueryConfig", - "type": "Function", - "tags": [], - "label": "getEsQueryConfig", - "description": [], - "signature": [ - "(config: KibanaConfig) => ", - "EsQueryConfig" - ], - "path": "src/plugins/data/common/es_query/get_es_query_config.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.getEsQueryConfig.$1", - "type": "Object", - "tags": [], - "label": "config", - "description": [], "signature": [ - "KibanaConfig" + "(fields: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + "[], fieldAttrs?: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrs", + "text": "FieldAttrs" + }, + " | undefined) => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewFieldMap", + "text": "DataViewFieldMap" + } ], - "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "path": "src/plugins/data_views/common/data_views/data_views.ts", "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getFieldSubtypeMulti", - "type": "Function", - "tags": [], - "label": "getFieldSubtypeMulti", - "description": [], - "signature": [ - "(field: HasSubtype) => ", - "IFieldSubTypeMulti", - " | undefined" - ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.getFieldSubtypeMulti.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ subType?: ", - "IFieldSubType", - " | undefined; }" + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.fieldArrayToMap.$1", + "type": "Array", + "tags": [], + "label": "fields", + "description": [ + ": FieldSpec[]" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + "[]" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.fieldArrayToMap.$2", + "type": "Object", + "tags": [], + "label": "fieldAttrs", + "description": [ + ": FieldAttrs" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrs", + "text": "FieldAttrs" + }, + " | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": false + } ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getFieldSubtypeNested", - "type": "Function", - "tags": [], - "label": "getFieldSubtypeNested", - "description": [], - "signature": [ - "(field: HasSubtype) => ", - "IFieldSubTypeNested", - " | undefined" - ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false, - "returnComment": [], - "children": [ + "returnComment": [ + "Record" + ] + }, { "parentPluginId": "data", - "id": "def-common.getFieldSubtypeNested.$1", - "type": "Object", + "id": "def-server.DataViewsService.savedObjectToSpec", + "type": "Function", "tags": [], - "label": "field", - "description": [], + "label": "savedObjectToSpec", + "description": [ + "\nConverts data view saved object to data view spec." + ], "signature": [ - "{ subType?: ", - "IFieldSubType", - " | undefined; }" + "(savedObject: ", + "SavedObject", + "<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewAttributes", + "text": "DataViewAttributes" + }, + ">) => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + } ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getIndexPatternLoadMeta", - "type": "Function", - "tags": [], - "label": "getIndexPatternLoadMeta", - "description": [], - "signature": [ - "() => Omit<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.IndexPatternLoadExpressionFunctionDefinition", - "text": "IndexPatternLoadExpressionFunctionDefinition" + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.savedObjectToSpec.$1", + "type": "Object", + "tags": [], + "label": "savedObject", + "description": [], + "signature": [ + "SavedObject", + "<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewAttributes", + "text": "DataViewAttributes" + }, + ">" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "DataViewSpec" + ] }, - ", \"fn\">" - ], - "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", - "deprecated": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getPhraseFilterField", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "getPhraseFilterField", - "description": [], - "signature": [ - "(filter: ", - "PhraseFilter", - ") => string" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ { "parentPluginId": "data", - "id": "def-common.getPhraseFilterField.$1", - "type": "CompoundType", + "id": "def-server.DataViewsService.get", + "type": "Function", "tags": [], - "label": "filter", - "description": [], - "signature": [ - "Filter", - " & { meta: PhraseFilterMeta; query: { match_phrase?: Partial> | undefined; match?: Partial> | undefined; }; }" + "label": "get", + "description": [ + "\nGet an index pattern by id, cache optimized." ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.getPhraseFilterValue", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "getPhraseFilterValue", - "description": [], - "signature": [ - "(filter: ", - "PhraseFilter", - " | ", - "ScriptedPhraseFilter", - ") => PhraseFilterValue" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.getPhraseFilterValue.$1", - "type": "CompoundType", - "tags": [], - "label": "filter", - "description": [], "signature": [ - "PhraseFilter", - " | ", - "ScriptedPhraseFilter" + "(id: string) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ">" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isExistsFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isExistsFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => filter is ", - "ExistsFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.get.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "data", - "id": "def-common.isExistsFilter.$1", - "type": "Object", + "id": "def-server.DataViewsService.create", + "type": "Function", "tags": [], - "label": "filter", - "description": [], + "label": "create", + "description": [ + "\nCreate a new data view instance." + ], "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" + "(spec: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + }, + ", skipFetchFields?: boolean) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ">" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.create.$1", + "type": "Object", + "tags": [], + "label": "spec", + "description": [ + "data view spec" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.create.$2", + "type": "boolean", + "tags": [], + "label": "skipFetchFields", + "description": [ + "if true, will not fetch fields" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isFilterable", - "type": "Function", - "tags": [], - "label": "isFilterable", - "description": [], - "signature": [ - "(field: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" + "returnComment": [ + "DataView" + ] }, - ") => boolean" - ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false, - "children": [ { "parentPluginId": "data", - "id": "def-common.isFilterable.$1", - "type": "Object", + "id": "def-server.DataViewsService.createAndSave", + "type": "Function", "tags": [], - "label": "field", - "description": [], + "label": "createAndSave", + "description": [ + "\nCreate a new data view and save it right away." + ], "signature": [ + "(spec: ", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewField", - "text": "DataViewField" - } + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + }, + ", override?: boolean, skipFetchFields?: boolean) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ">" ], - "path": "src/plugins/data_views/common/fields/utils.ts", + "path": "src/plugins/data_views/common/data_views/data_views.ts", "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isFilterDisabled", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isFilterDisabled", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => boolean" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.isFilterDisabled.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.createAndSave.$1", + "type": "Object", + "tags": [], + "label": "spec", + "description": [ + "data view spec" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.createAndSave.$2", + "type": "boolean", + "tags": [], + "label": "override", + "description": [ + "Overwrite if existing index pattern exists." + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.createAndSave.$3", + "type": "boolean", + "tags": [], + "label": "skipFetchFields", + "description": [ + "Whether to skip field refresh step." + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isFilterPinned", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isFilterPinned", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => boolean | undefined" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "returnComment": [] + }, { "parentPluginId": "data", - "id": "def-common.isFilterPinned.$1", - "type": "Object", + "id": "def-server.DataViewsService.createSavedObject", + "type": "Function", "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" + "label": "createSavedObject", + "description": [ + "\nSave a new data view." ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isFilters", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isFilters", - "description": [], - "signature": [ - "(x: unknown) => x is ", - "Filter", - "[]" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.isFilters.$1", - "type": "Unknown", - "tags": [], - "label": "x", - "description": [], "signature": [ - "unknown" + "(dataView: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ", override?: boolean) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ">" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.createSavedObject.$1", + "type": "Object", + "tags": [], + "label": "dataView", + "description": [ + "data view instance" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.createSavedObject.$2", + "type": "boolean", + "tags": [], + "label": "override", + "description": [ + "Overwrite if existing index pattern exists" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isMatchAllFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isMatchAllFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => filter is ", - "MatchAllFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "returnComment": [] + }, { "parentPluginId": "data", - "id": "def-common.isMatchAllFilter.$1", - "type": "Object", + "id": "def-server.DataViewsService.updateSavedObject", + "type": "Function", "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" + "label": "updateSavedObject", + "description": [ + "\nSave existing dat aview. Will attempt to merge differences if there are conflicts." ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isMultiField", - "type": "Function", - "tags": [], - "label": "isMultiField", - "description": [], - "signature": [ - "(field: HasSubtype) => boolean" - ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.isMultiField.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], "signature": [ - "{ subType?: ", - "IFieldSubType", - " | undefined; }" + "(indexPattern: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ", saveAttempts?: number, ignoreErrors?: boolean) => Promise" ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isNestedField", - "type": "Function", - "tags": [], - "label": "isNestedField", - "description": [], - "signature": [ - "(field: HasSubtype) => boolean" - ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.isNestedField.$1", - "type": "Object", - "tags": [], - "label": "field", - "description": [], - "signature": [ - "{ subType?: ", - "IFieldSubType", - " | undefined; }" + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.updateSavedObject.$1", + "type": "Object", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.updateSavedObject.$2", + "type": "number", + "tags": [], + "label": "saveAttempts", + "description": [], + "signature": [ + "number" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.updateSavedObject.$3", + "type": "boolean", + "tags": [], + "label": "ignoreErrors", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "src/plugins/data_views/common/fields/utils.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isPhraseFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isPhraseFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => filter is ", - "PhraseFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "returnComment": [] + }, { "parentPluginId": "data", - "id": "def-common.isPhraseFilter.$1", - "type": "Object", + "id": "def-server.DataViewsService.delete", + "type": "Function", "tags": [], - "label": "filter", - "description": [], + "label": "delete", + "description": [ + "\nDeletes an index pattern from .kibana index." + ], "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" + "(indexPatternId: string) => Promise<{}>" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isPhrasesFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isPhrasesFilter", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => filter is ", - "PhrasesFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.delete.$1", + "type": "string", + "tags": [], + "label": "indexPatternId", + "description": [ + ": Id of kibana Index Pattern to delete" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "data", - "id": "def-common.isPhrasesFilter.$1", - "type": "Object", + "id": "def-server.DataViewsService.getDefaultDataView", + "type": "Function", "tags": [], - "label": "filter", - "description": [], + "label": "getDefaultDataView", + "description": [ + "\nReturns the default data view as an object.\nIf no default is found, or it is missing\nanother data view is selected as default and returned.\nIf no possible data view found to become a default returns null.\n" + ], "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" + "() => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " | null>" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "default data view" + ] } ], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.isQueryStringFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isQueryStringFilter", + "id": "def-server.IndexPatternsFetcher", + "type": "Class", + "tags": [], + "label": "IndexPatternsFetcher", "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => filter is ", - "QueryStringFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.isQueryStringFilter.$1", - "type": "Object", + "id": "def-server.IndexPatternsFetcher.Unnamed", + "type": "Function", "tags": [], - "label": "filter", + "label": "Constructor", "description": [], "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" + "any" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.isRangeFilter", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "isRangeFilter", - "description": [], - "signature": [ - "(filter?: ", - "Filter", - " | undefined) => filter is ", - "RangeFilter" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "elasticsearchClient", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchClient", + "text": "ElasticsearchClient" + } + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.Unnamed.$2", + "type": "boolean", + "tags": [], + "label": "allowNoIndices", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "data", - "id": "def-common.isRangeFilter.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard", + "type": "Function", + "tags": [ + "property", + "property", + "return" + ], + "label": "getFieldsForWildcard", + "description": [ + "\n Get a list of field objects for an index pattern that may contain wildcards\n" + ], "signature": [ - "Filter", - " | undefined" + "(options: { pattern: string | string[]; metaFields?: string[] | undefined; fieldCapsOptions?: { allow_no_indices: boolean; } | undefined; type?: string | undefined; rollupIndex?: string | undefined; filter?: ", + "QueryDslQueryContainer", + " | undefined; }) => Promise<", + { + "pluginId": "dataViews", + "scope": "server", + "docId": "kibDataViewsPluginApi", + "section": "def-server.FieldDescriptor", + "text": "FieldDescriptor" + }, + "[]>" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.luceneStringToDsl", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "luceneStringToDsl", - "description": [], - "signature": [ - "(query: string | ", - "QueryDslQueryContainer", - ") => ", - "QueryDslQueryContainer" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.pattern", + "type": "CompoundType", + "tags": [], + "label": "pattern", + "description": [], + "signature": [ + "string | string[]" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.metaFields", + "type": "Array", + "tags": [], + "label": "metaFields", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.fieldCapsOptions", + "type": "Object", + "tags": [], + "label": "fieldCapsOptions", + "description": [], + "signature": [ + "{ allow_no_indices: boolean; } | undefined" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.rollupIndex", + "type": "string", + "tags": [], + "label": "rollupIndex", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.getFieldsForWildcard.$1.filter", + "type": "Object", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "QueryDslQueryContainer", + " | undefined" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [] + }, { "parentPluginId": "data", - "id": "def-common.luceneStringToDsl.$1", - "type": "CompoundType", - "tags": [], - "label": "query", - "description": [], + "id": "def-server.IndexPatternsFetcher.validatePatternListActive", + "type": "Function", + "tags": [ + "return" + ], + "label": "validatePatternListActive", + "description": [ + "\n Returns an index pattern list of only those index pattern strings in the given list that return indices\n" + ], "signature": [ - "string | ", - "QueryDslQueryContainer" + "(patternList: string[]) => Promise" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.validatePatternListActive.$1", + "type": "Array", + "tags": [], + "label": "patternList", + "description": [ + "string[]" + ], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false - }, + } + ], + "functions": [ { "parentPluginId": "data", - "id": "def-common.onlyDisabledFiltersChanged", + "id": "def-server.getCapabilitiesForRollupIndices", "type": "Function", - "tags": [ - "deprecated" + "tags": [], + "label": "getCapabilitiesForRollupIndices", + "description": [ + "\nGet rollup job capabilities" ], - "label": "onlyDisabledFiltersChanged", - "description": [], "signature": [ - "(newFilters?: ", - "Filter", - "[] | undefined, oldFilters?: ", - "Filter", - "[] | undefined) => boolean" + "(indices: Record) => { [key: string]: any; }" ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], + "path": "src/plugins/data_views/server/fetcher/lib/map_capabilities.ts", + "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.onlyDisabledFiltersChanged.$1", - "type": "Array", + "id": "def-server.getCapabilitiesForRollupIndices.$1", + "type": "Object", "tags": [], - "label": "newFilters", - "description": [], - "signature": [ - "Filter", - "[] | undefined" + "label": "indices", + "description": [ + "rollup job index capabilites" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.onlyDisabledFiltersChanged.$2", - "type": "Array", - "tags": [], - "label": "oldFilters", - "description": [], "signature": [ - "Filter", - "[] | undefined" + "Record" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data_views/server/fetcher/lib/map_capabilities.ts", + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.pinFilter", + "id": "def-server.getEsQueryConfig", "type": "Function", - "tags": [ - "deprecated" - ], - "label": "pinFilter", + "tags": [], + "label": "getEsQueryConfig", "description": [], "signature": [ - "(filter: ", - "Filter", - ") => ", - "Filter" + "(config: KibanaConfig) => ", + "EsQueryConfig" ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.pinFilter.$1", + "id": "def-server.getEsQueryConfig.$1", "type": "Object", "tags": [], - "label": "filter", + "label": "config", "description": [], "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" + "KibanaConfig" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.tableHasFormulas", + "id": "def-server.getRequestAbortedSignal", "type": "Function", "tags": [], - "label": "tableHasFormulas", - "description": [], + "label": "getRequestAbortedSignal", + "description": [ + "\nA simple utility function that returns an `AbortSignal` corresponding to an `AbortController`\nwhich aborts when the given request is aborted." + ], "signature": [ - "(columns: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - "[], rows: ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableRow", - "text": "DatatableRow" - }, - "[]) => boolean" + "(aborted$: ", + "Observable", + ") => AbortSignal" ], - "path": "src/plugins/data/common/exports/formula_checks.ts", + "path": "src/plugins/data/server/lib/get_request_aborted_signal.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.tableHasFormulas.$1", - "type": "Array", + "id": "def-server.getRequestAbortedSignal.$1", + "type": "Object", "tags": [], - "label": "columns", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableColumn", - "text": "DatatableColumn" - }, - "[]" + "label": "aborted$", + "description": [ + "The observable of abort events (usually `request.events.aborted$`)" ], - "path": "src/plugins/data/common/exports/formula_checks.ts", - "deprecated": false, - "isRequired": true - }, - { - "parentPluginId": "data", - "id": "def-common.tableHasFormulas.$2", - "type": "Array", - "tags": [], - "label": "rows", - "description": [], "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.DatatableRow", - "text": "DatatableRow" - }, - "[]" + "Observable", + "" ], - "path": "src/plugins/data/common/exports/formula_checks.ts", + "path": "src/plugins/data/server/lib/get_request_aborted_signal.ts", "deprecated": false, "isRequired": true } @@ -28400,500 +14497,1874 @@ }, { "parentPluginId": "data", - "id": "def-common.toElasticsearchQuery", + "id": "def-server.getTime", "type": "Function", - "tags": [ - "deprecated" - ], - "label": "toElasticsearchQuery", + "tags": [], + "label": "getTime", "description": [], "signature": [ - "(node: ", - "KueryNode", - ", indexPattern?: ", - "DataViewBase", - " | undefined, config?: ", - "KueryQueryOptions", - " | undefined, context?: Record | undefined) => ", - "QueryDslQueryContainer" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ + "(indexPattern: ", { - "parentPluginId": "data", - "id": "def-common.toElasticsearchQuery.$1", - "type": "Object", - "tags": [], - "label": "node", - "description": [], - "signature": [ - "KueryNode" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + " | undefined, timeRange: ", + "TimeRange", + ", options: { forceNow?: Date | undefined; fieldName?: string | undefined; } | undefined) => ", + "RangeFilter", + " | ", + "ScriptedRangeFilter", + " | MatchAllRangeFilter | undefined" + ], + "path": "src/plugins/data/common/query/timefilter/get_time.ts", + "deprecated": false, + "children": [ { "parentPluginId": "data", - "id": "def-common.toElasticsearchQuery.$2", + "id": "def-server.getTime.$1", "type": "Object", "tags": [], "label": "indexPattern", "description": [], "signature": [ - "DataViewBase", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, " | undefined" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data/common/query/timefilter/get_time.ts", + "deprecated": false, + "isRequired": false }, { "parentPluginId": "data", - "id": "def-common.toElasticsearchQuery.$3", + "id": "def-server.getTime.$2", "type": "Object", "tags": [], - "label": "config", + "label": "timeRange", "description": [], "signature": [ - "KueryQueryOptions", - " | undefined" + "TimeRange" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data/common/query/timefilter/get_time.ts", + "deprecated": false, + "isRequired": true }, { "parentPluginId": "data", - "id": "def-common.toElasticsearchQuery.$4", - "type": "Object", - "tags": [], - "label": "context", - "description": [], - "signature": [ - "Record | undefined" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.toggleFilterDisabled", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "toggleFilterDisabled", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => { meta: { disabled: boolean; alias?: string | null | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: { store: ", - "FilterStateStore", - "; } | undefined; query?: Record | undefined; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.toggleFilterDisabled.$1", - "type": "Object", - "tags": [], - "label": "filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.toggleFilterNegated", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "toggleFilterNegated", - "description": [], - "signature": [ - "(filter: ", - "Filter", - ") => { meta: { negate: boolean; alias?: string | null | undefined; disabled?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; $state?: { store: ", - "FilterStateStore", - "; } | undefined; query?: Record | undefined; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.toggleFilterNegated.$1", + "id": "def-server.getTime.$3", "type": "Object", "tags": [], - "label": "filter", + "label": "options", "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data/common/query/timefilter/get_time.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.getTime.$3.forceNow", + "type": "Object", + "tags": [], + "label": "forceNow", + "description": [], + "signature": [ + "Date | undefined" + ], + "path": "src/plugins/data/common/query/timefilter/get_time.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.getTime.$3.fieldName", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data/common/query/timefilter/get_time.ts", + "deprecated": false + } + ] } ], + "returnComment": [], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.uniqFilters", + "id": "def-server.parseInterval", "type": "Function", - "tags": [ - "deprecated" - ], - "label": "uniqFilters", + "tags": [], + "label": "parseInterval", "description": [], "signature": [ - "(filters: ", - "Filter", - "[], comparatorOptions?: ", - "FilterCompareOptions", - " | undefined) => ", - "Filter", - "[]" + "(interval: string) => moment.Duration | null" ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "returnComment": [], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", + "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.uniqFilters.$1", - "type": "Array", - "tags": [], - "label": "filters", - "description": [], - "signature": [ - "Filter", - "[]" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.uniqFilters.$2", - "type": "Object", + "id": "def-server.parseInterval.$1", + "type": "string", "tags": [], - "label": "comparatorOptions", + "label": "interval", "description": [], "signature": [ - "FilterCompareOptions", - " | undefined" + "string" ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", + "deprecated": false, + "isRequired": true } ], + "returnComment": [], "initialIsOpen": false } ], "interfaces": [ { "parentPluginId": "data", - "id": "def-common.DataViewAttributes", + "id": "def-server.DataViewsServerPluginStart", "type": "Interface", "tags": [], - "label": "DataViewAttributes", + "label": "DataViewsServerPluginStart", "description": [ - "\nInterface for the data view saved object" + "\nDataViews server plugin start api" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data_views/server/types.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewAttributes.fields", - "type": "string", - "tags": [], - "label": "fields", - "description": [ - "\nFields as a serialized array of field specs" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewAttributes.title", - "type": "string", - "tags": [], - "label": "title", - "description": [ - "\nData view title" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewAttributes.type", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "\nData view type, default or rollup" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewAttributes.typeMeta", - "type": "string", - "tags": [], - "label": "typeMeta", - "description": [ - "\nType metadata information, serialized. Only used by rollup data views." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewAttributes.timeFieldName", - "type": "string", - "tags": [], - "label": "timeFieldName", - "description": [ - "\nTime field name" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewAttributes.sourceFilters", - "type": "string", - "tags": [], - "label": "sourceFilters", - "description": [ - "\nSerialized array of filters. Used by discover to hide fields." - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewAttributes.fieldFormatMap", - "type": "string", - "tags": [], - "label": "fieldFormatMap", - "description": [ - "\nSerialized map of field formats by field name" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewAttributes.fieldAttrs", - "type": "string", - "tags": [], - "label": "fieldAttrs", - "description": [ - "\nSerialized map of field attributes, currently field count and name" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewAttributes.runtimeFieldMap", - "type": "string", - "tags": [], - "label": "runtimeFieldMap", - "description": [ - "\nSerialized map of runtime field definitions, by field name" - ], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewAttributes.allowNoIndex", - "type": "CompoundType", - "tags": [], - "label": "allowNoIndex", - "description": [ - "\nPrevents errors when index pattern exists before indices" - ], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewAttributes.name", - "type": "string", + "id": "def-server.DataViewsServerPluginStart.dataViewsServiceFactory", + "type": "Function", "tags": [], - "label": "name", + "label": "dataViewsServiceFactory", "description": [ - "\nName of the data view. Human readable name used to differentiate data view." + "\nReturns a DataViews service instance" ], "signature": [ - "string | undefined" + "(savedObjectsClient: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsClientContract", + "text": "SavedObjectsClientContract" + }, + ", elasticsearchClient: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCorePluginApi", + "section": "def-server.ElasticsearchClient", + "text": "ElasticsearchClient" + }, + ", request?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + " | undefined, byPassCapabilities?: boolean | undefined) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewsService", + "text": "DataViewsService" + }, + ">" ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false + "path": "src/plugins/data_views/server/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsServerPluginStart.dataViewsServiceFactory.$1", + "type": "Object", + "tags": [], + "label": "savedObjectsClient", + "description": [], + "signature": [ + "{ create: (type: string, attributes: T, options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCreateOptions", + "text": "SavedObjectsCreateOptions" + }, + " | undefined) => Promise<", + "SavedObject", + ">; bulkCreate: (objects: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkCreateObject", + "text": "SavedObjectsBulkCreateObject" + }, + "[], options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCreateOptions", + "text": "SavedObjectsCreateOptions" + }, + " | undefined) => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkResponse", + "text": "SavedObjectsBulkResponse" + }, + ">; checkConflicts: (objects?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCheckConflictsObject", + "text": "SavedObjectsCheckConflictsObject" + }, + "[], options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBaseOptions", + "text": "SavedObjectsBaseOptions" + }, + ") => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCheckConflictsResponse", + "text": "SavedObjectsCheckConflictsResponse" + }, + ">; delete: (type: string, id: string, options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsDeleteOptions", + "text": "SavedObjectsDeleteOptions" + }, + ") => Promise<{}>; find: (options: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsFindOptions", + "text": "SavedObjectsFindOptions" + }, + ") => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsFindResponse", + "text": "SavedObjectsFindResponse" + }, + ">; bulkGet: (objects?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkGetObject", + "text": "SavedObjectsBulkGetObject" + }, + "[], options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBaseOptions", + "text": "SavedObjectsBaseOptions" + }, + ") => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkResponse", + "text": "SavedObjectsBulkResponse" + }, + ">; bulkResolve: (objects: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkResolveObject", + "text": "SavedObjectsBulkResolveObject" + }, + "[], options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBaseOptions", + "text": "SavedObjectsBaseOptions" + }, + " | undefined) => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkResolveResponse", + "text": "SavedObjectsBulkResolveResponse" + }, + ">; get: (type: string, id: string, options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBaseOptions", + "text": "SavedObjectsBaseOptions" + }, + ") => Promise<", + "SavedObject", + ">; resolve: (type: string, id: string, options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBaseOptions", + "text": "SavedObjectsBaseOptions" + }, + ") => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsResolveResponse", + "text": "SavedObjectsResolveResponse" + }, + ">; update: (type: string, id: string, attributes: Partial, options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsUpdateOptions", + "text": "SavedObjectsUpdateOptions" + }, + ") => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsUpdateResponse", + "text": "SavedObjectsUpdateResponse" + }, + ">; collectMultiNamespaceReferences: (objects: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesObject", + "text": "SavedObjectsCollectMultiNamespaceReferencesObject" + }, + "[], options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesOptions", + "text": "SavedObjectsCollectMultiNamespaceReferencesOptions" + }, + " | undefined) => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCollectMultiNamespaceReferencesResponse", + "text": "SavedObjectsCollectMultiNamespaceReferencesResponse" + }, + ">; updateObjectsSpaces: (objects: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsUpdateObjectsSpacesObject", + "text": "SavedObjectsUpdateObjectsSpacesObject" + }, + "[], spacesToAdd: string[], spacesToRemove: string[], options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsUpdateObjectsSpacesOptions", + "text": "SavedObjectsUpdateObjectsSpacesOptions" + }, + " | undefined) => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsUpdateObjectsSpacesResponse", + "text": "SavedObjectsUpdateObjectsSpacesResponse" + }, + ">; bulkUpdate: (objects: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkUpdateObject", + "text": "SavedObjectsBulkUpdateObject" + }, + "[], options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkUpdateOptions", + "text": "SavedObjectsBulkUpdateOptions" + }, + " | undefined) => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBulkUpdateResponse", + "text": "SavedObjectsBulkUpdateResponse" + }, + ">; removeReferencesTo: (type: string, id: string, options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsRemoveReferencesToOptions", + "text": "SavedObjectsRemoveReferencesToOptions" + }, + " | undefined) => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsRemoveReferencesToResponse", + "text": "SavedObjectsRemoveReferencesToResponse" + }, + ">; openPointInTimeForType: (type: string | string[], options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsOpenPointInTimeOptions", + "text": "SavedObjectsOpenPointInTimeOptions" + }, + ") => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsOpenPointInTimeResponse", + "text": "SavedObjectsOpenPointInTimeResponse" + }, + ">; closePointInTime: (id: string, options?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsBaseOptions", + "text": "SavedObjectsBaseOptions" + }, + " | undefined) => Promise<", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsClosePointInTimeResponse", + "text": "SavedObjectsClosePointInTimeResponse" + }, + ">; createPointInTimeFinder: (findOptions: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCreatePointInTimeFinderOptions", + "text": "SavedObjectsCreatePointInTimeFinderOptions" + }, + ", dependencies?: ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsCreatePointInTimeFinderDependencies", + "text": "SavedObjectsCreatePointInTimeFinderDependencies" + }, + " | undefined) => ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.ISavedObjectsPointInTimeFinder", + "text": "ISavedObjectsPointInTimeFinder" + }, + "; errors: typeof ", + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreSavedObjectsPluginApi", + "section": "def-server.SavedObjectsErrorHelpers", + "text": "SavedObjectsErrorHelpers" + }, + "; }" + ], + "path": "src/plugins/data_views/server/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsServerPluginStart.dataViewsServiceFactory.$2", + "type": "Object", + "tags": [], + "label": "elasticsearchClient", + "description": [], + "signature": [ + "{ eql: ", + "default", + "; search: { >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchResponse", + ">; >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchResponse", + ", unknown>>; >(this: That, params?: ", + "SearchRequest", + " | ", + "SearchRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchResponse", + ">; }; create: { (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "CreateRequest", + " | ", + "CreateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; monitoring: ", + "default", + "; security: ", + "default", + "; name: string | symbol; index: { (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "IndexRequest", + " | ", + "IndexRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; delete: { (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "WriteResponseBase", + ">; (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "WriteResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteRequest", + " | ", + "DeleteRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "WriteResponseBase", + ">; }; get: { (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetResponse", + ">; (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetResponse", + ", unknown>>; (this: That, params: ", + "GetRequest", + " | ", + "GetRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetResponse", + ">; }; update: { (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateResponse", + ">; (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateResponse", + ", unknown>>; (this: That, params: ", + "UpdateRequest", + " | ", + "UpdateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateResponse", + ">; }; closePointInTime: { (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ClosePointInTimeResponse", + ">; (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ClosePointInTimeResponse", + ", unknown>>; (this: That, params: ", + "ClosePointInTimeRequest", + " | ", + "ClosePointInTimeRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ClosePointInTimeResponse", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "default", + "; helpers: ", + "default", + "; child: (opts: ", + "ClientOptions", + ") => ", + "default", + "; Internal: ", + "default", + "; asyncSearch: ", + "default", + "; autoscaling: ", + "default", + "; bulk: { (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "BulkResponse", + ">; (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "BulkResponse", + ", unknown>>; (this: That, params: ", + "BulkRequest", + " | ", + "BulkRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "BulkResponse", + ">; }; cat: ", + "default", + "; ccr: ", + "default", + "; clearScroll: { (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ClearScrollResponse", + ">; (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ClearScrollResponse", + ", unknown>>; (this: That, params?: ", + "ClearScrollRequest", + " | ", + "ClearScrollRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ClearScrollResponse", + ">; }; cluster: ", + "default", + "; count: { (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "CountResponse", + ">; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "CountResponse", + ", unknown>>; (this: That, params?: ", + "CountRequest", + " | ", + "CountRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "CountResponse", + ">; }; danglingIndices: ", + "default", + "; deleteByQuery: { (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "DeleteByQueryResponse", + ">; (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "DeleteByQueryResponse", + ", unknown>>; (this: That, params: ", + "DeleteByQueryRequest", + " | ", + "DeleteByQueryRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "DeleteByQueryResponse", + ">; }; deleteByQueryRethrottle: { (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TasksTaskListResponseBase", + ">; (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TasksTaskListResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteByQueryRethrottleRequest", + " | ", + "DeleteByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TasksTaskListResponseBase", + ">; }; deleteScript: { (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "AcknowledgedResponseBase", + ", unknown>>; (this: That, params: ", + "DeleteScriptRequest", + " | ", + "DeleteScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; }; enrich: ", + "default", + "; exists: { (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "ExistsRequest", + " | ", + "ExistsRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; existsSource: { (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "ExistsSourceRequest", + " | ", + "ExistsSourceRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; explain: { (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ExplainResponse", + ">; (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ExplainResponse", + ", unknown>>; (this: That, params: ", + "ExplainRequest", + " | ", + "ExplainRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ExplainResponse", + ">; }; features: ", + "default", + "; fieldCaps: { (this: That, params: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "FieldCapsResponse", + ">; (this: That, params: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "FieldCapsResponse", + ", unknown>>; (this: That, params: ", + "FieldCapsRequest", + " | ", + "FieldCapsRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "FieldCapsResponse", + ">; }; fleet: ", + "default", + "; getScript: { (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptResponse", + ">; (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptResponse", + ", unknown>>; (this: That, params: ", + "GetScriptRequest", + " | ", + "GetScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptResponse", + ">; }; getScriptContext: { (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptContextResponse", + ">; (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptContextResponse", + ", unknown>>; (this: That, params?: ", + "GetScriptContextRequest", + " | ", + "GetScriptContextRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptContextResponse", + ">; }; getScriptLanguages: { (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "GetScriptLanguagesResponse", + ">; (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "GetScriptLanguagesResponse", + ", unknown>>; (this: That, params?: ", + "GetScriptLanguagesRequest", + " | ", + "GetScriptLanguagesRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "GetScriptLanguagesResponse", + ">; }; getSource: { (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "GetSourceRequest", + " | ", + "GetSourceRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; graph: ", + "default", + "; ilm: ", + "default", + "; indices: ", + "default", + "; info: { (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "InfoResponse", + ">; (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "InfoResponse", + ", unknown>>; (this: That, params?: ", + "InfoRequest", + " | ", + "InfoRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "InfoResponse", + ">; }; ingest: ", + "default", + "; knnSearch: { (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "KnnSearchResponse", + ">; (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "KnnSearchResponse", + ", unknown>>; (this: That, params: ", + "KnnSearchRequest", + " | ", + "KnnSearchRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "KnnSearchResponse", + ">; }; license: ", + "default", + "; logstash: ", + "default", + "; mget: { (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MgetResponse", + ">; (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MgetResponse", + ", unknown>>; (this: That, params?: ", + "MgetRequest", + " | ", + "MgetRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MgetResponse", + ">; }; migration: ", + "default", + "; ml: ", + "default", + "; msearch: { >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MsearchResponse", + ">; >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MsearchResponse", + ", unknown>>; >(this: That, params: ", + "MsearchRequest", + " | ", + "MsearchRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MsearchResponse", + ">; }; msearchTemplate: { >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MsearchTemplateResponse", + ">; >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MsearchTemplateResponse", + ", unknown>>; >(this: That, params: ", + "MsearchTemplateRequest", + " | ", + "MsearchTemplateRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MsearchTemplateResponse", + ">; }; mtermvectors: { (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "MtermvectorsResponse", + ">; (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "MtermvectorsResponse", + ", unknown>>; (this: That, params?: ", + "MtermvectorsRequest", + " | ", + "MtermvectorsRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "MtermvectorsResponse", + ">; }; nodes: ", + "default", + "; openPointInTime: { (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "OpenPointInTimeResponse", + ">; (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "OpenPointInTimeResponse", + ", unknown>>; (this: That, params: ", + "OpenPointInTimeRequest", + " | ", + "OpenPointInTimeRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "OpenPointInTimeResponse", + ">; }; ping: { (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params?: ", + "PingRequest", + " | ", + "PingRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; putScript: { (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "AcknowledgedResponseBase", + ", unknown>>; (this: That, params: ", + "PutScriptRequest", + " | ", + "PutScriptRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "AcknowledgedResponseBase", + ">; }; rankEval: { (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "RankEvalResponse", + ">; (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "RankEvalResponse", + ", unknown>>; (this: That, params: ", + "RankEvalRequest", + " | ", + "RankEvalRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "RankEvalResponse", + ">; }; reindex: { (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ReindexResponse", + ">; (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ReindexResponse", + ", unknown>>; (this: That, params: ", + "ReindexRequest", + " | ", + "ReindexRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ReindexResponse", + ">; }; reindexRethrottle: { (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ReindexRethrottleResponse", + ">; (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ReindexRethrottleResponse", + ", unknown>>; (this: That, params: ", + "ReindexRethrottleRequest", + " | ", + "ReindexRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ReindexRethrottleResponse", + ">; }; renderSearchTemplate: { (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "RenderSearchTemplateResponse", + ">; (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "RenderSearchTemplateResponse", + ", unknown>>; (this: That, params?: ", + "RenderSearchTemplateRequest", + " | ", + "RenderSearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "RenderSearchTemplateResponse", + ">; }; rollup: ", + "default", + "; scriptsPainlessExecute: { (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ScriptsPainlessExecuteResponse", + ">; (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ScriptsPainlessExecuteResponse", + ", unknown>>; (this: That, params?: ", + "ScriptsPainlessExecuteRequest", + " | ", + "ScriptsPainlessExecuteRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ScriptsPainlessExecuteResponse", + ">; }; scroll: { >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "ScrollResponse", + ">; >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "ScrollResponse", + ", unknown>>; >(this: That, params: ", + "ScrollRequest", + " | ", + "ScrollRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "ScrollResponse", + ">; }; searchMvt: { (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise; (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + ">; (this: That, params: ", + "SearchMvtRequest", + " | ", + "SearchMvtRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise; }; searchShards: { (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchShardsResponse", + ">; (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchShardsResponse", + ", unknown>>; (this: That, params?: ", + "SearchShardsRequest", + " | ", + "SearchShardsRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchShardsResponse", + ">; }; searchTemplate: { (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "SearchTemplateResponse", + ">; (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "SearchTemplateResponse", + ", unknown>>; (this: That, params?: ", + "SearchTemplateRequest", + " | ", + "SearchTemplateRequest", + " | undefined, options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "SearchTemplateResponse", + ">; }; searchableSnapshots: ", + "default", + "; shutdown: ", + "default", + "; slm: ", + "default", + "; snapshot: ", + "default", + "; sql: ", + "default", + "; ssl: ", + "default", + "; tasks: ", + "default", + "; termsEnum: { (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TermsEnumResponse", + ">; (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TermsEnumResponse", + ", unknown>>; (this: That, params: ", + "TermsEnumRequest", + " | ", + "TermsEnumRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TermsEnumResponse", + ">; }; termvectors: { (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "TermvectorsResponse", + ">; (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "TermvectorsResponse", + ", unknown>>; (this: That, params: ", + "TermvectorsRequest", + " | ", + "TermvectorsRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "TermvectorsResponse", + ">; }; textStructure: ", + "default", + "; transform: ", + "default", + "; updateByQuery: { (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateByQueryResponse", + ">; (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateByQueryResponse", + ", unknown>>; (this: That, params: ", + "UpdateByQueryRequest", + " | ", + "UpdateByQueryRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateByQueryResponse", + ">; }; updateByQueryRethrottle: { (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithOutMeta", + " | undefined): Promise<", + "UpdateByQueryRethrottleResponse", + ">; (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptionsWithMeta", + " | undefined): Promise<", + "TransportResult", + "<", + "UpdateByQueryRethrottleResponse", + ", unknown>>; (this: That, params: ", + "UpdateByQueryRethrottleRequest", + " | ", + "UpdateByQueryRethrottleRequest", + ", options?: ", + "TransportRequestOptions", + " | undefined): Promise<", + "UpdateByQueryRethrottleResponse", + ">; }; watcher: ", + "default", + "; xpack: ", + "default", + "; }" + ], + "path": "src/plugins/data_views/server/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsServerPluginStart.dataViewsServiceFactory.$3", + "type": "Object", + "tags": [], + "label": "request", + "description": [], + "signature": [ + { + "pluginId": "core", + "scope": "server", + "docId": "kibCoreHttpPluginApi", + "section": "def-server.KibanaRequest", + "text": "KibanaRequest" + }, + " | undefined" + ], + "path": "src/plugins/data_views/server/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsServerPluginStart.dataViewsServiceFactory.$4", + "type": "CompoundType", + "tags": [], + "label": "byPassCapabilities", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/server/types.ts", + "deprecated": false + } + ] } ], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.DataViewListItem", + "id": "def-server.FieldDescriptor", "type": "Interface", "tags": [], - "label": "DataViewListItem", - "description": [ - "\nResult from data view search - summary data." - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "label": "FieldDescriptor", + "description": [], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.DataViewListItem.id", + "id": "def-server.FieldDescriptor.aggregatable", + "type": "boolean", + "tags": [], + "label": "aggregatable", + "description": [], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.FieldDescriptor.name", "type": "string", "tags": [], - "label": "id", - "description": [ - "\nSaved object id" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "label": "name", + "description": [], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.DataViewListItem.namespaces", - "type": "Array", + "id": "def-server.FieldDescriptor.readFromDocValues", + "type": "boolean", "tags": [], - "label": "namespaces", - "description": [ - "\nNamespace ids" - ], - "signature": [ - "string[] | undefined" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "label": "readFromDocValues", + "description": [], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.DataViewListItem.title", - "type": "string", + "id": "def-server.FieldDescriptor.searchable", + "type": "boolean", "tags": [], - "label": "title", - "description": [ - "\nData view title" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "label": "searchable", + "description": [], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.DataViewListItem.type", + "id": "def-server.FieldDescriptor.type", "type": "string", "tags": [], "label": "type", - "description": [ - "\nData view type" - ], + "description": [], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.FieldDescriptor.esTypes", + "type": "Array", + "tags": [], + "label": "esTypes", + "description": [], "signature": [ - "string | undefined" + "string[]" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.DataViewListItem.typeMeta", + "id": "def-server.FieldDescriptor.subType", "type": "Object", "tags": [], - "label": "typeMeta", - "description": [ - "\nData view type meta" - ], + "label": "subType", + "description": [], "signature": [ - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.TypeMeta", - "text": "TypeMeta" - }, - " | undefined" + "FieldSubType | undefined" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.DataViewListItem.name", - "type": "string", + "id": "def-server.FieldDescriptor.metadata_field", + "type": "CompoundType", "tags": [], - "label": "name", + "label": "metadata_field", "description": [], "signature": [ - "string | undefined" + "boolean | undefined" ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", "deprecated": false } ], @@ -28901,619 +16372,1022 @@ }, { "parentPluginId": "data", - "id": "def-common.FilterValueFormatter", + "id": "def-server.IEsSearchRequest", "type": "Interface", "tags": [], - "label": "FilterValueFormatter", + "label": "IEsSearchRequest", "description": [], - "path": "src/plugins/data/common/types.ts", - "deprecated": false, - "children": [ + "signature": [ { - "parentPluginId": "data", - "id": "def-common.FilterValueFormatter.convert", - "type": "Function", - "tags": [], - "label": "convert", - "description": [], - "signature": [ - "(value: any) => string" - ], - "path": "src/plugins/data/common/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FilterValueFormatter.convert.$1", - "type": "Any", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "any" - ], - "path": "src/plugins/data/common/types.ts", - "deprecated": false - } - ] + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IEsSearchRequest", + "text": "IEsSearchRequest" + }, + " extends ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IKibanaSearchRequest", + "text": "IKibanaSearchRequest" + }, + "<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ISearchRequestParams", + "text": "ISearchRequestParams" }, + ">" + ], + "path": "src/plugins/data/common/search/strategies/es_search/types.ts", + "deprecated": false, + "children": [ { "parentPluginId": "data", - "id": "def-common.FilterValueFormatter.getConverterFor", - "type": "Function", + "id": "def-server.IEsSearchRequest.indexType", + "type": "string", "tags": [], - "label": "getConverterFor", + "label": "indexType", "description": [], "signature": [ - "(type: string) => FilterFormatterFunction" - ], - "path": "src/plugins/data/common/types.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.FilterValueFormatter.getConverterFor.$1", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string" - ], - "path": "src/plugins/data/common/types.ts", - "deprecated": false, - "isRequired": true - } + "string | undefined" ], - "returnComment": [] + "path": "src/plugins/data/common/search/strategies/es_search/types.ts", + "deprecated": false } ], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.GetFieldsOptions", + "id": "def-server.ISearchOptions", "type": "Interface", "tags": [], - "label": "GetFieldsOptions", + "label": "ISearchOptions", "description": [], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/search/types.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.GetFieldsOptions.pattern", - "type": "string", + "id": "def-server.ISearchOptions.abortSignal", + "type": "Object", + "tags": [], + "label": "abortSignal", + "description": [ + "\nAn `AbortSignal` that allows the caller of `search` to abort a search request." + ], + "signature": [ + "AbortSignal | undefined" + ], + "path": "src/plugins/data/common/search/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.ISearchOptions.strategy", + "type": "string", + "tags": [], + "label": "strategy", + "description": [ + "\nUse this option to force using a specific server side search strategy. Leave empty to use the default strategy." + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data/common/search/types.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.ISearchOptions.legacyHitsTotal", + "type": "CompoundType", "tags": [], - "label": "pattern", - "description": [], - "path": "src/plugins/data_views/common/types.ts", + "label": "legacyHitsTotal", + "description": [ + "\nRequest the legacy format for the total number of hits. If sending `rest_total_hits_as_int` to\nsomething other than `true`, this should be set to `false`." + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data/common/search/types.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.GetFieldsOptions.type", + "id": "def-server.ISearchOptions.sessionId", "type": "string", "tags": [], - "label": "type", - "description": [], + "label": "sessionId", + "description": [ + "\nA session ID, grouping multiple search requests into a single session." + ], "signature": [ "string | undefined" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/search/types.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.GetFieldsOptions.lookBack", + "id": "def-server.ISearchOptions.isStored", "type": "CompoundType", "tags": [], - "label": "lookBack", - "description": [], + "label": "isStored", + "description": [ + "\nWhether the session is already saved (i.e. sent to background)" + ], "signature": [ "boolean | undefined" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/search/types.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.GetFieldsOptions.metaFields", - "type": "Array", + "id": "def-server.ISearchOptions.isRestore", + "type": "CompoundType", "tags": [], - "label": "metaFields", - "description": [], + "label": "isRestore", + "description": [ + "\nWhether the session is restored (i.e. search requests should re-use the stored search IDs,\nrather than starting from scratch)" + ], "signature": [ - "string[] | undefined" + "boolean | undefined" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/search/types.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.GetFieldsOptions.rollupIndex", - "type": "string", + "id": "def-server.ISearchOptions.indexPattern", + "type": "Object", "tags": [], - "label": "rollupIndex", - "description": [], + "label": "indexPattern", + "description": [ + "\nIndex pattern reference is used for better error messages" + ], "signature": [ - "string | undefined" + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " | undefined" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/search/types.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.GetFieldsOptions.allowNoIndex", - "type": "CompoundType", + "id": "def-server.ISearchOptions.inspector", + "type": "Object", "tags": [], - "label": "allowNoIndex", - "description": [], + "label": "inspector", + "description": [ + "\nInspector integration options" + ], "signature": [ - "boolean | undefined" + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IInspectorInfo", + "text": "IInspectorInfo" + }, + " | undefined" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/search/types.ts", "deprecated": false }, { "parentPluginId": "data", - "id": "def-common.GetFieldsOptions.filter", + "id": "def-server.ISearchOptions.executionContext", "type": "Object", "tags": [], - "label": "filter", + "label": "executionContext", "description": [], "signature": [ - "QueryDslQueryContainer", + "KibanaExecutionContext", " | undefined" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/search/types.ts", "deprecated": false } ], "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "data", + "id": "def-server.ES_FIELD_TYPES", + "type": "Enum", + "tags": [], + "label": "ES_FIELD_TYPES", + "description": [], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false, + "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.IDataViewsApiClient", - "type": "Interface", + "id": "def-server.KBN_FIELD_TYPES", + "type": "Enum", "tags": [], - "label": "IDataViewsApiClient", + "label": "KBN_FIELD_TYPES", "description": [], - "path": "src/plugins/data_views/common/types.ts", + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-server.METRIC_TYPES", + "type": "Enum", + "tags": [], + "label": "METRIC_TYPES", + "description": [], + "path": "src/plugins/data/common/search/aggs/metrics/metric_agg_types.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "data", + "id": "def-server.DEFAULT_QUERY_LANGUAGE", + "type": "string", + "tags": [], + "label": "DEFAULT_QUERY_LANGUAGE", + "description": [], + "signature": [ + "\"kuery\"" + ], + "path": "src/plugins/data/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-server.ES_SEARCH_STRATEGY", + "type": "string", + "tags": [], + "label": "ES_SEARCH_STRATEGY", + "description": [], + "signature": [ + "\"es\"" + ], + "path": "src/plugins/data/common/search/strategies/es_search/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-server.IEsSearchResponse", + "type": "Type", + "tags": [], + "label": "IEsSearchResponse", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IKibanaSearchResponse", + "text": "IKibanaSearchResponse" + }, + "<", + "SearchResponse", + ">>" + ], + "path": "src/plugins/data/common/search/strategies/es_search/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-server.ParsedInterval", + "type": "Type", + "tags": [], + "label": "ParsedInterval", + "description": [], + "signature": [ + "{ value: number; unit: ", + "Unit", + "; type: \"calendar\" | \"fixed\"; }" + ], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_es_interval.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "data", + "id": "def-server.exporters", + "type": "Object", + "tags": [], + "label": "exporters", + "description": [], + "path": "src/plugins/data/server/index.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.IDataViewsApiClient.getFieldsForWildcard", + "id": "def-server.exporters.datatableToCSV", "type": "Function", "tags": [], - "label": "getFieldsForWildcard", + "label": "datatableToCSV", "description": [], "signature": [ - "(options: ", + "({ columns, rows }: ", { - "pluginId": "dataViews", + "pluginId": "expressions", "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" }, - ") => Promise" + ", { csvSeparator, quoteValues, formatFactory, raw, escapeFormulaValues }: CSVOptions) => string" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/server/index.ts", "deprecated": false, + "returnComment": [], "children": [ { "parentPluginId": "data", - "id": "def-common.IDataViewsApiClient.getFieldsForWildcard.$1", + "id": "def-server.exporters.datatableToCSV.$1", "type": "Object", "tags": [], - "label": "options", + "label": "__0", "description": [], "signature": [ { - "pluginId": "dataViews", + "pluginId": "expressions", "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" } ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "isRequired": true + "path": "src/plugins/data/common/exports/export_csv.tsx", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.exporters.datatableToCSV.$2", + "type": "Object", + "tags": [], + "label": "__1", + "description": [], + "signature": [ + "CSVOptions" + ], + "path": "src/plugins/data/common/exports/export_csv.tsx", + "deprecated": false } - ], - "returnComment": [] + ] }, { "parentPluginId": "data", - "id": "def-common.IDataViewsApiClient.hasUserIndexPattern", - "type": "Function", + "id": "def-server.exporters.CSV_MIME_TYPE", + "type": "string", "tags": [], - "label": "hasUserIndexPattern", + "label": "CSV_MIME_TYPE", "description": [], - "signature": [ - "() => Promise" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "children": [], - "returnComment": [] + "path": "src/plugins/data/server/index.ts", + "deprecated": false } ], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.IndexPatternExpressionType", - "type": "Interface", + "id": "def-server.search", + "type": "Object", "tags": [], - "label": "IndexPatternExpressionType", - "description": [ - "\nIndex pattern expression interface" - ], - "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", + "label": "search", + "description": [], + "path": "src/plugins/data/server/index.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.IndexPatternExpressionType.type", - "type": "string", - "tags": [], - "label": "type", - "description": [ - "\nExpression type" - ], - "signature": [ - "\"index_pattern\"" - ], - "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.IndexPatternExpressionType.value", + "id": "def-server.search.aggs", "type": "Object", "tags": [], - "label": "value", - "description": [ - "\nValue - DataViewSpec" - ], - "signature": [ - "{ id?: string | undefined; version?: string | undefined; title?: string | undefined; timeFieldName?: string | undefined; sourceFilters?: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.SourceFilter", - "text": "SourceFilter" - }, - "[] | undefined; fields?: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewFieldMap", - "text": "DataViewFieldMap" - }, - " | undefined; typeMeta?: ", + "label": "aggs", + "description": [], + "path": "src/plugins/data/server/index.ts", + "deprecated": false, + "children": [ { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.TypeMeta", - "text": "TypeMeta" + "parentPluginId": "data", + "id": "def-server.search.aggs.CidrMask", + "type": "Object", + "tags": [], + "label": "CidrMask", + "description": [], + "signature": [ + "typeof ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.CidrMask", + "text": "CidrMask" + } + ], + "path": "src/plugins/data/server/index.ts", + "deprecated": false }, - " | undefined; type?: string | undefined; fieldFormats?: Record Interval" + ], + "path": "src/plugins/data/server/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-server.search.aggs.dateHistogramInterval.$1", + "type": "string", + "tags": [], + "label": "interval", + "description": [], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/date_histogram_interval.ts", + "deprecated": false + } + ] }, - "<", - "SerializableRecord", - ">> | undefined; runtimeFieldMap?: Record | undefined; fieldAttrs?: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrs", - "text": "FieldAttrs" - }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" - ], - "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.KbnFieldTypeOptions", - "type": "Interface", - "tags": [], - "label": "KbnFieldTypeOptions", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.KbnFieldTypeOptions.sortable", - "type": "boolean", - "tags": [], - "label": "sortable", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.KbnFieldTypeOptions.filterable", - "type": "boolean", - "tags": [], - "label": "filterable", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.KbnFieldTypeOptions.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.KbnFieldTypeOptions.esTypes", - "type": "Array", - "tags": [], - "label": "esTypes", - "description": [], - "signature": [ - "ES_FIELD_TYPES", - "[]" - ], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false + "parentPluginId": "data", + "id": "def-server.search.aggs.parseInterval", + "type": "Function", + "tags": [], + "label": "parseInterval", + "description": [], + "signature": [ + "(interval: string) => moment.Duration | null" + ], + "path": "src/plugins/data/server/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-server.search.aggs.parseInterval.$1", + "type": "string", + "tags": [], + "label": "interval", + "description": [], + "path": "src/plugins/data/common/search/aggs/utils/date_interval_utils/parse_interval.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "data", + "id": "def-server.search.aggs.calcAutoIntervalLessThan", + "type": "Function", + "tags": [], + "label": "calcAutoIntervalLessThan", + "description": [], + "signature": [ + "(maxBucketCount: number, duration: number) => moment.Duration" + ], + "path": "src/plugins/data/server/index.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-server.search.aggs.calcAutoIntervalLessThan.$1", + "type": "number", + "tags": [], + "label": "maxBucketCount", + "description": [], + "path": "src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_auto_interval.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.search.aggs.calcAutoIntervalLessThan.$2", + "type": "number", + "tags": [], + "label": "duration", + "description": [], + "path": "src/plugins/data/common/search/aggs/buckets/lib/time_buckets/calc_auto_interval.ts", + "deprecated": false + } + ] + } + ] } ], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.SavedObject", - "type": "Interface", + "id": "def-server.UI_SETTINGS", + "type": "Object", "tags": [], - "label": "SavedObject", + "label": "UI_SETTINGS", "description": [], "signature": [ - "SavedObject", - "" + "{ readonly META_FIELDS: \"metaFields\"; readonly DOC_HIGHLIGHT: \"doc_table:highlight\"; readonly QUERY_STRING_OPTIONS: \"query:queryString:options\"; readonly QUERY_ALLOW_LEADING_WILDCARDS: \"query:allowLeadingWildcards\"; readonly SEARCH_QUERY_LANGUAGE: \"search:queryLanguage\"; readonly SORT_OPTIONS: \"sort:options\"; readonly COURIER_IGNORE_FILTER_IF_FIELD_NOT_IN_INDEX: \"courier:ignoreFilterIfFieldNotInIndex\"; readonly COURIER_SET_REQUEST_PREFERENCE: \"courier:setRequestPreference\"; readonly COURIER_CUSTOM_REQUEST_PREFERENCE: \"courier:customRequestPreference\"; readonly COURIER_MAX_CONCURRENT_SHARD_REQUESTS: \"courier:maxConcurrentShardRequests\"; readonly SEARCH_INCLUDE_FROZEN: \"search:includeFrozen\"; readonly SEARCH_TIMEOUT: \"search:timeout\"; readonly HISTOGRAM_BAR_TARGET: \"histogram:barTarget\"; readonly HISTOGRAM_MAX_BARS: \"histogram:maxBars\"; readonly HISTORY_LIMIT: \"history:limit\"; readonly TIMEPICKER_REFRESH_INTERVAL_DEFAULTS: \"timepicker:refreshIntervalDefaults\"; readonly TIMEPICKER_QUICK_RANGES: \"timepicker:quickRanges\"; readonly TIMEPICKER_TIME_DEFAULTS: \"timepicker:timeDefaults\"; readonly FILTERS_PINNED_BY_DEFAULT: \"filters:pinnedByDefault\"; readonly FILTERS_EDITOR_SUGGEST_VALUES: \"filterEditor:suggestValues\"; readonly AUTOCOMPLETE_USE_TIMERANGE: \"autocomplete:useTimeRange\"; readonly AUTOCOMPLETE_VALUE_SUGGESTION_METHOD: \"autocomplete:valueSuggestionMethod\"; readonly DATE_FORMAT: \"dateFormat\"; readonly DATEFORMAT_TZ: \"dateFormat:tz\"; }" ], - "path": "src/core/types/saved_objects.ts", + "path": "src/plugins/data/common/constants.ts", "deprecated": false, - "children": [ - { - "parentPluginId": "data", - "id": "def-common.SavedObject.id", - "type": "string", - "tags": [], - "label": "id", - "description": [ - "The ID of this Saved Object, guaranteed to be unique for all objects of the same `type`" - ], - "path": "src/core/types/saved_objects.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.SavedObject.type", - "type": "string", - "tags": [], - "label": "type", - "description": [ - " The type of Saved Object. Each plugin can define it's own custom Saved Object types." - ], - "path": "src/core/types/saved_objects.ts", - "deprecated": false - }, + "initialIsOpen": false + } + ], + "setup": { + "parentPluginId": "data", + "id": "def-server.DataPluginSetup", + "type": "Interface", + "tags": [], + "label": "DataPluginSetup", + "description": [], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataPluginSetup.search", + "type": "Object", + "tags": [], + "label": "search", + "description": [], + "signature": [ + "ISearchSetup" + ], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataPluginSetup.query", + "type": "Object", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "QuerySetup" + ], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataPluginSetup.fieldFormats", + "type": "Object", + "tags": [ + "deprecated" + ], + "label": "fieldFormats", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "server", + "docId": "kibFieldFormatsPluginApi", + "section": "def-server.FieldFormatsSetup", + "text": "FieldFormatsSetup" + } + ], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": true, + "references": [] + } + ], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "data", + "id": "def-server.DataPluginStart", + "type": "Interface", + "tags": [], + "label": "DataPluginStart", + "description": [], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataPluginStart.search", + "type": "Object", + "tags": [], + "label": "search", + "description": [], + "signature": [ + "ISearchStart", + "<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IEsSearchRequest", + "text": "IEsSearchRequest" + }, + ", ", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.IEsSearchResponse", + "text": "IEsSearchResponse" + }, + ">" + ], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataPluginStart.fieldFormats", + "type": "Object", + "tags": [ + "deprecated" + ], + "label": "fieldFormats", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "server", + "docId": "kibFieldFormatsPluginApi", + "section": "def-server.FieldFormatsStart", + "text": "FieldFormatsStart" + } + ], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": true, + "references": [ + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/plugin.ts" + } + ] + }, + { + "parentPluginId": "data", + "id": "def-server.DataPluginStart.indexPatterns", + "type": "Object", + "tags": [], + "label": "indexPatterns", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "server", + "docId": "kibDataViewsPluginApi", + "section": "def-server.DataViewsServerPluginStart", + "text": "DataViewsServerPluginStart" + } + ], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-server.DataPluginStart.datatableUtilities", + "type": "Object", + "tags": [], + "label": "datatableUtilities", + "description": [ + "\nDatatable type utility functions." + ], + "signature": [ + "DatatableUtilitiesService" + ], + "path": "src/plugins/data/server/plugin.ts", + "deprecated": false + } + ], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "common": { + "classes": [ + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService", + "type": "Class", + "tags": [], + "label": "DatatableUtilitiesService", + "description": [], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "children": [ { "parentPluginId": "data", - "id": "def-common.SavedObject.version", - "type": "string", + "id": "def-common.DatatableUtilitiesService.Unnamed", + "type": "Function", "tags": [], - "label": "version", - "description": [ - "An opaque version number which changes on each successful write operation. Can be used for implementing optimistic concurrency control." - ], + "label": "Constructor", + "description": [], "signature": [ - "string | undefined" - ], - "path": "src/core/types/saved_objects.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.SavedObject.updated_at", - "type": "string", - "tags": [], - "label": "updated_at", - "description": [ - "Timestamp of the last time this document had been updated." + "any" ], - "signature": [ - "string | undefined" + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "aggs", + "description": [], + "signature": [ + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.AggsCommonStart", + "text": "AggsCommonStart" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "dataViews", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewsContract", + "text": "DataViewsContract" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.Unnamed.$3", + "type": "Object", + "tags": [], + "label": "fieldFormats", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormatsStartCommon", + "text": "FieldFormatsStartCommon" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "src/core/types/saved_objects.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.SavedObject.error", - "type": "Object", + "id": "def-common.DatatableUtilitiesService.clearField", + "type": "Function", "tags": [], - "label": "error", + "label": "clearField", "description": [], "signature": [ - "SavedObjectError", - " | undefined" - ], - "path": "src/core/types/saved_objects.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.SavedObject.attributes", - "type": "Uncategorized", - "tags": [], - "label": "attributes", - "description": [ - "{@inheritdoc SavedObjectAttributes}" - ], - "signature": [ - "T" - ], - "path": "src/core/types/saved_objects.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.SavedObject.references", - "type": "Array", - "tags": [], - "label": "references", - "description": [ - "{@inheritdoc SavedObjectReference}" + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ") => void" ], - "signature": [ - "SavedObjectReference", - "[]" + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.clearField.$1", + "type": "Object", + "tags": [], + "label": "column", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "src/core/types/saved_objects.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.SavedObject.migrationVersion", - "type": "Object", + "id": "def-common.DatatableUtilitiesService.clearFieldFormat", + "type": "Function", "tags": [], - "label": "migrationVersion", - "description": [ - "{@inheritdoc SavedObjectsMigrationVersion}" - ], + "label": "clearFieldFormat", + "description": [], "signature": [ - "SavedObjectsMigrationVersion", - " | undefined" - ], - "path": "src/core/types/saved_objects.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.SavedObject.coreMigrationVersion", - "type": "string", - "tags": [], - "label": "coreMigrationVersion", - "description": [ - "A semver value that is used when upgrading objects between Kibana versions." + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ") => void" ], - "signature": [ - "string | undefined" + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.clearFieldFormat.$1", + "type": "Object", + "tags": [], + "label": "column", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "src/core/types/saved_objects.ts", - "deprecated": false + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.SavedObject.namespaces", - "type": "Array", + "id": "def-common.DatatableUtilitiesService.getAggConfig", + "type": "Function", "tags": [], - "label": "namespaces", - "description": [ - "\nSpace(s) that this saved object exists in. This attribute is not used for \"global\" saved object types which are registered with\n`namespaceType: 'agnostic'`." - ], + "label": "getAggConfig", + "description": [], "signature": [ - "string[] | undefined" - ], - "path": "src/core/types/saved_objects.ts", - "deprecated": false - }, - { - "parentPluginId": "data", - "id": "def-common.SavedObject.originId", - "type": "string", - "tags": [], - "label": "originId", - "description": [ - "\nThe ID of the saved object this originated from. This is set if this object's `id` was regenerated; that can happen during migration\nfrom a legacy single-namespace type, or during import. It is only set during migration or create operations. This is used during import\nto ensure that ID regeneration is deterministic, so saved objects will be overwritten if they are imported multiple times into a given\nspace." + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ") => Promise<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.AggConfig", + "text": "AggConfig" + }, + " | undefined>" ], - "signature": [ - "string | undefined" + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.getAggConfig.$1", + "type": "Object", + "tags": [], + "label": "column", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + } ], - "path": "src/core/types/saved_objects.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.UiSettingsCommon", - "type": "Interface", - "tags": [], - "label": "UiSettingsCommon", - "description": [ - "\nInterface for UiSettings common interface {@link UiSettingsClient}" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "children": [ + "returnComment": [] + }, { "parentPluginId": "data", - "id": "def-common.UiSettingsCommon.get", + "id": "def-common.DatatableUtilitiesService.getDateHistogramMeta", "type": "Function", "tags": [], - "label": "get", + "label": "getDateHistogramMeta", "description": [ - "\nGet a setting value" + "\nHelper function returning the used interval, used time zone and applied time filters for data table column created by the date_histogramm agg type.\n\"auto\" will get expanded to the actually used interval.\nIf the column is not a column created by a date_histogram aggregation of the esaggs data source,\nthis function will return undefined." ], "signature": [ - "(key: string) => Promise" + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ", defaults?: Partial<{ timeZone: string; }>) => DateHistogramMeta | undefined" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.UiSettingsCommon.get.$1", - "type": "string", + "id": "def-common.DatatableUtilitiesService.getDateHistogramMeta.$1", + "type": "Object", "tags": [], - "label": "key", - "description": [ - "name of value" + "label": "column", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.getDateHistogramMeta.$2", + "type": "Object", + "tags": [], + "label": "defaults", + "description": [], "signature": [ - "string" + "Partial<{ timeZone: string; }>" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", "deprecated": false, "isRequired": true } @@ -29522,65 +17396,154 @@ }, { "parentPluginId": "data", - "id": "def-common.UiSettingsCommon.getAll", + "id": "def-common.DatatableUtilitiesService.getDataView", "type": "Function", "tags": [], - "label": "getAll", - "description": [ - "\nGet all settings values" - ], + "label": "getDataView", + "description": [], "signature": [ - "() => Promise>" + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ") => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " | undefined>" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", "deprecated": false, - "children": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.getDataView.$1", + "type": "Object", + "tags": [], + "label": "column", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + } + ], "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.UiSettingsCommon.set", + "id": "def-common.DatatableUtilitiesService.getField", "type": "Function", "tags": [], - "label": "set", - "description": [ - "\nSet a setting value" - ], + "label": "getField", + "description": [], "signature": [ - "(key: string, value: T) => Promise" + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ") => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + " | undefined>" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.UiSettingsCommon.set.$1", - "type": "string", + "id": "def-common.DatatableUtilitiesService.getField.$1", + "type": "Object", "tags": [], - "label": "key", - "description": [ - "name of value" - ], + "label": "column", + "description": [], "signature": [ - "string" + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", "deprecated": false, "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.getFieldFormat", + "type": "Function", + "tags": [], + "label": "getFieldFormat", + "description": [], + "signature": [ + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ") => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" }, + " | undefined" + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "children": [ { "parentPluginId": "data", - "id": "def-common.UiSettingsCommon.set.$2", - "type": "Uncategorized", + "id": "def-common.DatatableUtilitiesService.getFieldFormat.$1", + "type": "Object", "tags": [], - "label": "value", - "description": [ - "value to set" - ], + "label": "column", + "description": [], "signature": [ - "T" + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", "deprecated": false, "isRequired": true } @@ -29589,284 +17552,312 @@ }, { "parentPluginId": "data", - "id": "def-common.UiSettingsCommon.remove", + "id": "def-common.DatatableUtilitiesService.getInterval", "type": "Function", "tags": [], - "label": "remove", - "description": [ - "\nRemove a setting value" - ], + "label": "getInterval", + "description": [], "signature": [ - "(key: string) => Promise" + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ") => string | undefined" ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", "deprecated": false, "children": [ { "parentPluginId": "data", - "id": "def-common.UiSettingsCommon.remove.$1", - "type": "string", + "id": "def-common.DatatableUtilitiesService.getInterval.$1", + "type": "Object", "tags": [], - "label": "key", - "description": [ - "name of value" - ], + "label": "column", + "description": [], "signature": [ - "string" + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } ], - "path": "src/plugins/data_views/common/types.ts", + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", "deprecated": false, - "isRequired": true - } - ], - "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "enums": [ - { - "parentPluginId": "data", - "id": "def-common.DataViewType", - "type": "Enum", - "tags": [], - "label": "DataViewType", - "description": [ - "\nData View type. Default or rollup" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.ES_FIELD_TYPES", - "type": "Enum", - "tags": [], - "label": "ES_FIELD_TYPES", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FilterStateStore", - "type": "Enum", - "tags": [], - "label": "FilterStateStore", - "description": [ - "\r\n Filter,\r\nAn enum to denote whether a filter is specific to an application's context or whether it should be applied globally." - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.KBN_FIELD_TYPES", - "type": "Enum", - "tags": [], - "label": "KBN_FIELD_TYPES", - "description": [], - "path": "node_modules/@types/kbn__field-types/index.d.ts", - "deprecated": false, - "initialIsOpen": false - } - ], - "misc": [ - { - "parentPluginId": "data", - "id": "def-common.AggregationRestrictions", - "type": "Type", - "tags": [], - "label": "AggregationRestrictions", - "description": [], - "signature": [ - "{ [x: string]: { agg?: string | undefined; interval?: number | undefined; fixed_interval?: string | undefined; calendar_interval?: string | undefined; delay?: string | undefined; time_zone?: string | undefined; }; }" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.CSV_FORMULA_CHARS", - "type": "Array", - "tags": [], - "label": "CSV_FORMULA_CHARS", - "description": [], - "signature": [ - "string[]" - ], - "path": "src/plugins/data/common/exports/constants.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.CSV_MIME_TYPE", - "type": "string", - "tags": [], - "label": "CSV_MIME_TYPE", - "description": [], - "signature": [ - "\"text/plain;charset=utf-8\"" - ], - "path": "src/plugins/data/common/exports/export_csv.tsx", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.DATA_VIEW_SAVED_OBJECT_TYPE", - "type": "string", - "tags": [], - "label": "DATA_VIEW_SAVED_OBJECT_TYPE", - "description": [ - "\nData view saved object type." - ], - "signature": [ - "\"index-pattern\"" - ], - "path": "src/plugins/data_views/common/constants.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewFieldMap", - "type": "Type", - "tags": [], - "label": "DataViewFieldMap", - "description": [], - "signature": [ - "{ [x: string]: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "; }" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewsContract", - "type": "Type", - "tags": [], - "label": "DataViewsContract", - "description": [ - "\nData views service interface" - ], - "signature": [ - "{ create: (spec: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - ", skipFetchFields?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ">; delete: (indexPatternId: string) => Promise<{}>; find: (search: string, size?: number) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - "[]>; get: (id: string) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ">; getCanSave: () => Promise; getIds: (refresh?: boolean) => Promise; getTitles: (refresh?: boolean) => Promise; getIdsWithTitle: (refresh?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewListItem", - "text": "DataViewListItem" - }, - "[]>; clearCache: (id?: string | undefined) => void; getCache: () => Promise<", - "SavedObject", - "<", - "DataViewSavedObjectAttrs", - ">[] | null | undefined>; getDefault: () => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | null>; getDefaultId: () => Promise; setDefault: (id: string | null, force?: boolean) => Promise; hasUserDataView: () => Promise; getFieldsForWildcard: (options: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - }, - ") => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" + "isRequired": true + } + ], + "returnComment": [] }, - "[]>; getFieldsForIndexPattern: (indexPattern: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.getNumberHistogramInterval", + "type": "Function", + "tags": [], + "label": "getNumberHistogramInterval", + "description": [ + "\nHelper function returning the used interval for data table column created by the histogramm agg type.\n\"auto\" will get expanded to the actually used interval.\nIf the column is not a column created by a histogram aggregation of the esaggs data source,\nthis function will return undefined." + ], + "signature": [ + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ") => number | undefined" + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.getNumberHistogramInterval.$1", + "type": "Object", + "tags": [], + "label": "column", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, - " | ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.getTotalCount", + "type": "Function", + "tags": [], + "label": "getTotalCount", + "description": [], + "signature": [ + "(table: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + }, + ") => number | undefined" + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.getTotalCount.$1", + "type": "Object", + "tags": [], + "label": "table", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, - ", options?: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.hasPrecisionError", + "type": "Function", + "tags": [], + "label": "hasPrecisionError", + "description": [], + "signature": [ + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ") => ", + "Serializable" + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.hasPrecisionError.$1", + "type": "Object", + "tags": [], + "label": "column", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, - " | undefined) => Promise<", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.isFilterable", + "type": "Function", + "tags": [], + "label": "isFilterable", + "description": [], + "signature": [ + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ") => boolean" + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.isFilterable.$1", + "type": "Object", + "tags": [], + "label": "column", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, - "[]>; refreshFields: (indexPattern: ", + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.setFieldFormat", + "type": "Function", + "tags": [], + "label": "setFieldFormat", + "description": [], + "signature": [ + "(column: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + ", fieldFormat: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + ") => void" + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.setFieldFormat.$1", + "type": "Object", + "tags": [], + "label": "column", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DatatableUtilitiesService.setFieldFormat.$2", + "type": "Object", + "tags": [], + "label": "fieldFormat", + "description": [], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/data/common/datatable_utilities/datatable_utilities_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.DataView", + "type": "Class", + "tags": [], + "label": "DataView", + "description": [ + "\nData view class. Central kibana abstraction around multiple indices." + ], + "signature": [ { "pluginId": "dataViews", "scope": "common", @@ -29874,1518 +17865,5743 @@ "section": "def-common.DataView", "text": "DataView" }, - ") => Promise; fieldArrayToMap: (fields: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[], fieldAttrs?: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrs", - "text": "FieldAttrs" - }, - " | undefined) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewFieldMap", - "text": "DataViewFieldMap" - }, - "; savedObjectToSpec: (savedObject: ", - "SavedObject", - "<", + " implements ", + "DataViewBase" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewAttributes", - "text": "DataViewAttributes" + "parentPluginId": "data", + "id": "def-common.DataView.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nSaved object id" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, - ">) => ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" + "parentPluginId": "data", + "id": "def-common.DataView.title", + "type": "string", + "tags": [], + "label": "title", + "description": [ + "\nTitle of data view" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, - "; createAndSave: (spec: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" + "parentPluginId": "data", + "id": "def-common.DataView.fieldFormatMap", + "type": "Object", + "tags": [], + "label": "fieldFormatMap", + "description": [ + "\nMap of field formats by field name" + ], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, - ", override?: boolean, skipFetchFields?: boolean) => Promise<", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "parentPluginId": "data", + "id": "def-common.DataView.typeMeta", + "type": "Object", + "tags": [], + "label": "typeMeta", + "description": [ + "\nOnly used by rollup indices, used by rollup specific endpoint to load field list." + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.TypeMeta", + "text": "TypeMeta" + }, + " | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, - ">; createSavedObject: (dataView: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "parentPluginId": "data", + "id": "def-common.DataView.fields", + "type": "CompoundType", + "tags": [], + "label": "fields", + "description": [ + "\nField list, in extended array format" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.IIndexPatternFieldList", + "text": "IIndexPatternFieldList" + }, + " & { toSpec: () => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewFieldMap", + "text": "DataViewFieldMap" + }, + "; }" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, - ", override?: boolean) => Promise<", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "parentPluginId": "data", + "id": "def-common.DataView.timeFieldName", + "type": "string", + "tags": [], + "label": "timeFieldName", + "description": [ + "\nTimestamp field name" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, - ">; updateSavedObject: (indexPattern: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "parentPluginId": "data", + "id": "def-common.DataView.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "\nType is used to identify rollup index patterns." + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, - ", saveAttempts?: number, ignoreErrors?: boolean) => Promise, deep?: boolean | undefined) => Record" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": true, + "references": [ + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + } + ], + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.flattenHit.$1", + "type": "Object", + "tags": [], + "label": "hit", + "description": [], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + }, + { + "parentPluginId": "data", + "id": "def-common.DataView.flattenHit.$2", + "type": "CompoundType", + "tags": [], + "label": "deep", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false + } + ] }, - ">; getDefaultDataView: () => Promise<", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" + "parentPluginId": "data", + "id": "def-common.DataView.metaFields", + "type": "Array", + "tags": [], + "label": "metaFields", + "description": [ + "\nList of meta fields by name" + ], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, - " | null>; }" - ], - "path": "src/plugins/data_views/common/data_views/data_views.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.DataViewSpec", - "type": "Type", - "tags": [], - "label": "DataViewSpec", - "description": [ - "\nStatic data view format\nSerialized data object, representing data view attributes and state" - ], - "signature": [ - "{ id?: string | undefined; version?: string | undefined; title?: string | undefined; timeFieldName?: string | undefined; sourceFilters?: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.SourceFilter", - "text": "SourceFilter" + "parentPluginId": "data", + "id": "def-common.DataView.version", + "type": "string", + "tags": [], + "label": "version", + "description": [ + "\nSavedObject version" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, - "[] | undefined; fields?: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewFieldMap", - "text": "DataViewFieldMap" + "parentPluginId": "data", + "id": "def-common.DataView.sourceFilters", + "type": "Array", + "tags": [], + "label": "sourceFilters", + "description": [ + "\nArray of filters - hides fields in discover" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.SourceFilter", + "text": "SourceFilter" + }, + "[] | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, - " | undefined; typeMeta?: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.TypeMeta", - "text": "TypeMeta" + "parentPluginId": "data", + "id": "def-common.DataView.namespaces", + "type": "Array", + "tags": [], + "label": "namespaces", + "description": [ + "\nArray of namespace ids" + ], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false }, - " | undefined; type?: string | undefined; fieldFormats?: Record> | undefined; runtimeFieldMap?: Record | undefined; fieldAttrs?: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrs", - "text": "FieldAttrs" + "parentPluginId": "data", + "id": "def-common.DataView.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [ + "\nconstructor" + ], + "signature": [ + "any" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "config", + "description": [ + "- config data and dependencies" + ], + "signature": [ + "DataViewDeps" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, - " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.DEFAULT_QUERY_LANGUAGE", - "type": "string", - "tags": [], - "label": "DEFAULT_QUERY_LANGUAGE", - "description": [], - "signature": [ - "\"kuery\"" - ], - "path": "src/plugins/data/common/constants.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.EsQueryConfig", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "EsQueryConfig", - "description": [], - "signature": [ - "KueryQueryOptions", - " & { allowLeadingWildcards: boolean; queryStringOptions: ", - "SerializableRecord", - "; ignoreFilterIfFieldNotInIndex: boolean; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.ExistsFilter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "ExistsFilter", - "description": [], - "signature": [ - "Filter", - " & { meta: ", - "FilterMeta", - "; query: { exists?: { field: string; } | undefined; }; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldAttrs", - "type": "Type", - "tags": [], - "label": "FieldAttrs", - "description": [ - "\nSet of field attributes" - ], - "signature": [ - "{ [key: string]: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrSet", - "text": "FieldAttrSet" + "parentPluginId": "data", + "id": "def-common.DataView.getName", + "type": "Function", + "tags": [], + "label": "getName", + "description": [ + "\nGet name of Data View" + ], + "signature": [ + "() => string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, - "; }" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldAttrSet", - "type": "Type", - "tags": [], - "label": "FieldAttrSet", - "description": [ - "\nField attributes that are stored on the data view" - ], - "signature": [ - "{ customLabel?: string | undefined; count?: number | undefined; }" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldSpec", - "type": "Type", - "tags": [], - "label": "FieldSpec", - "description": [ - "\nSerialized version of DataViewField" - ], - "signature": [ - "DataViewFieldBase", - " & { count?: number | undefined; conflictDescriptions?: Record | undefined; format?: ", { - "pluginId": "fieldFormats", - "scope": "common", - "docId": "kibFieldFormatsPluginApi", - "section": "def-common.SerializedFieldFormat", - "text": "SerializedFieldFormat" + "parentPluginId": "data", + "id": "def-common.DataView.getOriginalSavedObjectBody", + "type": "Function", + "tags": [], + "label": "getOriginalSavedObjectBody", + "description": [ + "\nGet last saved saved object fields" + ], + "signature": [ + "() => { fieldAttrs?: string | undefined; title?: string | undefined; timeFieldName?: string | undefined; fields?: string | undefined; sourceFilters?: string | undefined; fieldFormatMap?: string | undefined; typeMeta?: string | undefined; type?: string | undefined; }" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, - "<", - "SerializableRecord", - "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.RuntimeFieldSpec", - "text": "RuntimeFieldSpec" + "parentPluginId": "data", + "id": "def-common.DataView.resetOriginalSavedObjectBody", + "type": "Function", + "tags": [], + "label": "resetOriginalSavedObjectBody", + "description": [ + "\nReset last saved saved object fields. Used after saving." + ], + "signature": [ + "() => void" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, - " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; }" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FieldSpecConflictDescriptions", - "type": "Type", - "tags": [], - "label": "FieldSpecConflictDescriptions", - "description": [], - "signature": [ - "{ [x: string]: string[]; }" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.Filter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "Filter", - "description": [], - "signature": [ - "{ $state?: { store: ", - "FilterStateStore", - "; } | undefined; meta: ", - "FilterMeta", - "; query?: Record | undefined; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [ { - "plugin": "discover", - "path": "src/plugins/discover/public/application/view_alert/view_alert_route.tsx" + "parentPluginId": "data", + "id": "def-common.DataView.getFieldAttrs", + "type": "Function", + "tags": [], + "label": "getFieldAttrs", + "description": [ + "\nReturns field attributes map" + ], + "signature": [ + "() => { [x: string]: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrSet", + "text": "FieldAttrSet" + }, + "; }" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "discover", - "path": "src/plugins/discover/public/application/view_alert/view_alert_route.tsx" + "parentPluginId": "data", + "id": "def-common.DataView.getComputedFields", + "type": "Function", + "tags": [], + "label": "getComputedFields", + "description": [ + "\nReturns scripted fields" + ], + "signature": [ + "() => { storedFields: string[]; scriptFields: Record; docvalueFields: { field: string; format: string; }[]; runtimeFields: ", + "MappingRuntimeFields", + "; }" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" + "parentPluginId": "data", + "id": "def-common.DataView.toSpec", + "type": "Function", + "tags": [], + "label": "toSpec", + "description": [ + "\nCreates static representation of the data view." + ], + "signature": [ + "() => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + } + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" + "parentPluginId": "data", + "id": "def-common.DataView.getSourceFiltering", + "type": "Function", + "tags": [], + "label": "getSourceFiltering", + "description": [ + "\nGet the source filtering configuration for that index." + ], + "signature": [ + "() => { excludes: string[]; }" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" + "parentPluginId": "data", + "id": "def-common.DataView.removeScriptedField", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "removeScriptedField", + "description": [ + "\nRemoves scripted field from field list." + ], + "signature": [ + "(fieldName: string) => void" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": true, + "references": [ + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/field_editor/field_editor.tsx" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + } + ], + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.removeScriptedField.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "name of scripted field to remove" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" + "parentPluginId": "data", + "id": "def-common.DataView.getNonScriptedFields", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "getNonScriptedFields", + "description": [ + "\n" + ], + "signature": [ + "() => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + "[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": true, + "references": [ + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/services/persistence/deserialize.ts" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/state_management/datasource.test.ts" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/services/persistence/deserialize.test.ts" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts" + } + ], + "children": [], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" + "parentPluginId": "data", + "id": "def-common.DataView.getScriptedFields", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "getScriptedFields", + "description": [ + "\n" + ], + "signature": [ + "() => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + "[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": true, + "references": [ + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_views.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/server/register_index_pattern_usage_collection.ts" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/common/data_views/data_view.test.ts" + } + ], + "children": [], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts" + "parentPluginId": "data", + "id": "def-common.DataView.isTimeBased", + "type": "Function", + "tags": [], + "label": "isTimeBased", + "description": [ + "\nDoes the data view have a timestamp field?" + ], + "signature": [ + "() => this is ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.TimeBasedDataView", + "text": "TimeBasedDataView" + } + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts" + "parentPluginId": "data", + "id": "def-common.DataView.isTimeNanosBased", + "type": "Function", + "tags": [], + "label": "isTimeNanosBased", + "description": [ + "\nDoes the data view have a timestamp field and is it a date nanos field?" + ], + "signature": [ + "() => this is ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.TimeBasedDataView", + "text": "TimeBasedDataView" + } + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" + "parentPluginId": "data", + "id": "def-common.DataView.getTimeField", + "type": "Function", + "tags": [], + "label": "getTimeField", + "description": [ + "\nGet timestamp field as DataViewField or return undefined" + ], + "signature": [ + "() => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + " | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" + "parentPluginId": "data", + "id": "def-common.DataView.getFieldByName", + "type": "Function", + "tags": [], + "label": "getFieldByName", + "description": [ + "\nGet field by name." + ], + "signature": [ + "(name: string) => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + " | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.getFieldByName.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "field name" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" + "parentPluginId": "data", + "id": "def-common.DataView.getAggregationRestrictions", + "type": "Function", + "tags": [], + "label": "getAggregationRestrictions", + "description": [ + "\nGet aggregation restrictions. Rollup fields can only perform a subset of aggregations." + ], + "signature": [ + "() => Record | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts" + "parentPluginId": "data", + "id": "def-common.DataView.getAsSavedObjectBody", + "type": "Function", + "tags": [], + "label": "getAsSavedObjectBody", + "description": [ + "\nReturns index pattern as saved object body for saving" + ], + "signature": [ + "() => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewAttributes", + "text": "DataViewAttributes" + } + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts" + "parentPluginId": "data", + "id": "def-common.DataView.getFormatterForField", + "type": "Function", + "tags": [], + "label": "getFormatterForField", + "description": [ + "\nProvide a field, get its formatter" + ], + "signature": [ + "(field: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + " | ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + ") => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + } + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.getFormatterForField.$1", + "type": "CompoundType", + "tags": [], + "label": "field", + "description": [ + "field to get formatter for" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + " | ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + } + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts" + "parentPluginId": "data", + "id": "def-common.DataView.addRuntimeField", + "type": "Function", + "tags": [], + "label": "addRuntimeField", + "description": [ + "\nAdd a runtime field - Appended to existing mapped field or a new field is\ncreated as appropriate." + ], + "signature": [ + "(name: string, runtimeField: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.RuntimeField", + "text": "RuntimeField" + }, + ") => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + }, + "[]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.addRuntimeField.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "Field name" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataView.addRuntimeField.$2", + "type": "Object", + "tags": [], + "label": "runtimeField", + "description": [ + "Runtime field definition" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.RuntimeField", + "text": "RuntimeField" + } + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" + "parentPluginId": "data", + "id": "def-common.DataView.hasRuntimeField", + "type": "Function", + "tags": [], + "label": "hasRuntimeField", + "description": [ + "\nChecks if runtime field exists" + ], + "signature": [ + "(name: string) => boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.hasRuntimeField.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "field name" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" + "parentPluginId": "data", + "id": "def-common.DataView.getRuntimeField", + "type": "Function", + "tags": [], + "label": "getRuntimeField", + "description": [ + "\nReturns runtime field if exists" + ], + "signature": [ + "(name: string) => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.RuntimeField", + "text": "RuntimeField" + }, + " | null" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.getRuntimeField.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "Runtime field name" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" + "parentPluginId": "data", + "id": "def-common.DataView.getAllRuntimeFields", + "type": "Function", + "tags": [], + "label": "getAllRuntimeFields", + "description": [ + "\nGet all runtime field definitions." + ], + "signature": [ + "() => Record" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "map of runtime field definitions by field name" + ] }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" + "parentPluginId": "data", + "id": "def-common.DataView.getFieldsByRuntimeFieldName", + "type": "Function", + "tags": [], + "label": "getFieldsByRuntimeFieldName", + "description": [ + "\nReturns data view fields backed by runtime fields." + ], + "signature": [ + "(name: string) => Record | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.getFieldsByRuntimeFieldName.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "runtime field name" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "map of DataViewFields (that are runtime fields) by field name" + ] }, { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" + "parentPluginId": "data", + "id": "def-common.DataView.replaceAllRuntimeFields", + "type": "Function", + "tags": [], + "label": "replaceAllRuntimeFields", + "description": [ + "\nReplaces all existing runtime fields with new fields." + ], + "signature": [ + "(newFields: Record) => void" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.replaceAllRuntimeFields.$1", + "type": "Object", + "tags": [], + "label": "newFields", + "description": [ + "Map of runtime field definitions by field name" + ], + "signature": [ + "Record" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" + "parentPluginId": "data", + "id": "def-common.DataView.removeRuntimeField", + "type": "Function", + "tags": [], + "label": "removeRuntimeField", + "description": [ + "\nRemove a runtime field - removed from mapped field or removed unmapped\nfield as appropriate. Doesn't clear associated field attributes." + ], + "signature": [ + "(name: string) => void" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.removeRuntimeField.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "- Field name to remove" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" + "parentPluginId": "data", + "id": "def-common.DataView.getRuntimeMappings", + "type": "Function", + "tags": [], + "label": "getRuntimeMappings", + "description": [ + "\nReturn the \"runtime_mappings\" section of the ES search query." + ], + "signature": [ + "() => ", + "MappingRuntimeFields" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" + "parentPluginId": "data", + "id": "def-common.DataView.getFormatterForFieldNoDefault", + "type": "Function", + "tags": [], + "label": "getFormatterForFieldNoDefault", + "description": [ + "\nGet formatter for a given field name. Return undefined if none exists." + ], + "signature": [ + "(fieldname: string) => ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.FieldFormat", + "text": "FieldFormat" + }, + " | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.getFormatterForFieldNoDefault.$1", + "type": "string", + "tags": [], + "label": "fieldname", + "description": [ + "name of field to get formatter for" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" + "parentPluginId": "data", + "id": "def-common.DataView.setFieldAttrs", + "type": "Function", + "tags": [], + "label": "setFieldAttrs", + "description": [ + "\nSet field attribute" + ], + "signature": [ + "(fieldName: string, attrName: K, value: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrSet", + "text": "FieldAttrSet" + }, + "[K]) => void" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.setFieldAttrs.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "name of field to set attribute on" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataView.setFieldAttrs.$2", + "type": "Uncategorized", + "tags": [], + "label": "attrName", + "description": [ + "name of attribute to set" + ], + "signature": [ + "K" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataView.setFieldAttrs.$3", + "type": "Uncategorized", + "tags": [], + "label": "value", + "description": [ + "value of attribute" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrSet", + "text": "FieldAttrSet" + }, + "[K]" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, - { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.FilterMeta", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "FilterMeta", - "description": [], - "signature": [ - "{ alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.GetConfigFn", - "type": "Type", - "tags": [], - "label": "GetConfigFn", - "description": [ - "\nIf a service is being shared on both the client and the server, and\nthe client code requires synchronous access to uiSettings, both client\nand server should wrap the core uiSettings services in a function\nmatching this signature.\n\nThis matches the signature of the public `core.uiSettings.get`, and\nshould only be used in scenarios where async access to uiSettings is\nnot possible." - ], - "signature": [ - "(key: string, defaultOverride?: T | undefined) => T" - ], - "path": "src/plugins/data/common/types.ts", - "deprecated": false, - "returnComment": [], - "children": [ { "parentPluginId": "data", - "id": "def-common.GetConfigFn.$1", - "type": "string", + "id": "def-common.DataView.setFieldCustomLabel", + "type": "Function", "tags": [], - "label": "key", - "description": [], - "path": "src/plugins/data/common/types.ts", - "deprecated": false + "label": "setFieldCustomLabel", + "description": [ + "\nSet field custom label" + ], + "signature": [ + "(fieldName: string, customLabel: string | null | undefined) => void" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.setFieldCustomLabel.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "name of field to set custom label on" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataView.setFieldCustomLabel.$2", + "type": "CompoundType", + "tags": [], + "label": "customLabel", + "description": [ + "custom label value. If undefined, custom label is removed" + ], + "signature": [ + "string | null | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] }, { "parentPluginId": "data", - "id": "def-common.GetConfigFn.$2", - "type": "Uncategorized", + "id": "def-common.DataView.setFieldCount", + "type": "Function", "tags": [], - "label": "defaultOverride", - "description": [], + "label": "setFieldCount", + "description": [ + "\nSet field count" + ], "signature": [ - "T | undefined" + "(fieldName: string, count: number | null | undefined) => void" ], - "path": "src/plugins/data/common/types.ts", - "deprecated": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.IndexPatternLoadExpressionFunctionDefinition", - "type": "Type", - "tags": [], - "label": "IndexPatternLoadExpressionFunctionDefinition", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExpressionFunctionDefinition", - "text": "ExpressionFunctionDefinition" - }, - "<\"indexPatternLoad\", null, Arguments, Output, ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.ExecutionContext", - "text": "ExecutionContext" - }, - "<", - { - "pluginId": "inspector", - "scope": "common", - "docId": "kibInspectorPluginApi", - "section": "def-common.Adapters", - "text": "Adapters" - }, - ", ", - "SerializableRecord", - ">>" - ], - "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.KIBANA_USER_QUERY_LANGUAGE_KEY", - "type": "string", - "tags": [], - "label": "KIBANA_USER_QUERY_LANGUAGE_KEY", - "description": [], - "signature": [ - "\"kibana.userQueryLanguage\"" - ], - "path": "src/plugins/data/common/constants.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.KueryNode", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "KueryNode", - "description": [], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.MatchAllFilter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "MatchAllFilter", - "description": [], - "signature": [ - "Filter", - " & { meta: MatchAllFilterMeta; query: { match_all: ", - "QueryDslMatchAllQuery", - "; }; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.META_FIELDS", - "type": "string", - "tags": [], - "label": "META_FIELDS", - "description": [ - "\nUiSettings key for metaFields list." - ], - "signature": [ - "\"metaFields\"" - ], - "path": "src/plugins/data_views/common/constants.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.PhraseFilter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "PhraseFilter", - "description": [], - "signature": [ - "Filter", - " & { meta: PhraseFilterMeta; query: { match_phrase?: Partial> | undefined; match?: Partial> | undefined; }; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.Query", - "type": "Type", - "tags": [], - "label": "Query", - "description": [], - "signature": [ - "{ query: string | { [key: string]: any; }; language: string; }" - ], - "path": "node_modules/@types/kbn__es-query/index.d.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.RangeFilter", - "type": "Type", - "tags": [ - "deprecated" - ], - "label": "RangeFilter", - "description": [], - "signature": [ - "Filter", - " & { meta: ", - "RangeFilterMeta", - "; query: { range: { [key: string]: ", - "RangeFilterParams", - "; }; }; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.RangeFilterParams", - "type": "Type", - "tags": [ - "deprecated" + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.setFieldCount.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "name of field to set count on" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataView.setFieldCount.$2", + "type": "CompoundType", + "tags": [], + "label": "count", + "description": [ + "count value. If undefined, count is removed" + ], + "signature": [ + "number | null | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-common.DataView.setFieldFormat", + "type": "Function", + "tags": [], + "label": "setFieldFormat", + "description": [ + "\nSet field formatter" + ], + "signature": [ + "(fieldName: string, format: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "<", + "SerializableRecord", + ">) => void" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.setFieldFormat.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "name of field to set format on" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataView.setFieldFormat.$2", + "type": "Object", + "tags": [], + "label": "format", + "description": [ + "field format in serialized form" + ], + "signature": [ + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "<", + "SerializableRecord", + ">" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "data", + "id": "def-common.DataView.deleteFieldFormat", + "type": "Function", + "tags": [], + "label": "deleteFieldFormat", + "description": [ + "\nRemove field format from the field format map." + ], + "signature": [ + "(fieldName: string) => void" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.deleteFieldFormat.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [ + "field name associated with the format for removal" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } ], - "label": "RangeFilterParams", - "description": [], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], "initialIsOpen": false }, { "parentPluginId": "data", - "id": "def-common.SourceFilter", - "type": "Type", + "id": "def-common.DataViewField", + "type": "Class", "tags": [], - "label": "SourceFilter", - "description": [], - "signature": [ - "{ value: string; }" - ], - "path": "src/plugins/data_views/common/types.ts", - "deprecated": false, - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.TimeRange", - "type": "Type", - "tags": [ - "deprecated", - "deprecated" - ], - "label": "TimeRange", + "label": "DataViewField", "description": [ - "\n" + "\nData view field class" ], "signature": [ - "{ from: string; to: string; mode?: \"absolute\" | \"relative\" | undefined; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [ - { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/locator.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/locator.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/types.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/types.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/search_embeddable_factory.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/embeddable/search_embeddable_factory.ts" - }, { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/layout/types.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/layout/types.ts" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/top_nav/discover_topnav.tsx" - }, - { - "plugin": "discover", - "path": "src/plugins/discover/public/application/main/components/top_nav/discover_topnav.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/visualize_app/types.ts" - }, - { - "plugin": "visualizations", - "path": "src/plugins/visualizations/public/visualize_app/types.ts" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" }, + " implements ", + "DataViewFieldBase" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "children": [ { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/filter_utils.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.spec", + "type": "CompoundType", + "tags": [], + "label": "spec", + "description": [], + "signature": [ + "DataViewFieldBase", + " & { count?: number | undefined; conflictDescriptions?: Record | undefined; format?: ", + { + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" + }, + "<", + "SerializableRecord", + "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.RuntimeFieldSpec", + "text": "RuntimeFieldSpec" + }, + " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; }" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.Unnamed", + "type": "Function", + "tags": [ + "constructor" + ], + "label": "Constructor", + "description": [ + "\nDataView constructor" + ], + "signature": [ + "any" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewField.Unnamed.$1", + "type": "CompoundType", + "tags": [], + "label": "spec", + "description": [ + "Configuration for the field" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + } + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/state/dashboard_state_slice.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.count", + "type": "number", + "tags": [], + "label": "count", + "description": [ + "\nCount is used for field popularity in discover." + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.count", + "type": "number", + "tags": [], + "label": "count", + "description": [ + "\nSet count, which is used for field popularity in discover." + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.runtimeField", + "type": "CompoundType", + "tags": [], + "label": "runtimeField", + "description": [ + "\nReturns runtime field definition or undefined if field is not runtime field." + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.RuntimeFieldSpec", + "text": "RuntimeFieldSpec" + }, + " | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/types.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.runtimeField", + "type": "CompoundType", + "tags": [], + "label": "runtimeField", + "description": [ + "\nSets runtime field definition or unsets if undefined is provided." + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.RuntimeFieldSpec", + "text": "RuntimeFieldSpec" + }, + " | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/types.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.script", + "type": "string", + "tags": [], + "label": "script", + "description": [ + "\nScript field code" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/types.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.script", + "type": "string", + "tags": [], + "label": "script", + "description": [ + "\nSets scripted field painless code" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.lang", + "type": "string", + "tags": [], + "label": "lang", + "description": [ + "\nScript field language" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.lang", + "type": "string", + "tags": [], + "label": "lang", + "description": [ + "\nSets scripted field langauge." + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/top_nav/show_share_modal.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.customLabel", + "type": "string", + "tags": [], + "label": "customLabel", + "description": [ + "\nReturns custom label if set, otherwise undefined." + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/application/top_nav/show_share_modal.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.customLabel", + "type": "string", + "tags": [], + "label": "customLabel", + "description": [ + "\nSets custom label for field, or unsets if passed undefined." + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "controls", - "path": "src/plugins/controls/public/services/kibana/options_list.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.conflictDescriptions", + "type": "Object", + "tags": [], + "label": "conflictDescriptions", + "description": [ + "\nDescription of field type conflicts across different indices in the same index pattern." + ], + "signature": [ + "Record | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "controls", - "path": "src/plugins/controls/public/services/kibana/options_list.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.conflictDescriptions", + "type": "Object", + "tags": [], + "label": "conflictDescriptions", + "description": [ + "\nSets conflict descriptions for field." + ], + "signature": [ + "Record | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/locator.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "\nGet field name" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/locator.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.displayName", + "type": "string", + "tags": [], + "label": "displayName", + "description": [ + "\nGets display name, calcualted based on name, custom label and shortDotsEnable." + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "\nGets field type" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.esTypes", + "type": "Array", + "tags": [], + "label": "esTypes", + "description": [ + "\nGets ES types as string array" + ], + "signature": [ + "string[] | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.scripted", + "type": "boolean", + "tags": [], + "label": "scripted", + "description": [ + "\nReturns true if scripted field" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.searchable", + "type": "boolean", + "tags": [], + "label": "searchable", + "description": [ + "\nReturns true if field is searchable" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.aggregatable", + "type": "boolean", + "tags": [], + "label": "aggregatable", + "description": [ + "\nReturns true if field is aggregatable" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.readFromDocValues", + "type": "boolean", + "tags": [], + "label": "readFromDocValues", + "description": [ + "\nReturns true if field is available via doc values" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.subType", + "type": "CompoundType", + "tags": [], + "label": "subType", + "description": [ + "\nReturns field subtype, multi, nested, or undefined if neither" + ], + "signature": [ + "IFieldSubType", + " | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.isMapped", + "type": "CompoundType", + "tags": [], + "label": "isMapped", + "description": [ + "\nIs the field part of the index mapping?" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.isRuntimeField", + "type": "boolean", + "tags": [], + "label": "isRuntimeField", + "description": [ + "\nReturns true if runtime field defined on data view" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.sortable", + "type": "boolean", + "tags": [], + "label": "sortable", + "description": [ + "\nReturns true if field is sortable" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.filterable", + "type": "boolean", + "tags": [], + "label": "filterable", + "description": [ + "\nReturns true if field is filterable" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.visualizable", + "type": "boolean", + "tags": [], + "label": "visualizable", + "description": [ + "\nReturns true if field is visualizable" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewField.isSubtypeNested", + "type": "Function", + "tags": [], + "label": "isSubtypeNested", + "description": [ + "\nReturns true if field is subtype nested" + ], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/reducers/map/types.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.isSubtypeMulti", + "type": "Function", + "tags": [], + "label": "isSubtypeMulti", + "description": [ + "\nReturns true if field is subtype multi" + ], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/reducers/map/types.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.getSubtypeNested", + "type": "Function", + "tags": [], + "label": "getSubtypeNested", + "description": [ + "\nReturns subtype nested data if exists" + ], + "signature": [ + "() => ", + "IFieldSubTypeNested", + " | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/selectors/map_selectors.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.getSubtypeMulti", + "type": "Function", + "tags": [], + "label": "getSubtypeMulti", + "description": [ + "\nReturns subtype multi data if exists" + ], + "signature": [ + "() => ", + "IFieldSubTypeMulti", + " | undefined" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/selectors/map_selectors.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.deleteCount", + "type": "Function", + "tags": [], + "label": "deleteCount", + "description": [ + "\nDeletes count value. Popularity as used by discover" + ], + "signature": [ + "() => void" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/actions/map_actions.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.toJSON", + "type": "Function", + "tags": [], + "label": "toJSON", + "description": [ + "\nJSON version of field" + ], + "signature": [ + "() => { count: number; script: string | undefined; lang: string | undefined; conflictDescriptions: Record | undefined; name: string; type: string; esTypes: string[] | undefined; scripted: boolean; searchable: boolean; aggregatable: boolean; readFromDocValues: boolean; subType: ", + "IFieldSubType", + " | undefined; customLabel: string | undefined; }" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/actions/map_actions.ts" + "parentPluginId": "data", + "id": "def-common.DataViewField.toSpec", + "type": "Function", + "tags": [], + "label": "toSpec", + "description": [ + "\nGet field in serialized form - fieldspec." + ], + "signature": [ + "(config?: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.ToSpecConfig", + "text": "ToSpecConfig" + }, + ") => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + } + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewField.toSpec.$1", + "type": "Object", + "tags": [], + "label": "config", + "description": [ + "provide a method to get a field formatter" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.ToSpecConfig", + "text": "ToSpecConfig" + } + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "field in serialized form - field spec" + ] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx" - }, + "parentPluginId": "data", + "id": "def-common.DataViewField.isRuntimeCompositeSubField", + "type": "Function", + "tags": [], + "label": "isRuntimeCompositeSubField", + "description": [ + "\nReturns true if composite runtime field" + ], + "signature": [ + "() => boolean" + ], + "path": "src/plugins/data_views/common/fields/data_view_field.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewSavedObjectConflictError", + "type": "Class", + "tags": [], + "label": "DataViewSavedObjectConflictError", + "description": [ + "\nError thrown when saved object has been changed when attempting to save." + ], + "signature": [ { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSavedObjectConflictError", + "text": "DataViewSavedObjectConflictError" }, + " extends Error" + ], + "path": "src/plugins/data_views/common/errors/data_view_saved_object_conflict.ts", + "deprecated": false, + "children": [ { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts" - }, + "parentPluginId": "data", + "id": "def-common.DataViewSavedObjectConflictError.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [ + "\nconstructor" + ], + "signature": [ + "any" + ], + "path": "src/plugins/data_views/common/errors/data_view_saved_object_conflict.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewSavedObjectConflictError.Unnamed.$1", + "type": "string", + "tags": [], + "label": "savedObjectId", + "description": [ + "saved object id with conflict" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/errors/data_view_saved_object_conflict.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService", + "type": "Class", + "tags": [], + "label": "DataViewsService", + "description": [ + "\nData views service, providing CRUD operations for data views." + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.getCanSave", + "type": "Function", + "tags": [], + "label": "getCanSave", + "description": [ + "\nCan the user save data views?" + ], + "signature": [ + "() => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "returnComment": [], + "children": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/url_state/global_sync.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [ + "\nDataViewsService constructor" + ], + "signature": [ + "any" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "deps", + "description": [ + "Service dependencies" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewsServiceDeps", + "text": "DataViewsServiceDeps" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/url_state/global_sync.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.getIds", + "type": "Function", + "tags": [], + "label": "getIds", + "description": [ + "\nGets list of index pattern ids." + ], + "signature": [ + "(refresh?: boolean) => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.getIds.$1", + "type": "boolean", + "tags": [], + "label": "refresh", + "description": [ + "Force refresh of index pattern list" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/index.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.getTitles", + "type": "Function", + "tags": [], + "label": "getTitles", + "description": [ + "\nGets list of index pattern titles." + ], + "signature": [ + "(refresh?: boolean) => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.getTitles.$1", + "type": "boolean", + "tags": [], + "label": "refresh", + "description": [ + "Force refresh of index pattern list" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/index.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.find", + "type": "Function", + "tags": [], + "label": "find", + "description": [ + "\nFind and load index patterns by title." + ], + "signature": [ + "(search: string, size?: number) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + "[]>" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.find.$1", + "type": "string", + "tags": [], + "label": "search", + "description": [ + "Search string" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.find.$2", + "type": "number", + "tags": [], + "label": "size", + "description": [ + "Number of data views to return" + ], + "signature": [ + "number" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "DataView[]" + ] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewsService.getIdsWithTitle", + "type": "Function", + "tags": [], + "label": "getIdsWithTitle", + "description": [ + "\nGets list of index pattern ids with titles." + ], + "signature": [ + "(refresh?: boolean) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewListItem", + "text": "DataViewListItem" + }, + "[]>" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.getIdsWithTitle.$1", + "type": "boolean", + "tags": [], + "label": "refresh", + "description": [ + "Force refresh of index pattern list" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewsService.clearCache", + "type": "Function", + "tags": [], + "label": "clearCache", + "description": [ + "\nClear index pattern list cache." + ], + "signature": [ + "(id?: string | undefined) => void" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.clearCache.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "optionally clear a single id" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.getCache", + "type": "Function", + "tags": [], + "label": "getCache", + "description": [ + "\nGet cache, contains data view saved objects." + ], + "signature": [ + "() => Promise<", + "SavedObject", + "<", + "DataViewSavedObjectAttrs", + ">[] | null | undefined>" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.getDefault", + "type": "Function", + "tags": [], + "label": "getDefault", + "description": [ + "\nGet default index pattern" + ], + "signature": [ + "() => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " | null>" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.getDefaultId", + "type": "Function", + "tags": [], + "label": "getDefaultId", + "description": [ + "\nGet default index pattern id" + ], + "signature": [ + "() => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/locators.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.setDefault", + "type": "Function", + "tags": [], + "label": "setDefault", + "description": [ + "\nOptionally set default index pattern, unless force = true" + ], + "signature": [ + "(id: string | null, force?: boolean) => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.setDefault.$1", + "type": "CompoundType", + "tags": [], + "label": "id", + "description": [ + "data view id" + ], + "signature": [ + "string | null" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.setDefault.$2", + "type": "boolean", + "tags": [], + "label": "force", + "description": [ + "set default data view even if there's an existing default" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewsService.hasUserDataView", + "type": "Function", + "tags": [], + "label": "hasUserDataView", + "description": [ + "\nChecks if current user has a user created index pattern ignoring fleet's server default index patterns." + ], + "signature": [ + "() => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewsService.getFieldsForWildcard", + "type": "Function", + "tags": [], + "label": "getFieldsForWildcard", + "description": [ + "\nGet field list by providing { pattern }." + ], + "signature": [ + "(options: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + }, + ") => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + "[]>" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.getFieldsForWildcard.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [ + "options for getting field list" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "FieldSpec[]" + ] }, { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewsService.getFieldsForIndexPattern", + "type": "Function", + "tags": [], + "label": "getFieldsForIndexPattern", + "description": [ + "\nGet field list by providing an index patttern (or spec)." + ], + "signature": [ + "(indexPattern: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " | ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + }, + ", options?: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + }, + " | undefined) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + "[]>" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.getFieldsForIndexPattern.$1", + "type": "CompoundType", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " | ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.getFieldsForIndexPattern.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [ + "options for getting field list" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + }, + " | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [ + "FieldSpec[]" + ] }, { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewsService.refreshFields", + "type": "Function", + "tags": [], + "label": "refreshFields", + "description": [ + "\nRefresh field list for a given index pattern." + ], + "signature": [ + "(indexPattern: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ") => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.refreshFields.$1", + "type": "Object", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.fieldArrayToMap", + "type": "Function", + "tags": [], + "label": "fieldArrayToMap", + "description": [ + "\nConverts field array to map." + ], + "signature": [ + "(fields: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + "[], fieldAttrs?: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrs", + "text": "FieldAttrs" + }, + " | undefined) => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewFieldMap", + "text": "DataViewFieldMap" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.fieldArrayToMap.$1", + "type": "Array", + "tags": [], + "label": "fields", + "description": [ + ": FieldSpec[]" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + "[]" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.fieldArrayToMap.$2", + "type": "Object", + "tags": [], + "label": "fieldAttrs", + "description": [ + ": FieldAttrs" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrs", + "text": "FieldAttrs" + }, + " | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [ + "Record" + ] }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.savedObjectToSpec", + "type": "Function", + "tags": [], + "label": "savedObjectToSpec", + "description": [ + "\nConverts data view saved object to data view spec." + ], + "signature": [ + "(savedObject: ", + "SavedObject", + "<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewAttributes", + "text": "DataViewAttributes" + }, + ">) => ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.savedObjectToSpec.$1", + "type": "Object", + "tags": [], + "label": "savedObject", + "description": [], + "signature": [ + "SavedObject", + "<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewAttributes", + "text": "DataViewAttributes" + }, + ">" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "DataViewSpec" + ] }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [ + "\nGet an index pattern by id, cache optimized." + ], + "signature": [ + "(id: string) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ">" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.get.$1", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [ + "\nCreate a new data view instance." + ], + "signature": [ + "(spec: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + }, + ", skipFetchFields?: boolean) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ">" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.create.$1", + "type": "Object", + "tags": [], + "label": "spec", + "description": [ + "data view spec" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.create.$2", + "type": "boolean", + "tags": [], + "label": "skipFetchFields", + "description": [ + "if true, will not fetch fields" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [ + "DataView" + ] }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.createAndSave", + "type": "Function", + "tags": [], + "label": "createAndSave", + "description": [ + "\nCreate a new data view and save it right away." + ], + "signature": [ + "(spec: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + }, + ", override?: boolean, skipFetchFields?: boolean) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ">" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.createAndSave.$1", + "type": "Object", + "tags": [], + "label": "spec", + "description": [ + "data view spec" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.createAndSave.$2", + "type": "boolean", + "tags": [], + "label": "override", + "description": [ + "Overwrite if existing index pattern exists." + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.createAndSave.$3", + "type": "boolean", + "tags": [], + "label": "skipFetchFields", + "description": [ + "Whether to skip field refresh step." + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts" + "parentPluginId": "data", + "id": "def-common.DataViewsService.createSavedObject", + "type": "Function", + "tags": [], + "label": "createSavedObject", + "description": [ + "\nSave a new data view." + ], + "signature": [ + "(dataView: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ", override?: boolean) => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ">" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.createSavedObject.$1", + "type": "Object", + "tags": [], + "label": "dataView", + "description": [ + "data view instance" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.createSavedObject.$2", + "type": "boolean", + "tags": [], + "label": "override", + "description": [ + "Overwrite if existing index pattern exists" + ], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewsService.updateSavedObject", + "type": "Function", + "tags": [], + "label": "updateSavedObject", + "description": [ + "\nSave existing dat aview. Will attempt to merge differences if there are conflicts." + ], + "signature": [ + "(indexPattern: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + ", saveAttempts?: number, ignoreErrors?: boolean) => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.updateSavedObject.$1", + "type": "Object", + "tags": [], + "label": "indexPattern", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + } + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.updateSavedObject.$2", + "type": "number", + "tags": [], + "label": "saveAttempts", + "description": [], + "signature": [ + "number" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.updateSavedObject.$3", + "type": "boolean", + "tags": [], + "label": "ignoreErrors", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewsService.delete", + "type": "Function", + "tags": [], + "label": "delete", + "description": [ + "\nDeletes an index pattern from .kibana index." + ], + "signature": [ + "(indexPatternId: string) => Promise<{}>" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.delete.$1", + "type": "string", + "tags": [], + "label": "indexPatternId", + "description": [ + ": Id of kibana Index Pattern to delete" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, + "parentPluginId": "data", + "id": "def-common.DataViewsService.getDefaultDataView", + "type": "Function", + "tags": [], + "label": "getDefaultDataView", + "description": [ + "\nReturns the default data view as an object.\nIf no default is found, or it is missing\nanother data view is selected as default and returned.\nIf no possible data view found to become a default returns null.\n" + ], + "signature": [ + "() => Promise<", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" + }, + " | null>" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [], + "returnComment": [ + "default data view" + ] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.DuplicateDataViewError", + "type": "Class", + "tags": [], + "label": "DuplicateDataViewError", + "description": [ + "\nError thrown when attempting to create duplicate index pattern based on title." + ], + "signature": [ { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DuplicateDataViewError", + "text": "DuplicateDataViewError" }, + " extends Error" + ], + "path": "src/plugins/data_views/common/errors/duplicate_index_pattern.ts", + "deprecated": false, + "children": [ { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" - }, + "parentPluginId": "data", + "id": "def-common.DuplicateDataViewError.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [ + "\nconstructor" + ], + "signature": [ + "any" + ], + "path": "src/plugins/data_views/common/errors/duplicate_index_pattern.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DuplicateDataViewError.Unnamed.$1", + "type": "string", + "tags": [], + "label": "message", + "description": [ + "- Error message" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/errors/duplicate_index_pattern.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.KbnFieldType", + "type": "Class", + "tags": [], + "label": "KbnFieldType", + "description": [], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false, + "children": [ { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" + "parentPluginId": "data", + "id": "def-common.KbnFieldType.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false }, { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx" + "parentPluginId": "data", + "id": "def-common.KbnFieldType.sortable", + "type": "boolean", + "tags": [], + "label": "sortable", + "description": [], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false }, { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" + "parentPluginId": "data", + "id": "def-common.KbnFieldType.filterable", + "type": "boolean", + "tags": [], + "label": "filterable", + "description": [], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false }, { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx" + "parentPluginId": "data", + "id": "def-common.KbnFieldType.esTypes", + "type": "Object", + "tags": [], + "label": "esTypes", + "description": [], + "signature": [ + "readonly ", + "ES_FIELD_TYPES", + "[]" + ], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false }, { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" - }, + "parentPluginId": "data", + "id": "def-common.KbnFieldType.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.KbnFieldType.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "Partial<", + "KbnFieldTypeOptions", + "> | undefined" + ], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "data", + "id": "def-common.cellHasFormulas", + "type": "Function", + "tags": [], + "label": "cellHasFormulas", + "description": [], + "signature": [ + "(val: string) => boolean" + ], + "path": "src/plugins/data/common/exports/formula_checks.ts", + "deprecated": false, + "children": [ { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" - }, + "parentPluginId": "data", + "id": "def-common.cellHasFormulas.$1", + "type": "string", + "tags": [], + "label": "val", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/data/common/exports/formula_checks.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.createEscapeValue", + "type": "Function", + "tags": [], + "label": "createEscapeValue", + "description": [ + "\nCreate a function that will escape CSV values like \"=\", \"@\" and \"+\" with a\n\"'\". This will also place CSV values in \"\" if contain non-alphanumeric chars.\n\nFor example:\n\nGiven: =1+1\nReturns: \"'=1+1\"\n\nSee OWASP: https://www.owasp.org/index.php/CSV_Injection." + ], + "signature": [ + "(quoteValues: boolean, escapeFormulas: boolean) => (val: RawValue) => string" + ], + "path": "src/plugins/data/common/exports/escape_value.ts", + "deprecated": false, + "children": [ { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" + "parentPluginId": "data", + "id": "def-common.createEscapeValue.$1", + "type": "boolean", + "tags": [], + "label": "quoteValues", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/data/common/exports/escape_value.ts", + "deprecated": false, + "isRequired": true }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" - }, + "parentPluginId": "data", + "id": "def-common.createEscapeValue.$2", + "type": "boolean", + "tags": [], + "label": "escapeFormulas", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/data/common/exports/escape_value.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.datatableToCSV", + "type": "Function", + "tags": [], + "label": "datatableToCSV", + "description": [], + "signature": [ + "({ columns, rows }: ", { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" }, + ", { csvSeparator, quoteValues, formatFactory, raw, escapeFormulaValues }: CSVOptions) => string" + ], + "path": "src/plugins/data/common/exports/export_csv.tsx", + "deprecated": false, + "children": [ { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/types/embeddables.ts" + "parentPluginId": "data", + "id": "def-common.datatableToCSV.$1", + "type": "Object", + "tags": [], + "label": "{ columns, rows }", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + } + ], + "path": "src/plugins/data/common/exports/export_csv.tsx", + "deprecated": false, + "isRequired": true }, { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/types/embeddables.ts" - }, + "parentPluginId": "data", + "id": "def-common.datatableToCSV.$2", + "type": "Object", + "tags": [], + "label": "{ csvSeparator, quoteValues, formatFactory, raw, escapeFormulaValues }", + "description": [], + "signature": [ + "CSVOptions" + ], + "path": "src/plugins/data/common/exports/export_csv.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.fieldList", + "type": "Function", + "tags": [], + "label": "fieldList", + "description": [], + "signature": [ + "(specs?: ", { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" }, + "[], shortDotsEnable?: boolean) => ", { - "plugin": "dashboardEnhanced", - "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx" - }, + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.IIndexPatternFieldList", + "text": "IIndexPatternFieldList" + } + ], + "path": "src/plugins/data_views/common/fields/field_list.ts", + "deprecated": false, + "children": [ { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" + "parentPluginId": "data", + "id": "def-common.fieldList.$1", + "type": "Array", + "tags": [], + "label": "specs", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" + }, + "[]" + ], + "path": "src/plugins/data_views/common/fields/field_list.ts", + "deprecated": false, + "isRequired": true }, { - "plugin": "discoverEnhanced", - "path": "x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts" - }, + "parentPluginId": "data", + "id": "def-common.fieldList.$2", + "type": "boolean", + "tags": [], + "label": "shortDotsEnable", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/common/fields/field_list.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.getEsQueryConfig", + "type": "Function", + "tags": [], + "label": "getEsQueryConfig", + "description": [], + "signature": [ + "(config: KibanaConfig) => ", + "EsQueryConfig" + ], + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "deprecated": false, + "children": [ { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/url_state.ts" - }, + "parentPluginId": "data", + "id": "def-common.getEsQueryConfig.$1", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + "KibanaConfig" + ], + "path": "src/plugins/data/common/es_query/get_es_query_config.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.getFieldSubtypeMulti", + "type": "Function", + "tags": [], + "label": "getFieldSubtypeMulti", + "description": [], + "signature": [ + "(field: HasSubtype) => ", + "IFieldSubTypeMulti", + " | undefined" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false, + "returnComment": [], + "children": [ { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/url_state.ts" - }, + "parentPluginId": "data", + "id": "def-common.getFieldSubtypeMulti.$1", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "signature": [ + "{ subType?: ", + "IFieldSubType", + " | undefined; }" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.getFieldSubtypeNested", + "type": "Function", + "tags": [], + "label": "getFieldSubtypeNested", + "description": [], + "signature": [ + "(field: HasSubtype) => ", + "IFieldSubTypeNested", + " | undefined" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false, + "returnComment": [], + "children": [ { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx" - }, + "parentPluginId": "data", + "id": "def-common.getFieldSubtypeNested.$1", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "signature": [ + "{ subType?: ", + "IFieldSubType", + " | undefined; }" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.getIndexPatternLoadMeta", + "type": "Function", + "tags": [], + "label": "getIndexPatternLoadMeta", + "description": [], + "signature": [ + "() => Omit<", { - "plugin": "monitoring", - "path": "x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.IndexPatternLoadExpressionFunctionDefinition", + "text": "IndexPatternLoadExpressionFunctionDefinition" }, + ", \"fn\">" + ], + "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.isFilterable", + "type": "Function", + "tags": [], + "label": "isFilterable", + "description": [], + "signature": [ + "(field: ", { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" }, + ") => boolean" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false, + "children": [ { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx" - }, + "parentPluginId": "data", + "id": "def-common.isFilterable.$1", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewField", + "text": "DataViewField" + } + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.isMultiField", + "type": "Function", + "tags": [], + "label": "isMultiField", + "description": [], + "signature": [ + "(field: HasSubtype) => boolean" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false, + "returnComment": [], + "children": [ { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx" - }, + "parentPluginId": "data", + "id": "def-common.isMultiField.$1", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "signature": [ + "{ subType?: ", + "IFieldSubType", + " | undefined; }" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.isNestedField", + "type": "Function", + "tags": [], + "label": "isNestedField", + "description": [], + "signature": [ + "(field: HasSubtype) => boolean" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false, + "returnComment": [], + "children": [ { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" - }, + "parentPluginId": "data", + "id": "def-common.isNestedField.$1", + "type": "Object", + "tags": [], + "label": "field", + "description": [], + "signature": [ + "{ subType?: ", + "IFieldSubType", + " | undefined; }" + ], + "path": "src/plugins/data_views/common/fields/utils.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.tableHasFormulas", + "type": "Function", + "tags": [], + "label": "tableHasFormulas", + "description": [], + "signature": [ + "(columns: ", { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" }, + "[], rows: ", { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx" + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableRow", + "text": "DatatableRow" }, + "[]) => boolean" + ], + "path": "src/plugins/data/common/exports/formula_checks.ts", + "deprecated": false, + "children": [ { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" + "parentPluginId": "data", + "id": "def-common.tableHasFormulas.$1", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]" + ], + "path": "src/plugins/data/common/exports/formula_checks.ts", + "deprecated": false, + "isRequired": true }, { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts" - }, + "parentPluginId": "data", + "id": "def-common.tableHasFormulas.$2", + "type": "Array", + "tags": [], + "label": "rows", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableRow", + "text": "DatatableRow" + }, + "[]" + ], + "path": "src/plugins/data/common/exports/formula_checks.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewAttributes", + "type": "Interface", + "tags": [], + "label": "DataViewAttributes", + "description": [ + "\nInterface for the data view saved object" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "children": [ { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.fields", + "type": "string", + "tags": [], + "label": "fields", + "description": [ + "\nFields as a serialized array of field specs" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.title", + "type": "string", + "tags": [], + "label": "title", + "description": [ + "\nData view title" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "\nData view type, default or rollup" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "urlDrilldown", - "path": "x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts" + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.typeMeta", + "type": "string", + "tags": [], + "label": "typeMeta", + "description": [ + "\nType metadata information, serialized. Only used by rollup data views." + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts" + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.timeFieldName", + "type": "string", + "tags": [], + "label": "timeFieldName", + "description": [ + "\nTime field name" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts" + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.sourceFilters", + "type": "string", + "tags": [], + "label": "sourceFilters", + "description": [ + "\nSerialized array of filters. Used by discover to hide fields." + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts" + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.fieldFormatMap", + "type": "string", + "tags": [], + "label": "fieldFormatMap", + "description": [ + "\nSerialized map of field formats by field name" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts" + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.fieldAttrs", + "type": "string", + "tags": [], + "label": "fieldAttrs", + "description": [ + "\nSerialized map of field attributes, currently field count and name" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_container.ts" + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.runtimeFieldMap", + "type": "string", + "tags": [], + "label": "runtimeFieldMap", + "description": [ + "\nSerialized map of runtime field definitions, by field name" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_container.ts" + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.allowNoIndex", + "type": "CompoundType", + "tags": [], + "label": "allowNoIndex", + "description": [ + "\nPrevents errors when index pattern exists before indices" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_container.ts" - }, + "parentPluginId": "data", + "id": "def-common.DataViewAttributes.name", + "type": "string", + "tags": [], + "label": "name", + "description": [ + "\nName of the data view. Human readable name used to differentiate data view." + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewListItem", + "type": "Interface", + "tags": [], + "label": "DataViewListItem", + "description": [ + "\nResult from data view search - summary data." + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "children": [ { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewListItem.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "\nSaved object id" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false }, { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewListItem.namespaces", + "type": "Array", + "tags": [], + "label": "namespaces", + "description": [ + "\nNamespace ids" + ], + "signature": [ + "string[] | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false }, { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg_group.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewListItem.title", + "type": "string", + "tags": [], + "label": "title", + "description": [ + "\nData view title" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false }, { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/agg_group.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewListItem.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "\nData view type" + ], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false }, { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx" + "parentPluginId": "data", + "id": "def-common.DataViewListItem.typeMeta", + "type": "Object", + "tags": [], + "label": "typeMeta", + "description": [ + "\nData view type meta" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.TypeMeta", + "text": "TypeMeta" + }, + " | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false }, { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx" - }, + "parentPluginId": "data", + "id": "def-common.DataViewListItem.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.FilterValueFormatter", + "type": "Interface", + "tags": [], + "label": "FilterValueFormatter", + "description": [], + "path": "src/plugins/data/common/types.ts", + "deprecated": false, + "children": [ { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx" + "parentPluginId": "data", + "id": "def-common.FilterValueFormatter.convert", + "type": "Function", + "tags": [], + "label": "convert", + "description": [], + "signature": [ + "(value: any) => string" + ], + "path": "src/plugins/data/common/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-common.FilterValueFormatter.convert.$1", + "type": "Any", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/data/common/types.ts", + "deprecated": false + } + ] }, { - "plugin": "visDefaultEditor", - "path": "src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx" - }, + "parentPluginId": "data", + "id": "def-common.FilterValueFormatter.getConverterFor", + "type": "Function", + "tags": [], + "label": "getConverterFor", + "description": [], + "signature": [ + "(type: string) => FilterFormatterFunction" + ], + "path": "src/plugins/data/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.FilterValueFormatter.getConverterFor.$1", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/data/common/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.GetFieldsOptions", + "type": "Interface", + "tags": [], + "label": "GetFieldsOptions", + "description": [], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "children": [ { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable_factory.ts" + "parentPluginId": "data", + "id": "def-common.GetFieldsOptions.pattern", + "type": "string", + "tags": [], + "label": "pattern", + "description": [], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "uiActionsEnhanced", - "path": "src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable_factory.ts" + "parentPluginId": "data", + "id": "def-common.GetFieldsOptions.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/timelion_vis_fn.ts" + "parentPluginId": "data", + "id": "def-common.GetFieldsOptions.lookBack", + "type": "CompoundType", + "tags": [], + "label": "lookBack", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/timelion_vis_fn.ts" + "parentPluginId": "data", + "id": "def-common.GetFieldsOptions.metaFields", + "type": "Array", + "tags": [], + "label": "metaFields", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts" + "parentPluginId": "data", + "id": "def-common.GetFieldsOptions.rollupIndex", + "type": "string", + "tags": [], + "label": "rollupIndex", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "visTypeTimelion", - "path": "src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts" + "parentPluginId": "data", + "id": "def-common.GetFieldsOptions.allowNoIndex", + "type": "CompoundType", + "tags": [], + "label": "allowNoIndex", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false }, { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx" - }, + "parentPluginId": "data", + "id": "def-common.GetFieldsOptions.filter", + "type": "Object", + "tags": [], + "label": "filter", + "description": [], + "signature": [ + "QueryDslQueryContainer", + " | undefined" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.IDataViewsApiClient", + "type": "Interface", + "tags": [], + "label": "IDataViewsApiClient", + "description": [], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "children": [ { - "plugin": "visTypeTimeseries", - "path": "src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx" + "parentPluginId": "data", + "id": "def-common.IDataViewsApiClient.getFieldsForWildcard", + "type": "Function", + "tags": [], + "label": "getFieldsForWildcard", + "description": [], + "signature": [ + "(options: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + }, + ") => Promise" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.IDataViewsApiClient.getFieldsForWildcard.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" + } + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_fn.ts" - }, + "parentPluginId": "data", + "id": "def-common.IDataViewsApiClient.hasUserIndexPattern", + "type": "Function", + "tags": [], + "label": "hasUserIndexPattern", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.IndexPatternExpressionType", + "type": "Interface", + "tags": [], + "label": "IndexPatternExpressionType", + "description": [ + "\nIndex pattern expression interface" + ], + "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", + "deprecated": false, + "children": [ { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_fn.ts" + "parentPluginId": "data", + "id": "def-common.IndexPatternExpressionType.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "\nExpression type" + ], + "signature": [ + "\"index_pattern\"" + ], + "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", + "deprecated": false }, { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_request_handler.ts" - }, + "parentPluginId": "data", + "id": "def-common.IndexPatternExpressionType.value", + "type": "Object", + "tags": [], + "label": "value", + "description": [ + "\nValue - DataViewSpec" + ], + "signature": [ + "{ id?: string | undefined; version?: string | undefined; title?: string | undefined; timeFieldName?: string | undefined; sourceFilters?: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.SourceFilter", + "text": "SourceFilter" + }, + "[] | undefined; fields?: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewFieldMap", + "text": "DataViewFieldMap" + }, + " | undefined; typeMeta?: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.TypeMeta", + "text": "TypeMeta" + }, + " | undefined; type?: string | undefined; fieldFormats?: Record> | undefined; runtimeFieldMap?: Record | undefined; fieldAttrs?: ", + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrs", + "text": "FieldAttrs" + }, + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + ], + "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.KbnFieldTypeOptions", + "type": "Interface", + "tags": [], + "label": "KbnFieldTypeOptions", + "description": [], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false, + "children": [ { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/vega_request_handler.ts" + "parentPluginId": "data", + "id": "def-common.KbnFieldTypeOptions.sortable", + "type": "boolean", + "tags": [], + "label": "sortable", + "description": [], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false }, { - "plugin": "infra", - "path": "x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx" + "parentPluginId": "data", + "id": "def-common.KbnFieldTypeOptions.filterable", + "type": "boolean", + "tags": [], + "label": "filterable", + "description": [], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false }, { - "plugin": "visualizations", - "path": "src/plugins/visualizations/common/locator.ts" + "parentPluginId": "data", + "id": "def-common.KbnFieldTypeOptions.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false }, { - "plugin": "visualizations", - "path": "src/plugins/visualizations/common/locator.ts" - }, + "parentPluginId": "data", + "id": "def-common.KbnFieldTypeOptions.esTypes", + "type": "Array", + "tags": [], + "label": "esTypes", + "description": [], + "signature": [ + "ES_FIELD_TYPES", + "[]" + ], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.SavedObject", + "type": "Interface", + "tags": [], + "label": "SavedObject", + "description": [], + "signature": [ + "SavedObject", + "" + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false, + "children": [ { - "plugin": "controls", - "path": "src/plugins/controls/common/types.ts" + "parentPluginId": "data", + "id": "def-common.SavedObject.id", + "type": "string", + "tags": [], + "label": "id", + "description": [ + "The ID of this Saved Object, guaranteed to be unique for all objects of the same `type`" + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false }, { - "plugin": "controls", - "path": "src/plugins/controls/common/types.ts" + "parentPluginId": "data", + "id": "def-common.SavedObject.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + " The type of Saved Object. Each plugin can define it's own custom Saved Object types." + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false }, { - "plugin": "controls", - "path": "src/plugins/controls/common/control_types/options_list/types.ts" + "parentPluginId": "data", + "id": "def-common.SavedObject.version", + "type": "string", + "tags": [], + "label": "version", + "description": [ + "An opaque version number which changes on each successful write operation. Can be used for implementing optimistic concurrency control." + ], + "signature": [ + "string | undefined" + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false }, { - "plugin": "controls", - "path": "src/plugins/controls/common/control_types/options_list/types.ts" + "parentPluginId": "data", + "id": "def-common.SavedObject.updated_at", + "type": "string", + "tags": [], + "label": "updated_at", + "description": [ + "Timestamp of the last time this document had been updated." + ], + "signature": [ + "string | undefined" + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false }, { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts" + "parentPluginId": "data", + "id": "def-common.SavedObject.error", + "type": "Object", + "tags": [], + "label": "error", + "description": [], + "signature": [ + "SavedObjectError", + " | undefined" + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false }, { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts" + "parentPluginId": "data", + "id": "def-common.SavedObject.attributes", + "type": "Uncategorized", + "tags": [], + "label": "attributes", + "description": [ + "{@inheritdoc SavedObjectAttributes}" + ], + "signature": [ + "T" + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false }, { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts" + "parentPluginId": "data", + "id": "def-common.SavedObject.references", + "type": "Array", + "tags": [], + "label": "references", + "description": [ + "{@inheritdoc SavedObjectReference}" + ], + "signature": [ + "SavedObjectReference", + "[]" + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false }, { - "plugin": "cases", - "path": "x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts" + "parentPluginId": "data", + "id": "def-common.SavedObject.migrationVersion", + "type": "Object", + "tags": [], + "label": "migrationVersion", + "description": [ + "{@inheritdoc SavedObjectsMigrationVersion}" + ], + "signature": [ + "SavedObjectsMigrationVersion", + " | undefined" + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" + "parentPluginId": "data", + "id": "def-common.SavedObject.coreMigrationVersion", + "type": "string", + "tags": [], + "label": "coreMigrationVersion", + "description": [ + "A semver value that is used when upgrading objects between Kibana versions." + ], + "signature": [ + "string | undefined" + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" + "parentPluginId": "data", + "id": "def-common.SavedObject.namespaces", + "type": "Array", + "tags": [], + "label": "namespaces", + "description": [ + "\nSpace(s) that this saved object exists in. This attribute is not used for \"global\" saved object types which are registered with\n`namespaceType: 'agnostic'`." + ], + "signature": [ + "string[] | undefined" + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/common/descriptor_types/data_request_descriptor_types.ts" - }, + "parentPluginId": "data", + "id": "def-common.SavedObject.originId", + "type": "string", + "tags": [], + "label": "originId", + "description": [ + "\nThe ID of the saved object this originated from. This is set if this object's `id` was regenerated; that can happen during migration\nfrom a legacy single-namespace type, or during import. It is only set during migration or create operations. This is used during import\nto ensure that ID regeneration is deterministic, so saved objects will be overwritten if they are imported multiple times into a given\nspace." + ], + "signature": [ + "string | undefined" + ], + "path": "src/core/types/saved_objects.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.UiSettingsCommon", + "type": "Interface", + "tags": [], + "label": "UiSettingsCommon", + "description": [ + "\nInterface for UiSettings common interface {@link UiSettingsClient}" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "children": [ { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" + "parentPluginId": "data", + "id": "def-common.UiSettingsCommon.get", + "type": "Function", + "tags": [], + "label": "get", + "description": [ + "\nGet a setting value" + ], + "signature": [ + "(key: string) => Promise" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.UiSettingsCommon.get.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [ + "name of value" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" + "parentPluginId": "data", + "id": "def-common.UiSettingsCommon.getAll", + "type": "Function", + "tags": [], + "label": "getAll", + "description": [ + "\nGet all settings values" + ], + "signature": [ + "() => Promise>" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "children": [], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_source/es_source.ts" + "parentPluginId": "data", + "id": "def-common.UiSettingsCommon.set", + "type": "Function", + "tags": [], + "label": "set", + "description": [ + "\nSet a setting value" + ], + "signature": [ + "(key: string, value: T) => Promise" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.UiSettingsCommon.set.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [ + "name of value" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-common.UiSettingsCommon.set.$2", + "type": "Uncategorized", + "tags": [], + "label": "value", + "description": [ + "value to set" + ], + "signature": [ + "T" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] }, { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" - }, + "parentPluginId": "data", + "id": "def-common.UiSettingsCommon.remove", + "type": "Function", + "tags": [], + "label": "remove", + "description": [ + "\nRemove a setting value" + ], + "signature": [ + "(key: string) => Promise" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.UiSettingsCommon.remove.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [ + "name of value" + ], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewType", + "type": "Enum", + "tags": [], + "label": "DataViewType", + "description": [ + "\nData View type. Default or rollup" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.ES_FIELD_TYPES", + "type": "Enum", + "tags": [], + "label": "ES_FIELD_TYPES", + "description": [], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.KBN_FIELD_TYPES", + "type": "Enum", + "tags": [], + "label": "KBN_FIELD_TYPES", + "description": [], + "path": "node_modules/@types/kbn__field-types/index.d.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "data", + "id": "def-common.AggregationRestrictions", + "type": "Type", + "tags": [], + "label": "AggregationRestrictions", + "description": [], + "signature": [ + "{ [x: string]: { agg?: string | undefined; interval?: number | undefined; fixed_interval?: string | undefined; calendar_interval?: string | undefined; delay?: string | undefined; time_zone?: string | undefined; }; }" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.CSV_FORMULA_CHARS", + "type": "Array", + "tags": [], + "label": "CSV_FORMULA_CHARS", + "description": [], + "signature": [ + "string[]" + ], + "path": "src/plugins/data/common/exports/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.CSV_MIME_TYPE", + "type": "string", + "tags": [], + "label": "CSV_MIME_TYPE", + "description": [], + "signature": [ + "\"text/plain;charset=utf-8\"" + ], + "path": "src/plugins/data/common/exports/export_csv.tsx", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.DATA_VIEW_SAVED_OBJECT_TYPE", + "type": "string", + "tags": [], + "label": "DATA_VIEW_SAVED_OBJECT_TYPE", + "description": [ + "\nData view saved object type." + ], + "signature": [ + "\"index-pattern\"" + ], + "path": "src/plugins/data_views/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewFieldMap", + "type": "Type", + "tags": [], + "label": "DataViewFieldMap", + "description": [], + "signature": [ + "{ [x: string]: ", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" }, + "; }" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsContract", + "type": "Type", + "tags": [], + "label": "DataViewsContract", + "description": [ + "\nData views service interface" + ], + "signature": [ + "{ create: (spec: ", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" }, + ", skipFetchFields?: boolean) => Promise<", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_fn.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + ">; delete: (indexPatternId: string) => Promise<{}>; find: (search: string, size?: number) => Promise<", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/types.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + "[]>; get: (id: string) => Promise<", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/types.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + ">; getCanSave: () => Promise; getIds: (refresh?: boolean) => Promise; getTitles: (refresh?: boolean) => Promise; getIdsWithTitle: (refresh?: boolean) => Promise<", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/connected_components/timeslider/timeslider.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewListItem", + "text": "DataViewListItem" }, + "[]>; clearCache: (id?: string | undefined) => void; getCache: () => Promise<", + "SavedObject", + "<", + "DataViewSavedObjectAttrs", + ">[] | null | undefined>; getDefault: () => Promise<", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/connected_components/timeslider/timeslider.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + " | null>; getDefaultId: () => Promise; setDefault: (id: string | null, force?: boolean) => Promise; hasUserDataView: () => Promise; getFieldsForWildcard: (options: ", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" }, + ") => Promise<", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" }, + "[]>; getFieldsForIndexPattern: (indexPattern: ", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + " | ", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" }, + ", options?: ", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.GetFieldsOptions", + "text": "GetFieldsOptions" }, + " | undefined) => Promise<", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/embeddable/map_component.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" }, + "[]>; refreshFields: (indexPattern: ", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + ") => Promise; fieldArrayToMap: (fields: ", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/region_map/region_map_visualization.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldSpec", + "text": "FieldSpec" }, + "[], fieldAttrs?: ", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrs", + "text": "FieldAttrs" }, + " | undefined) => ", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_fn.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewFieldMap", + "text": "DataViewFieldMap" }, + "; savedObjectToSpec: (savedObject: ", + "SavedObject", + "<", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewAttributes", + "text": "DataViewAttributes" }, + ">) => ", { - "plugin": "maps", - "path": "x-pack/plugins/maps/public/legacy_visualizations/tile_map/tile_map_visualization.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" }, + "; createAndSave: (spec: ", { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewSpec", + "text": "DataViewSpec" }, + ", override?: boolean, skipFetchFields?: boolean) => Promise<", { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + ">; createSavedObject: (dataView: ", { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + ", override?: boolean) => Promise<", { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + ">; updateSavedObject: (indexPattern: ", { - "plugin": "ml", - "path": "x-pack/plugins/ml/common/util/date_utils.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + ", saveAttempts?: number, ignoreErrors?: boolean) => Promise; getDefaultDataView: () => Promise<", { - "plugin": "ml", - "path": "x-pack/plugins/ml/common/util/date_utils.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataView", + "text": "DataView" }, + " | null>; }" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.DataViewSpec", + "type": "Type", + "tags": [], + "label": "DataViewSpec", + "description": [ + "\nStatic data view format\nSerialized data object, representing data view attributes and state" + ], + "signature": [ + "{ id?: string | undefined; version?: string | undefined; title?: string | undefined; timeFieldName?: string | undefined; sourceFilters?: ", { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/types.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.SourceFilter", + "text": "SourceFilter" }, + "[] | undefined; fields?: ", { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/types.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewFieldMap", + "text": "DataViewFieldMap" }, + " | undefined; typeMeta?: ", { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/types.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.TypeMeta", + "text": "TypeMeta" }, + " | undefined; type?: string | undefined; fieldFormats?: Record> | undefined; runtimeFieldMap?: Record | undefined; fieldAttrs?: ", { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrs", + "text": "FieldAttrs" }, + " | undefined; allowNoIndex?: boolean | undefined; namespaces?: string[] | undefined; name?: string | undefined; }" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.DEFAULT_QUERY_LANGUAGE", + "type": "string", + "tags": [], + "label": "DEFAULT_QUERY_LANGUAGE", + "description": [], + "signature": [ + "\"kuery\"" + ], + "path": "src/plugins/data/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.FieldAttrs", + "type": "Type", + "tags": [], + "label": "FieldAttrs", + "description": [ + "\nSet of field attributes" + ], + "signature": [ + "{ [key: string]: ", { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.FieldAttrSet", + "text": "FieldAttrSet" }, + "; }" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.FieldAttrSet", + "type": "Type", + "tags": [], + "label": "FieldAttrSet", + "description": [ + "\nField attributes that are stored on the data view" + ], + "signature": [ + "{ customLabel?: string | undefined; count?: number | undefined; }" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.FieldSpec", + "type": "Type", + "tags": [], + "label": "FieldSpec", + "description": [ + "\nSerialized version of DataViewField" + ], + "signature": [ + "DataViewFieldBase", + " & { count?: number | undefined; conflictDescriptions?: Record | undefined; format?: ", { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" + "pluginId": "fieldFormats", + "scope": "common", + "docId": "kibFieldFormatsPluginApi", + "section": "def-common.SerializedFieldFormat", + "text": "SerializedFieldFormat" }, + "<", + "SerializableRecord", + "> | undefined; esTypes?: string[] | undefined; searchable: boolean; aggregatable: boolean; readFromDocValues?: boolean | undefined; indexed?: boolean | undefined; customLabel?: string | undefined; runtimeField?: ", { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/functions/timelion.ts" + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.RuntimeFieldSpec", + "text": "RuntimeFieldSpec" }, + " | undefined; shortDotsEnable?: boolean | undefined; isMapped?: boolean | undefined; }" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.FieldSpecConflictDescriptions", + "type": "Type", + "tags": [], + "label": "FieldSpecConflictDescriptions", + "description": [], + "signature": [ + "{ [x: string]: string[]; }" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.GetConfigFn", + "type": "Type", + "tags": [], + "label": "GetConfigFn", + "description": [ + "\nIf a service is being shared on both the client and the server, and\nthe client code requires synchronous access to uiSettings, both client\nand server should wrap the core uiSettings services in a function\nmatching this signature.\n\nThis matches the signature of the public `core.uiSettings.get`, and\nshould only be used in scenarios where async access to uiSettings is\nnot possible." + ], + "signature": [ + "(key: string, defaultOverride?: T | undefined) => T" + ], + "path": "src/plugins/data/common/types.ts", + "deprecated": false, + "returnComment": [], + "children": [ { - "plugin": "canvas", - "path": "x-pack/plugins/canvas/public/functions/timelion.ts" + "parentPluginId": "data", + "id": "def-common.GetConfigFn.$1", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "path": "src/plugins/data/common/types.ts", + "deprecated": false }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts" - }, + "parentPluginId": "data", + "id": "def-common.GetConfigFn.$2", + "type": "Uncategorized", + "tags": [], + "label": "defaultOverride", + "description": [], + "signature": [ + "T | undefined" + ], + "path": "src/plugins/data/common/types.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.IndexPatternLoadExpressionFunctionDefinition", + "type": "Type", + "tags": [], + "label": "IndexPatternLoadExpressionFunctionDefinition", + "description": [], + "signature": [ { - "plugin": "lens", - "path": "x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts" + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExpressionFunctionDefinition", + "text": "ExpressionFunctionDefinition" }, + "<\"indexPatternLoad\", null, Arguments, Output, ", { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/data_model/time_cache.ts" + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.ExecutionContext", + "text": "ExecutionContext" }, + "<", { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/data_model/time_cache.ts" + "pluginId": "inspector", + "scope": "common", + "docId": "kibInspectorPluginApi", + "section": "def-common.Adapters", + "text": "Adapters" }, - { - "plugin": "visTypeVega", - "path": "src/plugins/vis_types/vega/public/data_model/time_cache.ts" - } + ", ", + "SerializableRecord", + ">>" + ], + "path": "src/plugins/data_views/common/expressions/load_index_pattern.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.KIBANA_USER_QUERY_LANGUAGE_KEY", + "type": "string", + "tags": [], + "label": "KIBANA_USER_QUERY_LANGUAGE_KEY", + "description": [], + "signature": [ + "\"kibana.userQueryLanguage\"" + ], + "path": "src/plugins/data/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.META_FIELDS", + "type": "string", + "tags": [], + "label": "META_FIELDS", + "description": [ + "\nUiSettings key for metaFields list." + ], + "signature": [ + "\"metaFields\"" ], + "path": "src/plugins/data_views/common/constants.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.Query", + "type": "Type", + "tags": [], + "label": "Query", + "description": [], + "signature": [ + "{ query: string | { [key: string]: any; }; language: string; }" + ], + "path": "node_modules/@types/kbn__es-query/index.d.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "data", + "id": "def-common.SourceFilter", + "type": "Type", + "tags": [], + "label": "SourceFilter", + "description": [], + "signature": [ + "{ value: string; }" + ], + "path": "src/plugins/data_views/common/types.ts", + "deprecated": false, "initialIsOpen": false }, { @@ -31428,24 +23644,6 @@ } ], "objects": [ - { - "parentPluginId": "data", - "id": "def-common.COMPARE_ALL_OPTIONS", - "type": "Object", - "tags": [ - "deprecated" - ], - "label": "COMPARE_ALL_OPTIONS", - "description": [], - "signature": [ - "FilterCompareOptions" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-common.DEFAULT_ASSETS_TO_IGNORE", @@ -31521,55 +23719,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "data", - "id": "def-common.FILTERS", - "type": "Object", - "tags": [ - "deprecated" - ], - "label": "FILTERS", - "description": [], - "signature": [ - "typeof ", - "FILTERS" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, - { - "parentPluginId": "data", - "id": "def-common.nodeBuilder", - "type": "Object", - "tags": [ - "deprecated" - ], - "label": "nodeBuilder", - "description": [], - "signature": [ - "{ is: (fieldName: string, value: string | ", - "KueryNode", - ") => ", - "FunctionTypeBuildNode", - "; or: (nodes: ", - "KueryNode", - "[]) => ", - "KueryNode", - "; and: (nodes: ", - "KueryNode", - "[]) => ", - "KueryNode", - "; }" - ], - "path": "src/plugins/data/common/es_query/index.ts", - "deprecated": true, - "removeBy": "8.1", - "references": [], - "initialIsOpen": false - }, { "parentPluginId": "data", "id": "def-common.RUNTIME_FIELD_TYPES", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 3ba5beb5d04d8..cc6c86fcb5f52 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github summary: API docs for the data plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3372 | 35 | 2518 | 21 | +| 3072 | 34 | 2399 | 22 | ## Client diff --git a/api_docs/data_query.devdocs.json b/api_docs/data_query.devdocs.json index ba274a046a393..e888da21c8a41 100644 --- a/api_docs/data_query.devdocs.json +++ b/api_docs/data_query.devdocs.json @@ -1921,13 +1921,7 @@ "label": "time", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", " | undefined" ], "path": "src/plugins/data/public/query/state_sync/types.ts", @@ -3583,13 +3577,7 @@ "description": [], "signature": [ "(x: unknown) => x is ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - } + "TimeRange" ], "path": "src/plugins/data/common/query/timefilter/is_time_range.ts", "deprecated": false, @@ -3843,13 +3831,7 @@ ], "signature": [ "{ time?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", " | undefined; refreshInterval?: ", { "pluginId": "data", @@ -3890,13 +3872,7 @@ "label": "SavedQueryTimeFilter", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", " & { refreshInterval: ", { "pluginId": "data", diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 2a81780f25e56..a7bb8fa4d9919 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github summary: API docs for the data.query plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3372 | 35 | 2518 | 21 | +| 3072 | 34 | 2399 | 22 | ## Client diff --git a/api_docs/data_search.devdocs.json b/api_docs/data_search.devdocs.json index deba3008b0de7..b238ea5ef4fcf 100644 --- a/api_docs/data_search.devdocs.json +++ b/api_docs/data_search.devdocs.json @@ -420,13 +420,7 @@ ], "signature": [ "{ calculateAutoTimeExpression: (range: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", ") => string | undefined; createAggConfigs: (indexPattern: ", { "pluginId": "dataViews", @@ -12282,13 +12276,7 @@ "description": [], "signature": [ "(getConfig: (key: string) => any) => (range: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", ") => string | undefined" ], "path": "src/plugins/data/common/search/aggs/utils/calculate_auto_time_expression.ts", @@ -15721,13 +15709,7 @@ "description": [], "signature": [ "(timerange: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", ") => ", { "pluginId": "expressions", @@ -15748,13 +15730,7 @@ "label": "timerange", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - } + "TimeRange" ], "path": "src/plugins/data/common/search/expressions/timerange_to_ast.ts", "deprecated": false, @@ -20909,13 +20885,7 @@ "description": [], "signature": [ "(range: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", ") => string | undefined" ], "path": "src/plugins/data/common/search/aggs/types.ts", @@ -25238,13 +25208,7 @@ "description": [], "signature": [ "{ calculateAutoTimeExpression: (range: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", ") => string | undefined; createAggConfigs: (indexPattern: ", { "pluginId": "dataViews", @@ -26683,13 +26647,7 @@ ], "signature": [ "{ calculateAutoTimeExpression: (range: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", ") => string | undefined; createAggConfigs: (indexPattern: ", { "pluginId": "dataViews", @@ -27367,13 +27325,7 @@ " | ", "Query", "[] | undefined; timeRange?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", " | undefined; }" ], "path": "src/plugins/data/common/search/expressions/kibana_context_type.ts", @@ -27973,13 +27925,7 @@ "text": "ExpressionFunctionDefinition" }, "<\"timerange\", null, ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", ", ", { "pluginId": "data", @@ -29485,13 +29431,7 @@ "description": [], "signature": [ "{ type: \"timerange\"; } & ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - } + "TimeRange" ], "path": "src/plugins/data/common/search/expressions/timerange.ts", "deprecated": false, @@ -32857,13 +32797,7 @@ "description": [], "signature": [ "(input: null, args: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", ") => { type: \"timerange\"; from: string; to: string; mode: \"absolute\" | \"relative\" | undefined; }" ], "path": "src/plugins/data/common/search/expressions/timerange.ts", @@ -32891,13 +32825,7 @@ "label": "args", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - } + "TimeRange" ], "path": "src/plugins/data/common/search/expressions/timerange.ts", "deprecated": false, @@ -35000,13 +34928,7 @@ " | ", "Query", "[] | undefined; timeRange?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", " | undefined; }" ], "path": "src/plugins/data/common/search/expressions/remove_filter.ts", @@ -35303,13 +35225,7 @@ " | ", "Query", "[] | undefined; timeRange?: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", " | undefined; }" ], "path": "src/plugins/data/common/search/expressions/select_filter.ts", diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 5f0239c3ee434..bde8c91920935 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github summary: API docs for the data.search plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3372 | 35 | 2518 | 21 | +| 3072 | 34 | 2399 | 22 | ## Client diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 6f2cdb2350507..f62aa9f36c3c1 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewEditor plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 692d50ae66a77..0943418c1c5b2 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewFieldEditor plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index b2dff4fcae8ef..4297e16c393fc 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewManagement plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index c0d5b039e6bcd..459b3dcde752b 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -11025,9 +11025,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; child: (opts: ", "ClientOptions", diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index ccf8f12cb276c..3d50dcf400d63 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViews plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 0de7c1db684e6..d545aa1752f9c 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataVisualizer plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index f5fddc4eb32e1..97c708c366bd2 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- @@ -28,32 +28,32 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | dataViews, maps | - | | | dataViews, maps | - | | | maps | - | -| | management, spaces, ml, canvas, cloudSecurityPosture, enterpriseSearch, osquery | - | -| | actions, ml, enterpriseSearch, savedObjectsTagging | - | +| | unifiedSearch | - | +| | unifiedSearch | - | +| | visTypeTimeseries, graph, dataViewManagement, dataViews | - | +| | visTypeTimeseries, graph, dataViewManagement, dataViews | - | +| | visTypeTimeseries, graph, dataViewManagement | - | +| | visTypeTimeseries | - | | | canvas, visTypeXy | - | -| | canvas | - | -| | canvas | - | -| | canvas | - | | | canvas, visTypeXy | - | | | canvas, visTypeXy | - | -| | canvas | - | -| | canvas | - | -| | canvas | - | | | canvas, visTypeXy | - | -| | visTypeTimeseries, graph, dataViewManagement, dataViews | - | -| | visTypeTimeseries, graph, dataViewManagement, dataViews | - | -| | visTypeTimeseries | - | -| | visTypeTimeseries, graph, dataViewManagement | - | -| | unifiedSearch | - | -| | unifiedSearch | - | | | dataViewManagement, dataViews | - | | | dataViews, dataViewManagement | - | | | dataViewManagement, dataViews | - | | | dataViews, dataViewManagement | - | | | dataViewManagement | - | | | dataViewManagement | - | +| | canvas | - | +| | canvas | - | +| | canvas | - | +| | canvas | - | +| | canvas | - | +| | canvas | - | +| | management, spaces, ml, canvas, cloudSecurityPosture, enterpriseSearch, osquery | - | | | management, cloudSecurityPosture, enterpriseSearch | - | | | enterpriseSearch | - | +| | actions, ml, enterpriseSearch, savedObjectsTagging | - | | | spaces, savedObjectsManagement | - | | | spaces, savedObjectsManagement | - | | | visTypeGauge | - | @@ -62,13 +62,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | console | - | | | stackAlerts, alerting, securitySolution, inputControlVis | 8.1 | | | stackAlerts, alerting, securitySolution, inputControlVis | 8.1 | -| | infra, discover, visualizations, dashboard, controls, uiActionsEnhanced, lens, maps, dataVisualizer, ml, fleet, canvas, dashboardEnhanced, discoverEnhanced, monitoring, securitySolution, urlDrilldown, visDefaultEditor, visTypeTimelion, visTypeTimeseries, visTypeVega, cases | 8.1 | -| | discover, dashboard, lens, urlDrilldown | 8.1 | -| | discover, dashboard, lens, urlDrilldown | 8.1 | -| | infra, discover, visualizations, dashboard, controls, uiActionsEnhanced, lens, maps, dataVisualizer, ml, fleet, canvas, dashboardEnhanced, discoverEnhanced, monitoring, securitySolution, urlDrilldown, visDefaultEditor, visTypeTimelion, visTypeTimeseries, visTypeVega, cases | 8.1 | -| | infra, discover, visualizations, dashboard, controls, uiActionsEnhanced, lens, maps, dataVisualizer, ml, fleet, canvas, dashboardEnhanced, discoverEnhanced, monitoring, securitySolution, urlDrilldown, visDefaultEditor, visTypeTimelion, visTypeTimeseries, visTypeVega, cases | 8.1 | -| | discover, dashboard, lens, urlDrilldown | 8.1 | -| | apm | 8.1 | | | spaces, security, alerting | 8.8.0 | | | spaces, security, actions, alerting, ml, remoteClusters, graph, indexLifecycleManagement, mapsEms, painlessLab, rollup, searchprofiler, snapshotRestore, transform, upgradeAssistant | 8.8.0 | | | embeddable, discover, presentationUtil, dashboard, graph | 8.8.0 | @@ -79,13 +72,13 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | savedObjectsTaggingOss, visualizations, dashboard, lens | 8.8.0 | | | dashboard | 8.8.0 | | | dashboard, maps | 8.8.0 | +| | monitoring, kibanaUsageCollection | 8.8.0 | +| | cloud, apm | 8.8.0 | | | security, licenseManagement, ml, apm, crossClusterReplication, logstash, painlessLab, searchprofiler, watcher | 8.8.0 | +| | management, fleet, security, kibanaOverview | 8.8.0 | | | security, fleet | 8.8.0 | | | security, fleet | 8.8.0 | | | security, fleet | 8.8.0 | -| | management, fleet, security, kibanaOverview | 8.8.0 | -| | monitoring, kibanaUsageCollection | 8.8.0 | -| | cloud, apm | 8.8.0 | | | security | 8.8.0 | | | mapsEms | 8.8.0 | | | ml | 8.8.0 @@ -110,66 +103,9 @@ Safe to remove. | ---------------|------------| | | data | | | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | -| | data | | | data | | | data | | | data | -| | data | -| | data | | | expressions | | | expressions | | | expressions | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 85c1f61e6d944..d4222f6c65916 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- @@ -47,7 +47,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery) | 8.1 | | | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/plugin.ts#:~:text=environment) | 8.8.0 | | | [app_root.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/app_root.tsx#:~:text=RedirectAppLinks), [app_root.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/app_root.tsx#:~:text=RedirectAppLinks), [app_root.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/routing/app_root.tsx#:~:text=RedirectAppLinks) | - | | | [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | 8.8.0 | @@ -60,9 +59,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [embeddables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/types/embeddables.ts#:~:text=TimeRange), [embeddables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/types/embeddables.ts#:~:text=TimeRange), [build_embeddable_filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts#:~:text=TimeRange), [build_embeddable_filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts#:~:text=TimeRange), [build_embeddable_filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts#:~:text=TimeRange), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=TimeRange), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=TimeRange), [timelion.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/timelion.ts#:~:text=TimeRange), [timelion.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/timelion.ts#:~:text=TimeRange) | 8.1 | -| | [embeddables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/types/embeddables.ts#:~:text=TimeRange), [embeddables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/types/embeddables.ts#:~:text=TimeRange), [build_embeddable_filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts#:~:text=TimeRange), [build_embeddable_filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts#:~:text=TimeRange), [build_embeddable_filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts#:~:text=TimeRange), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=TimeRange), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=TimeRange), [timelion.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/timelion.ts#:~:text=TimeRange), [timelion.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/timelion.ts#:~:text=TimeRange) | 8.1 | -| | [embeddables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/types/embeddables.ts#:~:text=TimeRange), [embeddables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/types/embeddables.ts#:~:text=TimeRange), [build_embeddable_filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts#:~:text=TimeRange), [build_embeddable_filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts#:~:text=TimeRange), [build_embeddable_filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/lib/build_embeddable_filters.ts#:~:text=TimeRange), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=TimeRange), [saved_lens.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=TimeRange), [timelion.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/timelion.ts#:~:text=TimeRange), [timelion.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/functions/timelion.ts#:~:text=TimeRange) | 8.1 | | | [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts#:~:text=context), [embeddable.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts#:~:text=context), [esdocs.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts#:~:text=context), [index.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts#:~:text=context), [filters.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/common/functions/filters.ts#:~:text=context), [escount.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts#:~:text=context), [neq.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts#:~:text=context) | - | | | [setup_expressions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/setup_expressions.ts#:~:text=getFunction) | - | | | [application.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/public/application.tsx#:~:text=getFunctions), [functions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getFunctions), [functions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getFunctions), [functions.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/canvas/server/routes/functions/functions.test.ts#:~:text=getFunctions) | - | @@ -77,16 +73,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex -## cases - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange) | 8.1 | -| | [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange) | 8.1 | -| | [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange) | 8.1 | - - - ## cloud | Deprecated API | Reference location(s) | Remove By | @@ -115,16 +101,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex -## controls - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [options_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/public/services/kibana/options_list.ts#:~:text=TimeRange), [options_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/public/services/kibana/options_list.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/control_types/options_list/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/control_types/options_list/types.ts#:~:text=TimeRange) | 8.1 | -| | [options_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/public/services/kibana/options_list.ts#:~:text=TimeRange), [options_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/public/services/kibana/options_list.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/control_types/options_list/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/control_types/options_list/types.ts#:~:text=TimeRange) | 8.1 | -| | [options_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/public/services/kibana/options_list.ts#:~:text=TimeRange), [options_list.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/public/services/kibana/options_list.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/control_types/options_list/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/controls/common/control_types/options_list/types.ts#:~:text=TimeRange) | 8.1 | - - - ## crossClusterReplication | Deprecated API | Reference location(s) | Remove By | @@ -137,14 +113,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx#:~:text=TimeRange)+ 5 more | 8.1 | | | [sync_dashboard_filter_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts#:~:text=syncQueryStateWithUrl), [sync_dashboard_filter_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/sync_dashboard_filter_state.ts#:~:text=syncQueryStateWithUrl), [dashboard_listing.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx#:~:text=syncQueryStateWithUrl), [dashboard_listing.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/listing/dashboard_listing.tsx#:~:text=syncQueryStateWithUrl) | - | | | [export_csv_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/export_csv_action.tsx#:~:text=fieldFormats) | - | -| | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 5 more | 8.1 | -| | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 5 more | 8.1 | -| | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx#:~:text=TimeRange)+ 5 more | 8.1 | -| | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx#:~:text=TimeRange)+ 5 more | 8.1 | -| | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 5 more | 8.1 | | | [kibana_react.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/kibana_react.ts#:~:text=ExitFullScreenButton), [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/plugin.tsx#:~:text=ExitFullScreenButton), [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/plugin.tsx#:~:text=ExitFullScreenButton), [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/plugin.tsx#:~:text=ExitFullScreenButton) | - | | | [saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_objects.ts#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/top_nav/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/top_nav/save_modal.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_objects.ts#:~:text=SavedObject), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObject), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObject), [dashboard_tagging.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/dashboard_tagging.ts#:~:text=SavedObject), [dashboard_tagging.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/dashboard_tagging.ts#:~:text=SavedObject), [clone_panel_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx#:~:text=SavedObject), [clone_panel_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx#:~:text=SavedObject)+ 1 more | 8.8.0 | @@ -154,16 +124,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex -## dashboardEnhanced - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=TimeRange), [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=TimeRange) | 8.1 | -| | [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=TimeRange), [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=TimeRange) | 8.1 | -| | [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=TimeRange), [embeddable_to_dashboard_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx#:~:text=TimeRange) | 8.1 | - - - ## data | Deprecated API | Reference location(s) | Remove By | @@ -205,30 +165,14 @@ warning: This document is auto-generated and is meant to be viewed inside our ex -## dataVisualizer - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange) | 8.1 | -| | [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange) | 8.1 | -| | [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange) | 8.1 | - - - ## discover | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=create), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=create) | - | -| | [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange)+ 2 more | 8.1 | | | [discover_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/services/discover_state.ts#:~:text=syncQueryStateWithUrl), [discover_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/services/discover_state.ts#:~:text=syncQueryStateWithUrl) | - | | | [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/plugin.tsx#:~:text=indexPatterns) | - | -| | [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter), [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter) | 8.1 | -| | [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter), [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter) | 8.1 | -| | [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange)+ 2 more | 8.1 | | | [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=create), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=create) | - | -| | [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange)+ 2 more | 8.1 | -| | [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter), [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter) | 8.1 | | | [on_save_search.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal), [on_save_search.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=executeTriggerActions), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=executeTriggerActions), [plugin.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/plugin.tsx#:~:text=executeTriggerActions) | - | | | [ui_settings.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/server/ui_settings.ts#:~:text=metric), [ui_settings.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/server/ui_settings.ts#:~:text=metric), [ui_settings.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/server/ui_settings.ts#:~:text=metric) | - | @@ -236,16 +180,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex -## discoverEnhanced - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=TimeRange), [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=TimeRange) | 8.1 | -| | [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=TimeRange), [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=TimeRange) | 8.1 | -| | [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=TimeRange), [explore_data_context_menu_action.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/discover_enhanced/public/actions/explore_data/explore_data_context_menu_action.ts#:~:text=TimeRange) | 8.1 | - - - ## embeddable | Deprecated API | Reference location(s) | Remove By | @@ -294,9 +228,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange) | 8.1 | -| | [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange) | 8.1 | -| | [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange) | 8.1 | | | [tutorial_directory_header_link.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx#:~:text=RedirectAppLinks), [tutorial_directory_header_link.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx#:~:text=RedirectAppLinks), [tutorial_directory_header_link.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx#:~:text=RedirectAppLinks), [custom_assets_accordion.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx#:~:text=RedirectAppLinks), [custom_assets_accordion.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx#:~:text=RedirectAppLinks), [custom_assets_accordion.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx#:~:text=RedirectAppLinks), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=RedirectAppLinks), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=RedirectAppLinks), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/integrations/app.tsx#:~:text=RedirectAppLinks)+ 5 more | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#:~:text=disabled) | 8.8.0 | | | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#:~:text=disabled) | 8.8.0 | @@ -339,10 +270,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange)+ 1 more | 8.1 | | | [use_kibana_index_patterns.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_index_patterns.ts#:~:text=indexPatterns) | - | -| | [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange)+ 1 more | 8.1 | -| | [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange)+ 1 more | 8.1 | @@ -377,14 +305,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=TimeRange), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=TimeRange), [time_scale.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts#:~:text=TimeRange), [time_scale.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts#:~:text=TimeRange) | 8.1 | | | [mounter.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/mounter.tsx#:~:text=syncQueryStateWithUrl), [mounter.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/mounter.tsx#:~:text=syncQueryStateWithUrl) | - | | | [ranges.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/ranges/ranges.tsx#:~:text=fieldFormats), [droppable.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts#:~:text=fieldFormats) | - | -| | [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter) | 8.1 | -| | [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter) | 8.1 | -| | [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=TimeRange), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=TimeRange), [time_scale.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts#:~:text=TimeRange), [time_scale.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts#:~:text=TimeRange) | 8.1 | -| | [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=TimeRange), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=TimeRange), [time_scale.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts#:~:text=TimeRange), [time_scale.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/common/expressions/time_scale/time_scale.test.ts#:~:text=TimeRange) | 8.1 | -| | [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter) | 8.1 | | | [workspace_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx#:~:text=RedirectAppLinks), [workspace_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx#:~:text=RedirectAppLinks), [workspace_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx#:~:text=RedirectAppLinks) | - | | | [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject) | 8.8.0 | | | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/types.ts#:~:text=onAppLeave), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/types.ts#:~:text=onAppLeave), [mounter.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/mounter.tsx#:~:text=onAppLeave) | 8.8.0 | @@ -422,13 +344,10 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange)+ 36 more | 8.1 | | | [global_sync.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/url_state/global_sync.ts#:~:text=syncQueryStateWithUrl), [global_sync.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/url_state/global_sync.ts#:~:text=syncQueryStateWithUrl) | - | | | [kibana_services.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/kibana_services.ts#:~:text=indexPatterns) | - | -| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange)+ 36 more | 8.1 | | | [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit) | - | | | [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit) | - | -| | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange)+ 36 more | 8.1 | | | [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit), [es_search_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit) | - | | | [render_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/render_app.tsx#:~:text=onAppLeave), [map_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx#:~:text=onAppLeave), [map_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/map_page.tsx#:~:text=onAppLeave) | 8.8.0 | | | [saved_object_migrations.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/server/saved_objects/saved_object_migrations.ts#:~:text=warning) | 8.8.0 | @@ -448,9 +367,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_explorer_charts_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts#:~:text=TimeRange), [anomaly_explorer_charts_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts#:~:text=TimeRange), [anomaly_explorer_charts_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/common/util/date_utils.ts#:~:text=TimeRange), [date_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/common/util/date_utils.ts#:~:text=TimeRange)+ 4 more | 8.1 | -| | [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_explorer_charts_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts#:~:text=TimeRange), [anomaly_explorer_charts_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts#:~:text=TimeRange), [anomaly_explorer_charts_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/common/util/date_utils.ts#:~:text=TimeRange), [date_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/common/util/date_utils.ts#:~:text=TimeRange)+ 4 more | 8.1 | -| | [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_explorer_charts_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts#:~:text=TimeRange), [anomaly_explorer_charts_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts#:~:text=TimeRange), [anomaly_explorer_charts_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/navigation_menu/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/common/util/date_utils.ts#:~:text=TimeRange), [date_utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/common/util/date_utils.ts#:~:text=TimeRange)+ 4 more | 8.1 | | | [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=KibanaPageTemplate), [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=KibanaPageTemplate), [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=KibanaPageTemplate) | - | | | [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=RedirectAppLinks), [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=RedirectAppLinks), [ml_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/components/ml_page/ml_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks) | - | | | [check_license.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/license/check_license.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -469,10 +385,7 @@ so TS and code-reference navigation might not highlight them. | | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange) | 8.1 | | | [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=syncQueryStateWithUrl), [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=syncQueryStateWithUrl) | - | -| | [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange) | 8.1 | -| | [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange) | 8.1 | | | [bulk_uploader.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/server/kibana_monitoring/bulk_uploader.ts#:~:text=process) | 8.8.0 | @@ -601,14 +514,11 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | ---------------|-----------|-----------| | | [wrap_search_source_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.ts#:~:text=create) | - | | | [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch) | 8.1 | -| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange) | 8.1 | | | [middleware.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=indexPatterns), [dependencies_start_mock.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts#:~:text=indexPatterns) | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange) | 8.1 | | | [wrap_search_source_client.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.ts#:~:text=create) | - | | | [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch) | 8.1 | -| | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange) | 8.1 | -| | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode)+ 5 more | 8.8.0 | -| | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode)+ 5 more | 8.8.0 | +| | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [list.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts#:~:text=mode), [response_actions.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts#:~:text=mode)+ 3 more | 8.8.0 | +| | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [list.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts#:~:text=mode), [response_actions.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts#:~:text=mode)+ 3 more | 8.8.0 | | | [request_context_factory.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/request_context_factory.ts#:~:text=authc), [request_context_factory.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/request_context_factory.ts#:~:text=authc), [create_signals_migration_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts#:~:text=authc), [delete_signals_migration_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts#:~:text=authc), [finalize_signals_migration_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts#:~:text=authc), [open_close_signals_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts#:~:text=authc), [preview_rules_route.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/preview_rules_route.ts#:~:text=authc), [common.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/timeline/utils/common.ts#:~:text=authc) | - | | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/index.tsx#:~:text=onAppLeave) | 8.8.0 | | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler)+ 3 more | 8.8.0 | @@ -663,16 +573,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ -## uiActionsEnhanced - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange)+ 5 more | 8.1 | -| | [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange)+ 5 more | 8.1 | -| | [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange)+ 5 more | 8.1 | - - - ## unifiedSearch | Deprecated API | Reference location(s) | Remove By | @@ -692,19 +592,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ -## urlDrilldown - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=TimeRange), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=TimeRange), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=TimeRange), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=TimeRange), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=TimeRange), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=TimeRange) | 8.1 | -| | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | 8.1 | -| | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | 8.1 | -| | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=TimeRange), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=TimeRange), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=TimeRange), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=TimeRange), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=TimeRange), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=TimeRange) | 8.1 | -| | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=TimeRange), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=TimeRange), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=TimeRange), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=TimeRange), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=TimeRange), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=TimeRange) | 8.1 | -| | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | 8.1 | - - - ## ux | Deprecated API | Reference location(s) | Remove By | @@ -713,16 +600,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ -## visDefaultEditor - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [agg.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg.tsx#:~:text=TimeRange), [agg.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg.tsx#:~:text=TimeRange), [agg_group.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg_group.tsx#:~:text=TimeRange), [agg_group.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg_group.tsx#:~:text=TimeRange), [data_tab.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx#:~:text=TimeRange), [data_tab.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx#:~:text=TimeRange), [sidebar.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx#:~:text=TimeRange), [sidebar.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx#:~:text=TimeRange) | 8.1 | -| | [agg.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg.tsx#:~:text=TimeRange), [agg.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg.tsx#:~:text=TimeRange), [agg_group.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg_group.tsx#:~:text=TimeRange), [agg_group.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg_group.tsx#:~:text=TimeRange), [data_tab.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx#:~:text=TimeRange), [data_tab.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx#:~:text=TimeRange), [sidebar.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx#:~:text=TimeRange), [sidebar.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx#:~:text=TimeRange) | 8.1 | -| | [agg.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg.tsx#:~:text=TimeRange), [agg.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg.tsx#:~:text=TimeRange), [agg_group.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg_group.tsx#:~:text=TimeRange), [agg_group.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/agg_group.tsx#:~:text=TimeRange), [data_tab.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx#:~:text=TimeRange), [data_tab.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx#:~:text=TimeRange), [sidebar.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx#:~:text=TimeRange), [sidebar.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx#:~:text=TimeRange) | 8.1 | - - - ## visTypeGauge | Deprecated API | Reference location(s) | Remove By | @@ -748,41 +625,18 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ -## visTypeTimelion - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/timelion_vis_fn.ts#:~:text=TimeRange), [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/timelion_vis_fn.ts#:~:text=TimeRange), [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts#:~:text=TimeRange), [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts#:~:text=TimeRange) | 8.1 | -| | [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/timelion_vis_fn.ts#:~:text=TimeRange), [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/timelion_vis_fn.ts#:~:text=TimeRange), [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts#:~:text=TimeRange), [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts#:~:text=TimeRange) | 8.1 | -| | [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/timelion_vis_fn.ts#:~:text=TimeRange), [timelion_vis_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/timelion_vis_fn.ts#:~:text=TimeRange), [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts#:~:text=TimeRange), [timelion_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timelion/public/helpers/timelion_request_handler.ts#:~:text=TimeRange) | 8.1 | - - - ## visTypeTimeseries | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [vis_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx#:~:text=TimeRange), [vis_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx#:~:text=TimeRange) | 8.1 | | | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/plugin.ts#:~:text=fieldFormats) | - | -| | [vis_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx#:~:text=TimeRange), [vis_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx#:~:text=TimeRange) | 8.1 | | | [abstract_search_strategy.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts#:~:text=getNonScriptedFields), [fetch_fields.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts#:~:text=getNonScriptedFields), [abstract_search_strategy.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts#:~:text=getNonScriptedFields), [fetch_fields.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts#:~:text=getNonScriptedFields) | - | | | [abstract_search_strategy.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts#:~:text=getNonScriptedFields), [fetch_fields.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts#:~:text=getNonScriptedFields), [abstract_search_strategy.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts#:~:text=getNonScriptedFields), [fetch_fields.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts#:~:text=getNonScriptedFields) | - | -| | [vis_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx#:~:text=TimeRange), [vis_editor.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/application/components/vis_editor.tsx#:~:text=TimeRange) | 8.1 | | | [plugin.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/server/plugin.ts#:~:text=fieldFormats) | - | | | [abstract_search_strategy.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts#:~:text=getNonScriptedFields), [fetch_fields.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts#:~:text=getNonScriptedFields) | - | -## visTypeVega - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [vega_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_fn.ts#:~:text=TimeRange), [vega_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_fn.ts#:~:text=TimeRange), [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_request_handler.ts#:~:text=TimeRange), [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_request_handler.ts#:~:text=TimeRange), [time_cache.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/data_model/time_cache.ts#:~:text=TimeRange), [time_cache.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/data_model/time_cache.ts#:~:text=TimeRange), [time_cache.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/data_model/time_cache.ts#:~:text=TimeRange) | 8.1 | -| | [vega_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_fn.ts#:~:text=TimeRange), [vega_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_fn.ts#:~:text=TimeRange), [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_request_handler.ts#:~:text=TimeRange), [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_request_handler.ts#:~:text=TimeRange), [time_cache.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/data_model/time_cache.ts#:~:text=TimeRange), [time_cache.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/data_model/time_cache.ts#:~:text=TimeRange), [time_cache.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/data_model/time_cache.ts#:~:text=TimeRange) | 8.1 | -| | [vega_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_fn.ts#:~:text=TimeRange), [vega_fn.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_fn.ts#:~:text=TimeRange), [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_request_handler.ts#:~:text=TimeRange), [vega_request_handler.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/vega_request_handler.ts#:~:text=TimeRange), [time_cache.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/data_model/time_cache.ts#:~:text=TimeRange), [time_cache.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/data_model/time_cache.ts#:~:text=TimeRange), [time_cache.ts](https://github.com/elastic/kibana/tree/master/src/plugins/vis_types/vega/public/data_model/time_cache.ts#:~:text=TimeRange) | 8.1 | - - - ## visTypeVislib | Deprecated API | Reference location(s) | Remove By | @@ -807,10 +661,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange) | 8.1 | | | [app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/app.tsx#:~:text=syncQueryStateWithUrl), [app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/app.tsx#:~:text=syncQueryStateWithUrl) | - | -| | [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange) | 8.1 | -| | [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange) | 8.1 | | | [get_table_columns.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/utils/get_table_columns.tsx#:~:text=RedirectAppLinks), [get_table_columns.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/utils/get_table_columns.tsx#:~:text=RedirectAppLinks), [get_table_columns.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/utils/get_table_columns.tsx#:~:text=RedirectAppLinks) | - | | | [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject) | 8.8.0 | | | [visualize_top_nav.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_top_nav.tsx#:~:text=onAppLeave), [visualize_editor_common.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_editor_common.tsx#:~:text=onAppLeave), [app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/app.tsx#:~:text=onAppLeave), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/index.tsx#:~:text=onAppLeave) | 8.8.0 | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 4e41da90b698a..9a995d287dcfe 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team summary: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- @@ -13,7 +13,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| apm | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/components/shared/kuery_bar/index.tsx#:~:text=esKuery) | 8.1 | | apm | | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/plugin.ts#:~:text=environment) | 8.8.0 | | apm | | [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | 8.8.0 | | apm | | [license_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/apm/public/context/license/license_context.tsx#:~:text=license%24) | 8.8.0 | @@ -25,12 +24,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| uiActionsEnhanced | | [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange)+ 13 more | 8.1 | -| uiActionsEnhanced | | [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange)+ 13 more | 8.1 | -| uiActionsEnhanced | | [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [customize_time_range_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/customize_time_range_modal.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_action.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [custom_time_range_badge.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/custom_time_range_badge.tsx#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [can_inherit_time_range.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/can_inherit_time_range.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange), [time_range_embeddable.ts](https://github.com/elastic/kibana/tree/master/src/plugins/ui_actions_enhanced/public/test_helpers/time_range_embeddable.ts#:~:text=TimeRange)+ 13 more | 8.1 | -| urlDrilldown | | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | 8.1 | -| urlDrilldown | | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | 8.1 | -| urlDrilldown | | [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [context_variables.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/variables/context_variables.ts#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [url_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/url_drilldown.tsx#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter), [data.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/drilldowns/url_drilldown/public/lib/test/data.ts#:~:text=Filter) | 8.1 | | embeddable | | [attribute_service.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | @@ -39,12 +32,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| discover | | [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange)+ 4 more | 8.1 | -| discover | | [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter), [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter) | 8.1 | -| discover | | [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter), [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter) | 8.1 | -| discover | | [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange)+ 4 more | 8.1 | -| discover | | [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/locator.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/types.ts#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/layout/types.ts#:~:text=TimeRange)+ 4 more | 8.1 | -| discover | | [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter), [view_alert_route.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/view_alert/view_alert_route.tsx#:~:text=Filter) | 8.1 | | discover | | [on_save_search.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal), [on_save_search.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | graph | | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/graph/server/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -54,9 +41,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| fleet | | [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange) | 8.1 | -| fleet | | [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange) | 8.1 | -| fleet | | [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange), [agent_logs.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=TimeRange) | 8.1 | | fleet | | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#:~:text=disabled) | 8.8.0 | | fleet | | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#:~:text=disabled) | 8.8.0 | | fleet | | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/fleet/server/plugin.ts#:~:text=disabled) | 8.8.0 | @@ -68,9 +52,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| maps | | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange)+ 36 more | 8.1 | -| maps | | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange)+ 36 more | 8.1 | -| maps | | [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/reducers/map/types.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_selectors.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/selectors/map_selectors.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [map_actions.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/actions/map_actions.ts#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [vector_source.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/classes/sources/vector_source/vector_source.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/saved_map/types.ts#:~:text=TimeRange)+ 36 more | 8.1 | | maps | | [render_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/render_app.tsx#:~:text=onAppLeave), [map_app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/map_app/map_app.tsx#:~:text=onAppLeave), [map_page.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/public/routes/map_page/map_page.tsx#:~:text=onAppLeave) | 8.8.0 | | maps | | [saved_object_migrations.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/maps/server/saved_objects/saved_object_migrations.ts#:~:text=warning) | 8.8.0 | | mapsEms | | [index.ts](https://github.com/elastic/kibana/tree/master/src/plugins/maps_ems/server/index.ts#:~:text=license%24) | 8.8.0 | @@ -94,12 +75,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | --------|-------|-----------|-----------| | inputControlVis | | [list_control_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/list_control_factory.ts#:~:text=fetch), [range_control_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/range_control_factory.ts#:~:text=fetch) | 8.1 | | inputControlVis | | [list_control_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/list_control_factory.ts#:~:text=fetch), [range_control_factory.ts](https://github.com/elastic/kibana/tree/master/src/plugins/input_control_vis/public/control/range_control_factory.ts#:~:text=fetch) | 8.1 | -| dashboard | | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx#:~:text=TimeRange)+ 20 more | 8.1 | -| dashboard | | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 5 more | 8.1 | -| dashboard | | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 5 more | 8.1 | -| dashboard | | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx#:~:text=TimeRange)+ 20 more | 8.1 | -| dashboard | | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [convert_dashboard_state.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/convert_dashboard_state.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/types.ts#:~:text=TimeRange), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/embeddable/dashboard_container.tsx#:~:text=TimeRange)+ 20 more | 8.1 | -| dashboard | | [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [filter_utils.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/filter_utils.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter), [dashboard_state_slice.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/state/dashboard_state_slice.ts#:~:text=Filter)+ 5 more | 8.1 | | dashboard | | [saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_objects.ts#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/top_nav/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/top_nav/save_modal.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | dashboard | | [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [saved_object_loader.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_object_loader.ts#:~:text=SavedObject), [saved_objects.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/services/saved_objects.ts#:~:text=SavedObject), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObject), [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObject), [dashboard_tagging.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/dashboard_tagging.ts#:~:text=SavedObject), [dashboard_tagging.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/lib/dashboard_tagging.ts#:~:text=SavedObject), [clone_panel_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx#:~:text=SavedObject), [clone_panel_action.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/application/actions/clone_panel_action.tsx#:~:text=SavedObject)+ 1 more | 8.8.0 | | dashboard | | [saved_dashboard.ts](https://github.com/elastic/kibana/tree/master/src/plugins/dashboard/public/saved_dashboards/saved_dashboard.ts#:~:text=SavedObjectClass) | 8.8.0 | @@ -116,16 +91,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex -## Logs and Metrics UI - -| Plugin | Deprecated API | Reference location(s) | Remove By | -| --------|-------|-----------|-----------| -| infra | | [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange)+ 1 more | 8.1 | -| infra | | [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange)+ 1 more | 8.1 | -| infra | | [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [use_kibana_timefilter_time.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/hooks/use_kibana_timefilter_time.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [log_stream_embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/components/log_stream/log_stream_embeddable.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange), [use_log_entry_rate_results_url_state.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/infra/public/pages/logs/log_entry_rate/use_log_entry_rate_results_url_state.tsx#:~:text=TimeRange)+ 1 more | 8.1 | - - - ## Logstash | Plugin | Deprecated API | Reference location(s) | Remove By | @@ -138,9 +103,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| dataVisualizer | | [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange)+ 12 more | 8.1 | -| dataVisualizer | | [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange)+ 12 more | 8.1 | -| dataVisualizer | | [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [results_links.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [date_picker_wrapper.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/common/components/date_picker_wrapper/date_picker_wrapper.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [search_panel.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange), [anomaly_timeline_service.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts#:~:text=TimeRange)+ 12 more | 8.1 | | ml | | [check_license.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/license/check_license.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/plugin.ts#:~:text=license%24) | 8.8.0 | | ml | | [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/transform/server/services/license.ts#:~:text=license%24) | 8.8.0 | | ml | | [app.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/ml/public/application/app.tsx#:~:text=onAppLeave) | 8.8.0 | @@ -188,27 +150,14 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ -## ResponseOps - -| Plugin | Deprecated API | Reference location(s) | Remove By | -| --------|-------|-----------|-----------| -| cases | | [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange) | 8.1 | -| cases | | [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange) | 8.1 | -| cases | | [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [serializer.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/lens/serializer.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange), [utils.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/cases/common/utils/markdown_plugins/utils.ts#:~:text=TimeRange) | 8.1 | - - - ## Security solution | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| | securitySolution | | [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch) | 8.1 | -| securitySolution | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange) | 8.1 | -| securitySolution | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange) | 8.1 | | securitySolution | | [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/lib/detection_engine/routes/rules/utils/wrap_search_source_client.test.ts#:~:text=fetch) | 8.1 | -| securitySolution | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/query_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/search_bar/index.tsx#:~:text=TimeRange) | 8.1 | -| securitySolution | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode)+ 5 more | 8.8.0 | -| securitySolution | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode), [isolation.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts#:~:text=mode)+ 5 more | 8.8.0 | +| securitySolution | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [list.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts#:~:text=mode), [response_actions.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts#:~:text=mode)+ 3 more | 8.8.0 | +| securitySolution | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [list.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts#:~:text=mode), [response_actions.test.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/server/endpoint/routes/actions/response_actions.test.ts#:~:text=mode)+ 3 more | 8.8.0 | | securitySolution | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/index.tsx#:~:text=onAppLeave) | 8.8.0 | | securitySolution | | [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/timelines/components/flyout/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/bottom_bar/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [index.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/home/index.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler), [routes.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/app/routes.tsx#:~:text=AppLeaveHandler)+ 3 more | 8.8.0 | @@ -227,9 +176,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| monitoring | | [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange) | 8.1 | -| monitoring | | [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange) | 8.1 | -| monitoring | | [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [url_state.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/url_state.ts#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange), [global_state_context.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/public/application/contexts/global_state_context.tsx#:~:text=TimeRange) | 8.1 | | monitoring | | [bulk_uploader.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/monitoring/server/kibana_monitoring/bulk_uploader.ts#:~:text=process) | 8.8.0 | @@ -238,12 +184,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| visualizations | | [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange)+ 27 more | 8.1 | -| visualizations | | [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange)+ 27 more | 8.1 | -| visualizations | | [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [types.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/types.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange), [locator.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/common/locator.ts#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange), [embeddable.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/embeddable/embeddable.tsx#:~:text=TimeRange)+ 27 more | 8.1 | | visualizations | | [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/utils/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject), [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [display_duplicate_title_confirm_modal.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/display_duplicate_title_confirm_modal.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject), [check_for_duplicate_title.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/persistence/saved_objects_utils/check_for_duplicate_title.ts#:~:text=SavedObject) | 8.8.0 | | visualizations | | [visualize_top_nav.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_top_nav.tsx#:~:text=onAppLeave), [visualize_editor_common.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/components/visualize_editor_common.tsx#:~:text=onAppLeave), [app.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/app.tsx#:~:text=onAppLeave), [index.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/visualizations/public/visualize_app/index.tsx#:~:text=onAppLeave), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/types.ts#:~:text=onAppLeave), [types.ts](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/types.ts#:~:text=onAppLeave), [mounter.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/app_plugin/mounter.tsx#:~:text=onAppLeave) | 8.8.0 | -| lens | | [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter) | 8.1 | -| lens | | [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter) | 8.1 | -| lens | | [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter), [open_in_discover_drilldown.tsx](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lens/public/trigger_actions/open_in_discover_drilldown.tsx#:~:text=Filter) | 8.1 | | management | | [application.tsx](https://github.com/elastic/kibana/tree/master/src/plugins/management/public/application.tsx#:~:text=appBasePath) | 8.8.0 | \ No newline at end of file diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 4dea92a222265..b95162c73b70c 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github summary: API docs for the devTools plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 6740276120bc4..92b15fa4eb518 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github summary: API docs for the discover plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 6584490e7c347..2615d10e20873 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the discoverEnhanced plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/elastic_apm_synthtrace.mdx b/api_docs/elastic_apm_synthtrace.mdx index ec575d551a733..0dcc042b805fe 100644 --- a/api_docs/elastic_apm_synthtrace.mdx +++ b/api_docs/elastic_apm_synthtrace.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/elastic-apm-synthtrace title: "@elastic/apm-synthtrace" image: https://source.unsplash.com/400x175/?github summary: API docs for the @elastic/apm-synthtrace plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@elastic/apm-synthtrace'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index a6737f6650638..b373d348d2e00 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github summary: API docs for the embeddable plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index c8873882cc3a3..87ed46ed5618f 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the embeddableEnhanced plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 319b3b5198e43..5d0b699131f19 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github summary: API docs for the encryptedSavedObjects plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index b218b8f933f54..2257e89887682 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the enterpriseSearch plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 3ad01719d1506..7c74fd18d9d7d 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github summary: API docs for the esUiShared plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 3ca4853bd2823..db4361f4c71d2 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github summary: API docs for the eventAnnotation plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 42f392650f117..ce71219c77661 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github summary: API docs for the eventLog plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 71115486d3599..ea3154c081499 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionError plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index ff3eb921466cc..27f553c9df86f 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionGauge plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 0f275e9b6c018..abff740b84120 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionHeatmap plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index b8c422da05f27..66c0685e867d2 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionImage plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 46b37e71cbf25..bfd39bb2af47f 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionMetric plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index b4e4ef9bf5cf6..218a7ee0ce7ef 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionMetricVis plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index b4bddb1883e5b..6469a974d591b 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionPartitionVis plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index e5bf549f9d90e..e9892fab347b0 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionRepeatImage plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 1ff5125f23082..55c6ed9527d46 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionRevealImage plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index fc8c1da0baa60..202e4c6e2e365 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionShape plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index efc368456ed80..142c613588dd3 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionTagcloud plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index a54e704f338e7..6a2bb59b4fea3 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionXY plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expressions.devdocs.json b/api_docs/expressions.devdocs.json index f1ad873b5f766..f7888f42d35ed 100644 --- a/api_docs/expressions.devdocs.json +++ b/api_docs/expressions.devdocs.json @@ -240,6 +240,21 @@ "path": "src/plugins/expressions/common/execution/execution.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "expressions", + "id": "def-public.Execution.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger", + " | undefined" + ], + "path": "src/plugins/expressions/common/execution/execution.ts", + "deprecated": false, + "isRequired": false } ], "returnComment": [] @@ -965,7 +980,9 @@ "label": "createWithDefaults", "description": [], "signature": [ - " = Record>(state?: ", + " = Record>(logger?: ", + "Logger", + " | undefined, state?: ", { "pluginId": "expressions", "scope": "common", @@ -991,6 +1008,21 @@ "id": "def-public.Executor.createWithDefaults.$1", "type": "Object", "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger", + " | undefined" + ], + "path": "src/plugins/expressions/common/executor/executor.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "expressions", + "id": "def-public.Executor.createWithDefaults.$2", + "type": "Object", + "tags": [], "label": "state", "description": [], "signature": [ @@ -1098,26 +1130,6 @@ "deprecated": true, "references": [] }, - { - "parentPluginId": "expressions", - "id": "def-public.Executor.parent", - "type": "Object", - "tags": [], - "label": "parent", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Executor", - "text": "Executor" - }, - " | undefined" - ], - "path": "src/plugins/expressions/common/executor/executor.ts", - "deprecated": false - }, { "parentPluginId": "expressions", "id": "def-public.Executor.Unnamed", @@ -1136,6 +1148,21 @@ "id": "def-public.Executor.Unnamed.$1", "type": "Object", "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger", + " | undefined" + ], + "path": "src/plugins/expressions/common/executor/executor.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "expressions", + "id": "def-public.Executor.Unnamed.$2", + "type": "Object", + "tags": [], "label": "state", "description": [], "signature": [ @@ -1918,29 +1945,6 @@ } ], "returnComment": [] - }, - { - "parentPluginId": "expressions", - "id": "def-public.Executor.fork", - "type": "Function", - "tags": [], - "label": "fork", - "description": [], - "signature": [ - "() => ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Executor", - "text": "Executor" - }, - "" - ], - "path": "src/plugins/expressions/common/executor/executor.ts", - "deprecated": false, - "children": [], - "returnComment": [] } ], "initialIsOpen": false @@ -3975,7 +3979,7 @@ "id": "def-public.ExpressionsService.Unnamed.$1", "type": "Object", "tags": [], - "label": "{\n executor = Executor.createWithDefaults(),\n renderers = new ExpressionRendererRegistry(),\n }", + "label": "{\n logger,\n executor = Executor.createWithDefaults(logger),\n renderers = new ExpressionRendererRegistry(),\n }", "description": [], "signature": [ { @@ -12673,6 +12677,21 @@ "path": "src/plugins/expressions/common/execution/execution.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "expressions", + "id": "def-server.Execution.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger", + " | undefined" + ], + "path": "src/plugins/expressions/common/execution/execution.ts", + "deprecated": false, + "isRequired": false } ], "returnComment": [] @@ -13189,7 +13208,9 @@ "label": "createWithDefaults", "description": [], "signature": [ - " = Record>(state?: ", + " = Record>(logger?: ", + "Logger", + " | undefined, state?: ", { "pluginId": "expressions", "scope": "common", @@ -13215,6 +13236,21 @@ "id": "def-server.Executor.createWithDefaults.$1", "type": "Object", "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger", + " | undefined" + ], + "path": "src/plugins/expressions/common/executor/executor.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "expressions", + "id": "def-server.Executor.createWithDefaults.$2", + "type": "Object", + "tags": [], "label": "state", "description": [], "signature": [ @@ -13322,26 +13358,6 @@ "deprecated": true, "references": [] }, - { - "parentPluginId": "expressions", - "id": "def-server.Executor.parent", - "type": "Object", - "tags": [], - "label": "parent", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Executor", - "text": "Executor" - }, - " | undefined" - ], - "path": "src/plugins/expressions/common/executor/executor.ts", - "deprecated": false - }, { "parentPluginId": "expressions", "id": "def-server.Executor.Unnamed", @@ -13360,6 +13376,21 @@ "id": "def-server.Executor.Unnamed.$1", "type": "Object", "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger", + " | undefined" + ], + "path": "src/plugins/expressions/common/executor/executor.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "expressions", + "id": "def-server.Executor.Unnamed.$2", + "type": "Object", + "tags": [], "label": "state", "description": [], "signature": [ @@ -14142,29 +14173,6 @@ } ], "returnComment": [] - }, - { - "parentPluginId": "expressions", - "id": "def-server.Executor.fork", - "type": "Function", - "tags": [], - "label": "fork", - "description": [], - "signature": [ - "() => ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Executor", - "text": "Executor" - }, - "" - ], - "path": "src/plugins/expressions/common/executor/executor.ts", - "deprecated": false, - "children": [], - "returnComment": [] } ], "initialIsOpen": false @@ -15388,7 +15396,7 @@ "id": "def-server.ExpressionsServerPlugin.Unnamed.$1", "type": "Object", "tags": [], - "label": "initializerContext", + "label": "context", "description": [], "signature": [ { @@ -21047,6 +21055,21 @@ "path": "src/plugins/expressions/common/execution/execution.ts", "deprecated": false, "isRequired": true + }, + { + "parentPluginId": "expressions", + "id": "def-common.Execution.Unnamed.$2", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger", + " | undefined" + ], + "path": "src/plugins/expressions/common/execution/execution.ts", + "deprecated": false, + "isRequired": false } ], "returnComment": [] @@ -21772,7 +21795,9 @@ "label": "createWithDefaults", "description": [], "signature": [ - " = Record>(state?: ", + " = Record>(logger?: ", + "Logger", + " | undefined, state?: ", { "pluginId": "expressions", "scope": "common", @@ -21798,6 +21823,21 @@ "id": "def-common.Executor.createWithDefaults.$1", "type": "Object", "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger", + " | undefined" + ], + "path": "src/plugins/expressions/common/executor/executor.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "expressions", + "id": "def-common.Executor.createWithDefaults.$2", + "type": "Object", + "tags": [], "label": "state", "description": [], "signature": [ @@ -21905,26 +21945,6 @@ "deprecated": true, "references": [] }, - { - "parentPluginId": "expressions", - "id": "def-common.Executor.parent", - "type": "Object", - "tags": [], - "label": "parent", - "description": [], - "signature": [ - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Executor", - "text": "Executor" - }, - " | undefined" - ], - "path": "src/plugins/expressions/common/executor/executor.ts", - "deprecated": false - }, { "parentPluginId": "expressions", "id": "def-common.Executor.Unnamed", @@ -21943,6 +21963,21 @@ "id": "def-common.Executor.Unnamed.$1", "type": "Object", "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger", + " | undefined" + ], + "path": "src/plugins/expressions/common/executor/executor.ts", + "deprecated": false, + "isRequired": false + }, + { + "parentPluginId": "expressions", + "id": "def-common.Executor.Unnamed.$2", + "type": "Object", + "tags": [], "label": "state", "description": [], "signature": [ @@ -22725,29 +22760,6 @@ } ], "returnComment": [] - }, - { - "parentPluginId": "expressions", - "id": "def-common.Executor.fork", - "type": "Function", - "tags": [], - "label": "fork", - "description": [], - "signature": [ - "() => ", - { - "pluginId": "expressions", - "scope": "common", - "docId": "kibExpressionsPluginApi", - "section": "def-common.Executor", - "text": "Executor" - }, - "" - ], - "path": "src/plugins/expressions/common/executor/executor.ts", - "deprecated": false, - "children": [], - "returnComment": [] } ], "initialIsOpen": false @@ -24094,7 +24106,7 @@ "id": "def-common.ExpressionsService.Unnamed.$1", "type": "Object", "tags": [], - "label": "{\n executor = Executor.createWithDefaults(),\n renderers = new ExpressionRendererRegistry(),\n }", + "label": "{\n logger,\n executor = Executor.createWithDefaults(logger),\n renderers = new ExpressionRendererRegistry(),\n }", "description": [], "signature": [ { @@ -30942,6 +30954,20 @@ "path": "src/plugins/expressions/common/service/expressions_services.ts", "deprecated": false }, + { + "parentPluginId": "expressions", + "id": "def-common.ExpressionServiceParams.logger", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + "Logger", + " | undefined" + ], + "path": "src/plugins/expressions/common/service/expressions_services.ts", + "deprecated": false + }, { "parentPluginId": "expressions", "id": "def-common.ExpressionServiceParams.renderers", diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 702747e6b7379..02e63b832df83 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressions plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [App Services](https://github.com/orgs/elastic/teams/kibana-app-services | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2176 | 17 | 1722 | 5 | +| 2180 | 17 | 1726 | 5 | ## Client diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 0ea745c09724b..bde45470db66b 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github summary: API docs for the features plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index de50b4c79027f..aee6e9622505a 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github summary: API docs for the fieldFormats plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index c08489d474686..ff81f3660218f 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github summary: API docs for the fileUpload plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index e3c431e3335f8..f060abd995232 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -2729,6 +2729,21 @@ "deprecated": false, "children": [], "returnComment": [] + }, + { + "parentPluginId": "fleet", + "id": "def-public.pagePathGetters.debug", + "type": "Function", + "tags": [], + "label": "debug", + "description": [], + "signature": [ + "() => [string, string]" + ], + "path": "x-pack/plugins/fleet/public/constants/page_paths.ts", + "deprecated": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false @@ -11138,7 +11153,7 @@ "label": "body", "description": [], "signature": [ - "{ packagePolicyIds: string[]; }" + "{ packagePolicyIds: string[]; force?: boolean | undefined; }" ], "path": "x-pack/plugins/fleet/common/types/rest_spec/package_policy.ts", "deprecated": false @@ -20804,6 +20819,20 @@ "deprecated": false, "initialIsOpen": false }, + { + "parentPluginId": "fleet", + "id": "def-common.LICENSE_FOR_SCHEDULE_UPGRADE", + "type": "string", + "tags": [], + "label": "LICENSE_FOR_SCHEDULE_UPGRADE", + "description": [], + "signature": [ + "\"platinum\"" + ], + "path": "x-pack/plugins/fleet/common/constants/agent_policy.ts", + "deprecated": false, + "initialIsOpen": false + }, { "parentPluginId": "fleet", "id": "def-common.LIMITED_CONCURRENCY_ROUTE_TAG", @@ -22392,6 +22421,51 @@ "deprecated": false, "children": [], "returnComment": [] + }, + { + "parentPluginId": "fleet", + "id": "def-common.agentPolicyRouteService.getResetOnePreconfiguredAgentPolicyPath", + "type": "Function", + "tags": [], + "label": "getResetOnePreconfiguredAgentPolicyPath", + "description": [], + "signature": [ + "(agentPolicyId: string) => string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "fleet", + "id": "def-common.agentPolicyRouteService.getResetOnePreconfiguredAgentPolicyPath.$1", + "type": "string", + "tags": [], + "label": "agentPolicyId", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "fleet", + "id": "def-common.agentPolicyRouteService.getResetAllPreconfiguredAgentPolicyPath", + "type": "Function", + "tags": [], + "label": "getResetAllPreconfiguredAgentPolicyPath", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false @@ -22797,6 +22871,16 @@ "path": "x-pack/plugins/fleet/common/constants/routes.ts", "deprecated": false, "children": [ + { + "parentPluginId": "fleet", + "id": "def-common.APP_API_ROUTES.HEALTH_CHECK_PATTERN", + "type": "string", + "tags": [], + "label": "HEALTH_CHECK_PATTERN", + "description": [], + "path": "x-pack/plugins/fleet/common/constants/routes.ts", + "deprecated": false + }, { "parentPluginId": "fleet", "id": "def-common.APP_API_ROUTES.CHECK_PERMISSIONS_PATTERN", @@ -24084,6 +24168,16 @@ "description": [], "path": "x-pack/plugins/fleet/common/constants/routes.ts", "deprecated": false + }, + { + "parentPluginId": "fleet", + "id": "def-common.PACKAGE_POLICY_API_ROUTES.ORPHANED_INTEGRATION_POLICIES", + "type": "string", + "tags": [], + "label": "ORPHANED_INTEGRATION_POLICIES", + "description": [], + "path": "x-pack/plugins/fleet/common/constants/routes.ts", + "deprecated": false } ], "initialIsOpen": false @@ -24232,6 +24326,21 @@ "deprecated": false, "children": [], "returnComment": [] + }, + { + "parentPluginId": "fleet", + "id": "def-common.packagePolicyRouteService.getOrphanedIntegrationPoliciesPath", + "type": "Function", + "tags": [], + "label": "getOrphanedIntegrationPoliciesPath", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/plugins/fleet/common/services/routes.ts", + "deprecated": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 71008fbb011f1..74ab074a74209 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github summary: API docs for the fleet plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Fleet](https://github.com/orgs/elastic/teams/fleet) for questions regar | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1427 | 8 | 1300 | 10 | +| 1435 | 8 | 1308 | 10 | ## Client diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index b6ace962da867..c9055be152e4c 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the globalSearch plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/home.mdx b/api_docs/home.mdx index cb4efc7394ae2..9bf1f688986f6 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github summary: API docs for the home plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 0abd7dafe1dfc..f2e9c6bfc9a36 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the indexLifecycleManagement plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 237e1d188a1eb..46baf65ed5268 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the indexManagement plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 2af55a03958b9..fb6ced4363fcf 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github summary: API docs for the infra plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 47fb922cea12a..a1fc5bd30b20e 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github summary: API docs for the inspector plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index e71b5ee9c4570..6c47cc38b0f38 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github summary: API docs for the interactiveSetup plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 85fb794b3cc01..a4993cf778bb3 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ace plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 8161553290b5a..37fc706f762bd 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/aiops-utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index 64b400887b5f1..8007be27038fc 100644 --- a/api_docs/kbn_alerts.mdx +++ b/api_docs/kbn_alerts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-alerts title: "@kbn/alerts" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/alerts plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index d94411838ac93..3e6c179cb6fd8 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 076fb0b37b285..4018c2960bb47 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-client plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index f43a920340a8a..f9efcde37ff5a 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 2c2d370c55530..20f03a5c1b9be 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 0313b6a4bc96c..036dff2834a98 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 7de051d50bd1d..f20a328bbd061 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index d616defe56978..8c1d4205d47e4 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/apm-config-loader plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index d7eefb5218955..7e4cc478ad446 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/apm-utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 995e5e5902dca..f88ba9abb50f1 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/axe-config plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_bazel_packages.mdx b/api_docs/kbn_bazel_packages.mdx index d70c566be14ef..20abe35be350f 100644 --- a/api_docs/kbn_bazel_packages.mdx +++ b/api_docs/kbn_bazel_packages.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-bazel-packages title: "@kbn/bazel-packages" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/bazel-packages plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bazel-packages'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_bazel_runner.mdx b/api_docs/kbn_bazel_runner.mdx index 2415099300f2a..3fbcc63a1e034 100644 --- a/api_docs/kbn_bazel_runner.mdx +++ b/api_docs/kbn_bazel_runner.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-bazel-runner title: "@kbn/bazel-runner" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/bazel-runner plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bazel-runner'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 4f87c899a1c89..1a43b788c1825 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ci-stats-core plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index a252ee5af2af1..fd3d10a85a509 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ci-stats-reporter plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index a08c2708487a1..43f72e4163575 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/cli-dev-mode plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index ec54a8a98a21b..0f68cb49dec35 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/coloring plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 152e372f9838e..d33fb0ca31e26 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/config plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 43254c641247c..4235898a4f5b2 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/config-mocks plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index aac83c2bb4ae5..30f1f8636bdd8 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/config-schema plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index b4a987b6c9c8a..9d63767df02cb 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-browser plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 3014690067bf7..7415fdfd045cd 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index ac90c830633e2..21657e30fdf16 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index ced92a3a32d9a..64f89ba035988 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-base-browser-mocks plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 7a8ef3b91471a..8f7fc1a42003c 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-base-common plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index a813e133f6627..be4d31b7e6153 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-base-server-mocks plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 6d78b0bfac021..cf5302dd72f77 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-doc-links-browser plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 8aeffa4b0a86a..0e821cd157098 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 5c4517d534751..3b3ca4bcaa5a3 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-doc-links-server plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 57edcacd8f414..76c157aa5e054 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index 96861c44d2bd2..b3816f2d31255 100644 --- a/api_docs/kbn_core_injected_metadata_browser.mdx +++ b/api_docs/kbn_core_injected_metadata_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser title: "@kbn/core-injected-metadata-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-injected-metadata-browser plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index c39204be565b9..e5fde4fca46e0 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index c2664520f5a8c..4bd8571aa5858 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-logging-server plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index cc3af53be3195..452fb9a6deda9 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-logging-server-internal plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 535d4d3a932b5..93254645d2cc1 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-logging-server-mocks plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 5f379191fe282..50ace4e85197f 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-theme-browser plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 2162544a05f48..1d7f02a176b3e 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 95f2e776c80e5..bd979a55a7b96 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/crypto plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index c3811fd412a2e..2873ceafac55f 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/datemath plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index f585bdc573c75..a4686de799c9d 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-cli-errors plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index e30cdaa95acac..9247656496398 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-cli-runner plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index 46fa0a53d918f..86b45e3b28215 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-proc-runner plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 1e5f7b4f3af51..3fa3295fe605d 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index a593ea5035957..abb751f0b8964 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/doc-links plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 08ffcde971221..c1d0ef70fb894 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/docs-utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 4ff0302d119ec..a65bbce6b7df5 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/es-archiver plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_es_query.devdocs.json b/api_docs/kbn_es_query.devdocs.json index 1a606a88de0cc..e0ccdcdb9b813 100644 --- a/api_docs/kbn_es_query.devdocs.json +++ b/api_docs/kbn_es_query.devdocs.json @@ -1070,7 +1070,15 @@ "section": "def-common.DataViewBase", "text": "DataViewBase" }, - " | undefined, ignoreFilterIfFieldNotInIndex?: boolean) => ", + " | undefined, { ignoreFilterIfFieldNotInIndex, nestedIgnoreUnmapped }?: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.EsQueryFiltersConfig", + "text": "EsQueryFiltersConfig" + }, + ") => ", { "pluginId": "@kbn/es-query", "scope": "common", @@ -1127,14 +1135,18 @@ { "parentPluginId": "@kbn/es-query", "id": "def-common.buildQueryFromFilters.$3", - "type": "boolean", + "type": "Object", "tags": [], - "label": "ignoreFilterIfFieldNotInIndex", - "description": [ - "by default filters that use fields that can't be found in the specified index pattern are not applied. Set this to true if you want to apply them anyway." - ], + "label": "{ ignoreFilterIfFieldNotInIndex = false, nestedIgnoreUnmapped }", + "description": [], "signature": [ - "boolean" + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.EsQueryFiltersConfig", + "text": "EsQueryFiltersConfig" + } ], "path": "packages/kbn-es-query/src/es_query/from_filters.ts", "deprecated": false, @@ -3351,6 +3363,51 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/es-query", + "id": "def-common.EsQueryFiltersConfig", + "type": "Interface", + "tags": [], + "label": "EsQueryFiltersConfig", + "description": [ + "\nOptions for building query for filters" + ], + "path": "packages/kbn-es-query/src/es_query/from_filters.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/es-query", + "id": "def-common.EsQueryFiltersConfig.ignoreFilterIfFieldNotInIndex", + "type": "CompoundType", + "tags": [], + "label": "ignoreFilterIfFieldNotInIndex", + "description": [ + "\nby default filters that use fields that can't be found in the specified index pattern are not applied. Set this to true if you want to apply them anyway." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-es-query/src/es_query/from_filters.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/es-query", + "id": "def-common.EsQueryFiltersConfig.nestedIgnoreUnmapped", + "type": "CompoundType", + "tags": [], + "label": "nestedIgnoreUnmapped", + "description": [ + "\nthe nested field type requires a special query syntax, which includes an optional ignore_unmapped parameter that indicates whether to ignore an unmapped path and not return any documents instead of an error.\nThe optional ignore_unmapped parameter defaults to false.\nThis `nestedIgnoreUnmapped` param allows creating queries with \"ignore_unmapped\": true" + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-es-query/src/es_query/from_filters.ts", + "deprecated": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/es-query", "id": "def-common.FilterCompareOptions", @@ -3607,6 +3664,21 @@ ], "path": "packages/kbn-es-query/src/kuery/types.ts", "deprecated": false + }, + { + "parentPluginId": "@kbn/es-query", + "id": "def-common.KueryQueryOptions.nestedIgnoreUnmapped", + "type": "CompoundType", + "tags": [], + "label": "nestedIgnoreUnmapped", + "description": [ + "\nthe Nested field type requires a special query syntax, which includes an optional ignore_unmapped parameter that indicates whether to ignore an unmapped path and not return any documents instead of an error.\nThe optional ignore_unmapped parameter defaults to false.\nThe `nestedIgnoreUnmapped` param allows creating queries with \"ignore_unmapped\": true" + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-es-query/src/kuery/types.ts", + "deprecated": false } ], "initialIsOpen": false @@ -3891,9 +3963,17 @@ "section": "def-common.KueryQueryOptions", "text": "KueryQueryOptions" }, - " & { allowLeadingWildcards: boolean; queryStringOptions: ", + " & ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.EsQueryFiltersConfig", + "text": "EsQueryFiltersConfig" + }, + " & { allowLeadingWildcards?: boolean | undefined; queryStringOptions?: ", "SerializableRecord", - "; ignoreFilterIfFieldNotInIndex: boolean; }" + " | undefined; }" ], "path": "packages/kbn-es-query/src/es_query/build_es_query.ts", "deprecated": false, diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 63b6540345873..c71f7ac7ce64c 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/es-query plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 209 | 1 | 158 | 11 | +| 213 | 1 | 159 | 11 | ## Common diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 5380651f5a379..79cedb14c81e1 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/eslint-plugin-imports plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index f7e83c49e3531..79219f14c9a80 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/field-types plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index a060876ef8294..d74690a25741d 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/find-used-node-modules plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index f6dc380c6eb57..d0a9254642187 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/generate plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 2f6eb81c13c6e..ebb98181a03e3 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/handlebars plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index ae11aab2ae80e..924a77a4dc73c 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/i18n plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 8330b2ec0d1ad..689395ca46f78 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/import-resolver plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 7b06cbd48ba6a..9f6abcfed25a9 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/interpreter plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index d57be8829be1c..c85e1c5161d3a 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/io-ts-utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index c6aefbd3a2a73..10d09ba774ead 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/jest-serializers plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_kibana_json_schema.mdx b/api_docs/kbn_kibana_json_schema.mdx index f666a6a35d16d..1c27bd1550d86 100644 --- a/api_docs/kbn_kibana_json_schema.mdx +++ b/api_docs/kbn_kibana_json_schema.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-json-schema title: "@kbn/kibana-json-schema" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/kibana-json-schema plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-json-schema'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 748ca8964b47e..a10e412bf4f01 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/logging plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 116a3e5bfb5a3..143b29a9f865d 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/logging-mocks plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 305bce79f7a17..fa1f9f2c6ec41 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/mapbox-gl plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 28f3452aa0801..bc92c78f29686 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/monaco plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index ce97dea91ec10..bb27ae64cb91a 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/optimizer plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 19a148f1b9a64..e484f0ead7a58 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 70f66a8d84e60..5359b6d6ca332 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_plugin_discovery.mdx b/api_docs/kbn_plugin_discovery.mdx index 06e9bfecbf28b..5a84642278865 100644 --- a/api_docs/kbn_plugin_discovery.mdx +++ b/api_docs/kbn_plugin_discovery.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-discovery title: "@kbn/plugin-discovery" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-discovery plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-discovery'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 4d156a34493ca..a134aaa626f0e 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-generator plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index f96db886af8ee..8c8c853b9d0ab 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-helpers plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_pm.mdx b/api_docs/kbn_pm.mdx index 1e8d2e041ad8c..8903529981b99 100644 --- a/api_docs/kbn_pm.mdx +++ b/api_docs/kbn_pm.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-pm title: "@kbn/pm" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/pm plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/pm'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 21a881b8c9e94..97eaa4abd5079 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/react-field plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index bca0097fd340c..f5b53a4c08a99 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/rule-data-utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_scalability_simulation_generator.mdx b/api_docs/kbn_scalability_simulation_generator.mdx index 99e0436572c4c..9a7b205f79ab6 100644 --- a/api_docs/kbn_scalability_simulation_generator.mdx +++ b/api_docs/kbn_scalability_simulation_generator.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-scalability-simulation-generator title: "@kbn/scalability-simulation-generator" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/scalability-simulation-generator plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scalability-simulation-generator'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index befdcbf244df1..d9159b8c1b379 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_es_utils.devdocs.json b/api_docs/kbn_securitysolution_es_utils.devdocs.json index 4f614b716c4d1..45c476c002e50 100644 --- a/api_docs/kbn_securitysolution_es_utils.devdocs.json +++ b/api_docs/kbn_securitysolution_es_utils.devdocs.json @@ -582,9 +582,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; Internal: ", "default", @@ -1824,9 +1824,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; Internal: ", "default", diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 14e3623c1d2f1..944f24b63a6cc 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-es-utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index a5d22f2856471..d8a77eaeeb160 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index b6dbcd138101b..1c3ec9f3c5fa4 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 9b722a3e50c54..0535b4655d6dd 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index c28cef5e556ac..209109867e772 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 986209b3533f0..cf783c9e2a9d7 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index c3df2a70c2ca5..4d54305c25a01 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-api plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index e7bc1ce950efa..d60c93054faec 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-constants plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index aaf737e4d5b00..e7a4be15ba900 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index d4ac078abbad4..548d3a6826a9f 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index c3075b99ee570..24e05f4952126 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-rules plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 629e39084edf0..ff18a7f3135c7 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-t-grid plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 37ec345bcef94..186f5106c9ecc 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index e283d62175b26..1bd0fc10274f0 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/server-http-tools plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 42035384c3d57..ea8349c280bf2 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/server-route-repository plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_button_toolbar.devdocs.json b/api_docs/kbn_shared_ux_button_toolbar.devdocs.json new file mode 100644 index 0000000000000..692a5abd289b6 --- /dev/null +++ b/api_docs/kbn_shared_ux_button_toolbar.devdocs.json @@ -0,0 +1,410 @@ +{ + "id": "@kbn/shared-ux-button-toolbar", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.AddFromLibraryButton", + "type": "Function", + "tags": [], + "label": "AddFromLibraryButton", + "description": [ + "\nA button that acts to add an item from the library to a solution, typically through a modal." + ], + "signature": [ + "({ onClick, ...rest }: ", + { + "pluginId": "@kbn/shared-ux-button-toolbar", + "scope": "common", + "docId": "kibKbnSharedUxButtonToolbarPluginApi", + "section": "def-common.Props", + "text": "Props" + }, + ") => JSX.Element" + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/add_from_library/add_from_library.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.AddFromLibraryButton.$1", + "type": "Object", + "tags": [], + "label": "{ onClick, ...rest }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/shared-ux-button-toolbar", + "scope": "common", + "docId": "kibKbnSharedUxButtonToolbarPluginApi", + "section": "def-common.Props", + "text": "Props" + } + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/add_from_library/add_from_library.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.IconButtonGroup", + "type": "Function", + "tags": [], + "label": "IconButtonGroup", + "description": [ + "\nA group of buttons each performing an action, represented by an icon." + ], + "signature": [ + "({ buttons, legend }: ", + { + "pluginId": "@kbn/shared-ux-button-toolbar", + "scope": "common", + "docId": "kibKbnSharedUxButtonToolbarPluginApi", + "section": "def-common.Props", + "text": "Props" + }, + ") => JSX.Element" + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/icon_button_group/icon_button_group.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.IconButtonGroup.$1", + "type": "Object", + "tags": [], + "label": "{ buttons, legend }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/shared-ux-button-toolbar", + "scope": "common", + "docId": "kibKbnSharedUxButtonToolbarPluginApi", + "section": "def-common.Props", + "text": "Props" + } + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/icon_button_group/icon_button_group.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.PrimaryButton", + "type": "Function", + "tags": [], + "label": "PrimaryButton", + "description": [ + "\nA primary action button, usually appearing first in the toolbar." + ], + "signature": [ + "({ label, iconSide, ...rest }: ", + { + "pluginId": "@kbn/shared-ux-button-toolbar", + "scope": "common", + "docId": "kibKbnSharedUxButtonToolbarPluginApi", + "section": "def-common.Props", + "text": "Props" + }, + ") => JSX.Element" + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/primary/primary.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.PrimaryButton.$1", + "type": "Object", + "tags": [], + "label": "{ label, iconSide = 'left', ...rest }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/shared-ux-button-toolbar", + "scope": "common", + "docId": "kibKbnSharedUxButtonToolbarPluginApi", + "section": "def-common.Props", + "text": "Props" + } + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/primary/primary.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.ToolbarPopover", + "type": "Function", + "tags": [], + "label": "ToolbarPopover", + "description": [ + "\nA button which opens a popover of additional actions within the toolbar." + ], + "signature": [ + "({ label, iconType, children, iconSide, ...popover }: ", + { + "pluginId": "@kbn/shared-ux-button-toolbar", + "scope": "common", + "docId": "kibKbnSharedUxButtonToolbarPluginApi", + "section": "def-common.Props", + "text": "Props" + }, + ") => JSX.Element" + ], + "path": "packages/shared-ux/button_toolbar/src/popover/popover.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.ToolbarPopover.$1", + "type": "CompoundType", + "tags": [], + "label": "{ label, iconType, children, iconSide, ...popover }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/shared-ux-button-toolbar", + "scope": "common", + "docId": "kibKbnSharedUxButtonToolbarPluginApi", + "section": "def-common.Props", + "text": "Props" + } + ], + "path": "packages/shared-ux/button_toolbar/src/popover/popover.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.IconButton", + "type": "Interface", + "tags": [], + "label": "IconButton", + "description": [ + "\nAn interface representing a single icon button in the `IconButtonGroup`." + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/icon_button_group/icon_button_group.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.IconButton.label", + "type": "string", + "tags": [], + "label": "label", + "description": [ + "The accessible button label." + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/icon_button_group/icon_button_group.tsx", + "deprecated": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.IconButton.iconType", + "type": "CompoundType", + "tags": [], + "label": "iconType", + "description": [ + "EUI `IconType` to display." + ], + "signature": [ + "string | React.ComponentType<{}>" + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/icon_button_group/icon_button_group.tsx", + "deprecated": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.IconButton.onClick", + "type": "Function", + "tags": [], + "label": "onClick", + "description": [ + "Handler for button click." + ], + "signature": [ + "() => void" + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/icon_button_group/icon_button_group.tsx", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.IconButton.title", + "type": "string", + "tags": [], + "label": "title", + "description": [ + "HTML `title` attribute for tooltips if different from `label`" + ], + "signature": [ + "string | undefined" + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/icon_button_group/icon_button_group.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.Props", + "type": "Interface", + "tags": [], + "label": "Props", + "description": [ + "\nProps for `IconButtonGroup`." + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/icon_button_group/icon_button_group.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.Props.legend", + "type": "string", + "tags": [], + "label": "legend", + "description": [ + "Required accessible legend for the whole group" + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/icon_button_group/icon_button_group.tsx", + "deprecated": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.Props.buttons", + "type": "Array", + "tags": [], + "label": "buttons", + "description": [ + "Array of `IconButton`" + ], + "signature": [ + { + "pluginId": "@kbn/shared-ux-button-toolbar", + "scope": "common", + "docId": "kibKbnSharedUxButtonToolbarPluginApi", + "section": "def-common.IconButton", + "text": "IconButton" + }, + "[]" + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/icon_button_group/icon_button_group.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.Props", + "type": "Interface", + "tags": [], + "label": "Props", + "description": [ + "\nProps for `PrimaryButton`." + ], + "signature": [ + { + "pluginId": "@kbn/shared-ux-button-toolbar", + "scope": "common", + "docId": "kibKbnSharedUxButtonToolbarPluginApi", + "section": "def-common.Props", + "text": "Props" + }, + " extends Pick<", + "EuiButtonPropsForButton", + ", \"onClick\" | \"iconType\" | \"iconSide\">" + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/primary/primary.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.Props.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/shared-ux/button_toolbar/src/buttons/primary/primary.tsx", + "deprecated": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.Props", + "type": "Type", + "tags": [], + "label": "Props", + "description": [], + "signature": [ + "{ onClick?: React.MouseEventHandler | undefined; iconSide?: ", + "ButtonContentIconSide", + " | undefined; }" + ], + "path": "packages/shared-ux/button_toolbar/src/buttons/add_from_library/add_from_library.tsx", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-button-toolbar", + "id": "def-common.Props", + "type": "Type", + "tags": [], + "label": "Props", + "description": [ + "\nProps for `ToolbarPopover`." + ], + "signature": [ + "AllowedButtonProps & AllowedPopoverProps & { children: (arg: { closePopover: () => void; }) => React.ReactNode; }" + ], + "path": "packages/shared-ux/button_toolbar/src/popover/popover.tsx", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx new file mode 100644 index 0000000000000..b0bf3309241cd --- /dev/null +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -0,0 +1,33 @@ +--- +id: kibKbnSharedUxButtonToolbarPluginApi +slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar +title: "@kbn/shared-ux-button-toolbar" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/shared-ux-button-toolbar plugin +date: 2022-06-22 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 20 | 0 | 6 | 0 | + +## Common + +### Functions + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_shared_ux_card_no_data.devdocs.json b/api_docs/kbn_shared_ux_card_no_data.devdocs.json new file mode 100644 index 0000000000000..371081ba2eb8b --- /dev/null +++ b/api_docs/kbn_shared_ux_card_no_data.devdocs.json @@ -0,0 +1,477 @@ +{ + "id": "@kbn/shared-ux-card-no-data", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.getMockServices", + "type": "Function", + "tags": [], + "label": "getMockServices", + "description": [ + "\nReturns the Jest-compatible service abstractions for the `NoDataCard` Provider." + ], + "signature": [ + "(params?: ", + "Params", + " | undefined) => ", + { + "pluginId": "@kbn/shared-ux-card-no-data", + "scope": "common", + "docId": "kibKbnSharedUxCardNoDataPluginApi", + "section": "def-common.NoDataCardServices", + "text": "NoDataCardServices" + } + ], + "path": "packages/shared-ux/card/no_data/src/mocks.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.getMockServices.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "Params", + " | undefined" + ], + "path": "packages/shared-ux/card/no_data/src/mocks.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.getStoryArgTypes", + "type": "Function", + "tags": [], + "label": "getStoryArgTypes", + "description": [ + "\nReturns the Storybook arguments for `NoDataCard`, for its stories and for\nconsuming component stories." + ], + "signature": [ + "() => { canAccessFleet: { control: string; defaultValue: boolean; }; category: { control: { type: string; }; defaultValue: string; }; title: { control: { type: string; }; defaultValue: string; }; description: { control: { type: string; }; defaultValue: string; }; button: { control: { type: string; }; defaultValue: string; }; }" + ], + "path": "packages/shared-ux/card/no_data/src/mocks.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.getStoryServices", + "type": "Function", + "tags": [], + "label": "getStoryServices", + "description": [ + "\nReturns Storybook-compatible service abstractions for the `NoDataCard` Provider." + ], + "signature": [ + "(params: ", + "Params", + ") => ", + { + "pluginId": "@kbn/shared-ux-card-no-data", + "scope": "common", + "docId": "kibKbnSharedUxCardNoDataPluginApi", + "section": "def-common.NoDataCardServices", + "text": "NoDataCardServices" + } + ], + "path": "packages/shared-ux/card/no_data/src/mocks.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.getStoryServices.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "Params" + ], + "path": "packages/shared-ux/card/no_data/src/mocks.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.NoDataCard", + "type": "Function", + "tags": [], + "label": "NoDataCard", + "description": [], + "signature": [ + "({ href: srcHref, category, description, ...props }: ", + { + "pluginId": "@kbn/shared-ux-card-no-data", + "scope": "common", + "docId": "kibKbnSharedUxCardNoDataPluginApi", + "section": "def-common.Props", + "text": "Props" + }, + ") => JSX.Element" + ], + "path": "packages/shared-ux/card/no_data/src/no_data_card.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.NoDataCard.$1", + "type": "Object", + "tags": [], + "label": "{ href: srcHref, category, description, ...props }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/shared-ux-card-no-data", + "scope": "common", + "docId": "kibKbnSharedUxCardNoDataPluginApi", + "section": "def-common.Props", + "text": "Props" + } + ], + "path": "packages/shared-ux/card/no_data/src/no_data_card.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.NoDataCardKibanaProvider", + "type": "Function", + "tags": [], + "label": "NoDataCardKibanaProvider", + "description": [ + "\nKibana-specific Provider that maps dependencies to services." + ], + "signature": [ + "({ children, ...dependencies }: React.PropsWithChildren<", + { + "pluginId": "@kbn/shared-ux-card-no-data", + "scope": "common", + "docId": "kibKbnSharedUxCardNoDataPluginApi", + "section": "def-common.NoDataCardKibanaDependencies", + "text": "NoDataCardKibanaDependencies" + }, + ">) => JSX.Element" + ], + "path": "packages/shared-ux/card/no_data/src/services.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.NoDataCardKibanaProvider.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n children,\n ...dependencies\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "@kbn/shared-ux-card-no-data", + "scope": "common", + "docId": "kibKbnSharedUxCardNoDataPluginApi", + "section": "def-common.NoDataCardKibanaDependencies", + "text": "NoDataCardKibanaDependencies" + }, + ">" + ], + "path": "packages/shared-ux/card/no_data/src/services.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.NoDataCardProvider", + "type": "Function", + "tags": [], + "label": "NoDataCardProvider", + "description": [ + "\nA Context Provider that provides services to the component and its dependencies." + ], + "signature": [ + "({ children, ...services }: React.PropsWithChildren<", + { + "pluginId": "@kbn/shared-ux-card-no-data", + "scope": "common", + "docId": "kibKbnSharedUxCardNoDataPluginApi", + "section": "def-common.NoDataCardServices", + "text": "NoDataCardServices" + }, + ">) => JSX.Element" + ], + "path": "packages/shared-ux/card/no_data/src/services.tsx", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.NoDataCardProvider.$1", + "type": "CompoundType", + "tags": [], + "label": "{ children, ...services }", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "@kbn/shared-ux-card-no-data", + "scope": "common", + "docId": "kibKbnSharedUxCardNoDataPluginApi", + "section": "def-common.NoDataCardServices", + "text": "NoDataCardServices" + }, + ">" + ], + "path": "packages/shared-ux/card/no_data/src/services.tsx", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.NoDataCardKibanaDependencies", + "type": "Type", + "tags": [], + "label": "NoDataCardKibanaDependencies", + "description": [ + "\nAn interface containing a collection of Kibana plugins and services required to\nrender this component as well as its dependencies." + ], + "signature": [ + "KibanaDependencies & ", + "RedirectAppLinksKibanaDependencies" + ], + "path": "packages/shared-ux/card/no_data/src/services.tsx", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.NoDataCardServices", + "type": "Type", + "tags": [], + "label": "NoDataCardServices", + "description": [ + "\nServices that are consumed by this component and its dependencies." + ], + "signature": [ + "Services & ", + "RedirectAppLinksServices" + ], + "path": "packages/shared-ux/card/no_data/src/services.tsx", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/shared-ux-card-no-data", + "id": "def-common.Props", + "type": "Type", + "tags": [], + "label": "Props", + "description": [], + "signature": [ + "{ children?: React.ReactNode; icon?: React.ReactElement<", + "EuiIconProps", + ", string | React.JSXElementConstructor> | null | undefined; image?: string | React.ReactElement> | undefined; className?: string | undefined; title?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; onChange?: React.FormEventHandler | undefined; onKeyDown?: React.KeyboardEventHandler | undefined; onClick?: React.MouseEventHandler | undefined; id?: string | undefined; description?: React.ReactNode; security?: string | undefined; defaultValue?: string | number | readonly string[] | undefined; hidden?: boolean | undefined; lang?: string | undefined; onError?: React.ReactEventHandler | undefined; category?: string | undefined; defaultChecked?: boolean | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; accessKey?: string | undefined; contentEditable?: Booleanish | \"inherit\" | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; placeholder?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: React.CSSProperties | undefined; tabIndex?: number | undefined; translate?: \"yes\" | \"no\" | undefined; radioGroup?: string | undefined; role?: React.AriaRole | undefined; about?: string | undefined; datatype?: string | undefined; inlist?: any; prefix?: string | undefined; property?: string | undefined; resource?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; unselectable?: \"on\" | \"off\" | undefined; inputMode?: \"none\" | \"email\" | \"search\" | \"text\" | \"tel\" | \"url\" | \"numeric\" | \"decimal\" | undefined; is?: string | undefined; 'aria-activedescendant'?: string | undefined; 'aria-atomic'?: boolean | \"true\" | \"false\" | undefined; 'aria-autocomplete'?: \"none\" | \"list\" | \"inline\" | \"both\" | undefined; 'aria-busy'?: boolean | \"true\" | \"false\" | undefined; 'aria-checked'?: boolean | \"mixed\" | \"true\" | \"false\" | undefined; 'aria-colcount'?: number | undefined; 'aria-colindex'?: number | undefined; 'aria-colspan'?: number | undefined; 'aria-controls'?: string | undefined; 'aria-current'?: boolean | \"date\" | \"page\" | \"time\" | \"true\" | \"false\" | \"step\" | \"location\" | undefined; 'aria-describedby'?: string | undefined; 'aria-details'?: string | undefined; 'aria-disabled'?: boolean | \"true\" | \"false\" | undefined; 'aria-dropeffect'?: \"none\" | \"copy\" | \"link\" | \"execute\" | \"move\" | \"popup\" | undefined; 'aria-errormessage'?: string | undefined; 'aria-expanded'?: boolean | \"true\" | \"false\" | undefined; 'aria-flowto'?: string | undefined; 'aria-grabbed'?: boolean | \"true\" | \"false\" | undefined; 'aria-haspopup'?: boolean | \"grid\" | \"menu\" | \"true\" | \"false\" | \"dialog\" | \"listbox\" | \"tree\" | undefined; 'aria-hidden'?: boolean | \"true\" | \"false\" | undefined; 'aria-invalid'?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\" | undefined; 'aria-keyshortcuts'?: string | undefined; 'aria-label'?: string | undefined; 'aria-labelledby'?: string | undefined; 'aria-level'?: number | undefined; 'aria-live'?: \"off\" | \"assertive\" | \"polite\" | undefined; 'aria-modal'?: boolean | \"true\" | \"false\" | undefined; 'aria-multiline'?: boolean | \"true\" | \"false\" | undefined; 'aria-multiselectable'?: boolean | \"true\" | \"false\" | undefined; 'aria-orientation'?: \"horizontal\" | \"vertical\" | undefined; 'aria-owns'?: string | undefined; 'aria-placeholder'?: string | undefined; 'aria-posinset'?: number | undefined; 'aria-pressed'?: boolean | \"mixed\" | \"true\" | \"false\" | undefined; 'aria-readonly'?: boolean | \"true\" | \"false\" | undefined; 'aria-relevant'?: \"all\" | \"text\" | \"additions\" | \"additions removals\" | \"additions text\" | \"removals\" | \"removals additions\" | \"removals text\" | \"text additions\" | \"text removals\" | undefined; 'aria-required'?: boolean | \"true\" | \"false\" | undefined; 'aria-roledescription'?: string | undefined; 'aria-rowcount'?: number | undefined; 'aria-rowindex'?: number | undefined; 'aria-rowspan'?: number | undefined; 'aria-selected'?: boolean | \"true\" | \"false\" | undefined; 'aria-setsize'?: number | undefined; 'aria-sort'?: \"none\" | \"other\" | \"ascending\" | \"descending\" | undefined; 'aria-valuemax'?: number | undefined; 'aria-valuemin'?: number | undefined; 'aria-valuenow'?: number | undefined; 'aria-valuetext'?: string | undefined; dangerouslySetInnerHTML?: { __html: string; } | undefined; onCopy?: React.ClipboardEventHandler | undefined; onCopyCapture?: React.ClipboardEventHandler | undefined; onCut?: React.ClipboardEventHandler | undefined; onCutCapture?: React.ClipboardEventHandler | undefined; onPaste?: React.ClipboardEventHandler | undefined; onPasteCapture?: React.ClipboardEventHandler | undefined; onCompositionEnd?: React.CompositionEventHandler | undefined; onCompositionEndCapture?: React.CompositionEventHandler | undefined; onCompositionStart?: React.CompositionEventHandler | undefined; onCompositionStartCapture?: React.CompositionEventHandler | undefined; onCompositionUpdate?: React.CompositionEventHandler | undefined; onCompositionUpdateCapture?: React.CompositionEventHandler | undefined; onFocus?: React.FocusEventHandler | undefined; onFocusCapture?: React.FocusEventHandler | undefined; onBlur?: React.FocusEventHandler | undefined; onBlurCapture?: React.FocusEventHandler | undefined; onChangeCapture?: React.FormEventHandler | undefined; onBeforeInput?: React.FormEventHandler | undefined; onBeforeInputCapture?: React.FormEventHandler | undefined; onInput?: React.FormEventHandler | undefined; onInputCapture?: React.FormEventHandler | undefined; onReset?: React.FormEventHandler | undefined; onResetCapture?: React.FormEventHandler | undefined; onSubmit?: React.FormEventHandler | undefined; onSubmitCapture?: React.FormEventHandler | undefined; onInvalid?: React.FormEventHandler | undefined; onInvalidCapture?: React.FormEventHandler | undefined; onLoad?: React.ReactEventHandler | undefined; onLoadCapture?: React.ReactEventHandler | undefined; onErrorCapture?: React.ReactEventHandler | undefined; onKeyDownCapture?: React.KeyboardEventHandler | undefined; onKeyPress?: React.KeyboardEventHandler | undefined; onKeyPressCapture?: React.KeyboardEventHandler | undefined; onKeyUp?: React.KeyboardEventHandler | undefined; onKeyUpCapture?: React.KeyboardEventHandler | undefined; onAbort?: React.ReactEventHandler | undefined; onAbortCapture?: React.ReactEventHandler | undefined; onCanPlay?: React.ReactEventHandler | undefined; onCanPlayCapture?: React.ReactEventHandler | undefined; onCanPlayThrough?: React.ReactEventHandler | undefined; onCanPlayThroughCapture?: React.ReactEventHandler | undefined; onDurationChange?: React.ReactEventHandler | undefined; onDurationChangeCapture?: React.ReactEventHandler | undefined; onEmptied?: React.ReactEventHandler | undefined; onEmptiedCapture?: React.ReactEventHandler | undefined; onEncrypted?: React.ReactEventHandler | undefined; onEncryptedCapture?: React.ReactEventHandler | undefined; onEnded?: React.ReactEventHandler | undefined; onEndedCapture?: React.ReactEventHandler | undefined; onLoadedData?: React.ReactEventHandler | undefined; onLoadedDataCapture?: React.ReactEventHandler | undefined; onLoadedMetadata?: React.ReactEventHandler | undefined; onLoadedMetadataCapture?: React.ReactEventHandler | undefined; onLoadStart?: React.ReactEventHandler | undefined; onLoadStartCapture?: React.ReactEventHandler | undefined; onPause?: React.ReactEventHandler | undefined; onPauseCapture?: React.ReactEventHandler | undefined; onPlay?: React.ReactEventHandler | undefined; onPlayCapture?: React.ReactEventHandler | undefined; onPlaying?: React.ReactEventHandler | undefined; onPlayingCapture?: React.ReactEventHandler | undefined; onProgress?: React.ReactEventHandler | undefined; onProgressCapture?: React.ReactEventHandler | undefined; onRateChange?: React.ReactEventHandler | undefined; onRateChangeCapture?: React.ReactEventHandler | undefined; onSeeked?: React.ReactEventHandler | undefined; onSeekedCapture?: React.ReactEventHandler | undefined; onSeeking?: React.ReactEventHandler | undefined; onSeekingCapture?: React.ReactEventHandler | undefined; onStalled?: React.ReactEventHandler | undefined; onStalledCapture?: React.ReactEventHandler | undefined; onSuspend?: React.ReactEventHandler | undefined; onSuspendCapture?: React.ReactEventHandler | undefined; onTimeUpdate?: React.ReactEventHandler | undefined; onTimeUpdateCapture?: React.ReactEventHandler | undefined; onVolumeChange?: React.ReactEventHandler | undefined; onVolumeChangeCapture?: React.ReactEventHandler | undefined; onWaiting?: React.ReactEventHandler | undefined; onWaitingCapture?: React.ReactEventHandler | undefined; onAuxClick?: React.MouseEventHandler | undefined; onAuxClickCapture?: React.MouseEventHandler | undefined; onClickCapture?: React.MouseEventHandler | undefined; onContextMenu?: React.MouseEventHandler | undefined; onContextMenuCapture?: React.MouseEventHandler | undefined; onDoubleClick?: React.MouseEventHandler | undefined; onDoubleClickCapture?: React.MouseEventHandler | undefined; onDrag?: React.DragEventHandler | undefined; onDragCapture?: React.DragEventHandler | undefined; onDragEnd?: React.DragEventHandler | undefined; onDragEndCapture?: React.DragEventHandler | undefined; onDragEnter?: React.DragEventHandler | undefined; onDragEnterCapture?: React.DragEventHandler | undefined; onDragExit?: React.DragEventHandler | undefined; onDragExitCapture?: React.DragEventHandler | undefined; onDragLeave?: React.DragEventHandler | undefined; onDragLeaveCapture?: React.DragEventHandler | undefined; onDragOver?: React.DragEventHandler | undefined; onDragOverCapture?: React.DragEventHandler | undefined; onDragStart?: React.DragEventHandler | undefined; onDragStartCapture?: React.DragEventHandler | undefined; onDrop?: React.DragEventHandler | undefined; onDropCapture?: React.DragEventHandler | undefined; onMouseDown?: React.MouseEventHandler | undefined; onMouseDownCapture?: React.MouseEventHandler | undefined; onMouseEnter?: React.MouseEventHandler | undefined; onMouseLeave?: React.MouseEventHandler | undefined; onMouseMove?: React.MouseEventHandler | undefined; onMouseMoveCapture?: React.MouseEventHandler | undefined; onMouseOut?: React.MouseEventHandler | undefined; onMouseOutCapture?: React.MouseEventHandler | undefined; onMouseOver?: React.MouseEventHandler | undefined; onMouseOverCapture?: React.MouseEventHandler | undefined; onMouseUp?: React.MouseEventHandler | undefined; onMouseUpCapture?: React.MouseEventHandler | undefined; onSelect?: React.ReactEventHandler | undefined; onSelectCapture?: React.ReactEventHandler | undefined; onTouchCancel?: React.TouchEventHandler | undefined; onTouchCancelCapture?: React.TouchEventHandler | undefined; onTouchEnd?: React.TouchEventHandler | undefined; onTouchEndCapture?: React.TouchEventHandler | undefined; onTouchMove?: React.TouchEventHandler | undefined; onTouchMoveCapture?: React.TouchEventHandler | undefined; onTouchStart?: React.TouchEventHandler | undefined; onTouchStartCapture?: React.TouchEventHandler | undefined; onPointerDown?: React.PointerEventHandler | undefined; onPointerDownCapture?: React.PointerEventHandler | undefined; onPointerMove?: React.PointerEventHandler | undefined; onPointerMoveCapture?: React.PointerEventHandler | undefined; onPointerUp?: React.PointerEventHandler | undefined; onPointerUpCapture?: React.PointerEventHandler | undefined; onPointerCancel?: React.PointerEventHandler | undefined; onPointerCancelCapture?: React.PointerEventHandler | undefined; onPointerEnter?: React.PointerEventHandler | undefined; onPointerEnterCapture?: React.PointerEventHandler | undefined; onPointerLeave?: React.PointerEventHandler | undefined; onPointerLeaveCapture?: React.PointerEventHandler | undefined; onPointerOver?: React.PointerEventHandler | undefined; onPointerOverCapture?: React.PointerEventHandler | undefined; onPointerOut?: React.PointerEventHandler | undefined; onPointerOutCapture?: React.PointerEventHandler | undefined; onGotPointerCapture?: React.PointerEventHandler | undefined; onGotPointerCaptureCapture?: React.PointerEventHandler | undefined; onLostPointerCapture?: React.PointerEventHandler | undefined; onLostPointerCaptureCapture?: React.PointerEventHandler | undefined; onScroll?: React.UIEventHandler | undefined; onScrollCapture?: React.UIEventHandler | undefined; onWheel?: React.WheelEventHandler | undefined; onWheelCapture?: React.WheelEventHandler | undefined; onAnimationStart?: React.AnimationEventHandler | undefined; onAnimationStartCapture?: React.AnimationEventHandler | undefined; onAnimationEnd?: React.AnimationEventHandler | undefined; onAnimationEndCapture?: React.AnimationEventHandler | undefined; onAnimationIteration?: React.AnimationEventHandler | undefined; onAnimationIterationCapture?: React.AnimationEventHandler | undefined; onTransitionEnd?: React.TransitionEventHandler | undefined; onTransitionEndCapture?: React.TransitionEventHandler | undefined; 'data-test-subj'?: string | undefined; button?: React.ReactNode; href?: string | undefined; rel?: string | undefined; target?: string | undefined; paddingSize?: \"none\" | \"m\" | \"s\" | \"xs\" | \"l\" | \"xl\" | undefined; footer?: React.ReactNode; hasBorder?: boolean | undefined; textAlign?: CardAlignment | undefined; titleElement?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"span\" | undefined; titleSize?: \"s\" | \"xs\" | undefined; betaBadgeProps?: Partial<(", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", + "DisambiguateSet", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">), WithSpanProps> & WithSpanProps & { iconType?: ", + "IconType", + " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", + "ToolTipPositions", + " | undefined; title?: string | undefined; color?: \"subdued\" | \"accent\" | \"hollow\" | undefined; size?: ", + "BetaBadgeSize", + " | undefined; } & ", + "DisambiguateSet", + " & LabelAsString) | (", + "CommonProps", + " & ", + "DisambiguateSet", + "<(", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", + "DisambiguateSet", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">), WithSpanProps> & WithSpanProps & { iconType?: ", + "IconType", + " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", + "ToolTipPositions", + " | undefined; title?: string | undefined; color?: \"subdued\" | \"accent\" | \"hollow\" | undefined; size?: ", + "BetaBadgeSize", + " | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }) | (", + "CommonProps", + " & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", + "DisambiguateSet", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\"> & { iconType?: ", + "IconType", + " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", + "ToolTipPositions", + " | undefined; title?: string | undefined; color?: \"subdued\" | \"accent\" | \"hollow\" | undefined; size?: ", + "BetaBadgeSize", + " | undefined; } & ", + "DisambiguateSet", + " & LabelAsString) | (", + "CommonProps", + " & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", + "DisambiguateSet", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\"> & { iconType?: ", + "IconType", + " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", + "ToolTipPositions", + " | undefined; title?: string | undefined; color?: \"subdued\" | \"accent\" | \"hollow\" | undefined; size?: ", + "BetaBadgeSize", + " | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }) | (", + "CommonProps", + " & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", + "DisambiguateSet", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\"> & { iconType?: ", + "IconType", + " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", + "ToolTipPositions", + " | undefined; title?: string | undefined; color?: \"subdued\" | \"accent\" | \"hollow\" | undefined; size?: ", + "BetaBadgeSize", + " | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; }) | (", + "CommonProps", + " & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", + "DisambiguateSet", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", + "DisambiguateSet", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\"> & { iconType?: ", + "IconType", + " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", + "ToolTipPositions", + " | undefined; title?: string | undefined; color?: \"subdued\" | \"accent\" | \"hollow\" | undefined; size?: ", + "BetaBadgeSize", + " | undefined; } & ", + "DisambiguateSet", + " & LabelAsString) | (", + "CommonProps", + " & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", + "DisambiguateSet", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", + "DisambiguateSet", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\"> & { iconType?: ", + "IconType", + " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", + "ToolTipPositions", + " | undefined; title?: string | undefined; color?: \"subdued\" | \"accent\" | \"hollow\" | undefined; size?: ", + "BetaBadgeSize", + " | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ title: string; tooltipContent?: React.ReactNode; }, { tooltipContent: React.ReactNode; title?: string | undefined; }> & { tooltipContent: React.ReactNode; title?: string | undefined; } & { label: React.ReactNode; }) | (", + "CommonProps", + " & ", + "DisambiguateSet", + " & { href: string; target?: string | undefined; rel?: string | undefined; } & Omit, \"color\" | \"onClick\" | \"href\">) | (", + "DisambiguateSet", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\">)> & ", + "DisambiguateSet", + " & { onClick?: React.MouseEventHandler | undefined; onClickAriaLabel?: string | undefined; } & Omit, \"color\" | \"onClick\"> & { iconType?: ", + "IconType", + " | undefined; label: React.ReactNode; tooltipContent?: React.ReactNode; tooltipPosition?: ", + "ToolTipPositions", + " | undefined; title?: string | undefined; color?: \"subdued\" | \"accent\" | \"hollow\" | undefined; size?: ", + "BetaBadgeSize", + " | undefined; } & ", + "DisambiguateSet", + " & ", + "DisambiguateSet", + "<{ tooltipContent: React.ReactNode; title?: string | undefined; }, { title: string; tooltipContent?: React.ReactNode; }> & { title: string; tooltipContent?: React.ReactNode; } & { label: React.ReactNode; })> | undefined; display?: \"subdued\" | \"primary\" | \"accent\" | \"success\" | \"warning\" | \"danger\" | \"transparent\" | \"plain\" | undefined; selectable?: ", + "EuiCardSelectProps", + " | undefined; }" + ], + "path": "packages/shared-ux/card/no_data/src/no_data_card.tsx", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx new file mode 100644 index 0000000000000..4927ef7d422a6 --- /dev/null +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -0,0 +1,30 @@ +--- +id: kibKbnSharedUxCardNoDataPluginApi +slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data +title: "@kbn/shared-ux-card-no-data" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/shared-ux-card-no-data plugin +date: 2022-06-22 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 14 | 0 | 7 | 1 | + +## Common + +### Functions + + +### Consts, variables and types + + diff --git a/api_docs/kbn_shared_ux_components.devdocs.json b/api_docs/kbn_shared_ux_components.devdocs.json index df8a0de2d0ff6..36b5a90b05801 100644 --- a/api_docs/kbn_shared_ux_components.devdocs.json +++ b/api_docs/kbn_shared_ux_components.devdocs.json @@ -19,72 +19,6 @@ "common": { "classes": [], "functions": [ - { - "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.AddFromLibraryButton", - "type": "Function", - "tags": [], - "label": "AddFromLibraryButton", - "description": [], - "signature": [ - "({ onClick, ...rest }: ", - "Props", - ") => JSX.Element" - ], - "path": "packages/kbn-shared-ux-components/src/toolbar/buttons/add_from_library/add_from_library.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.AddFromLibraryButton.$1", - "type": "Object", - "tags": [], - "label": "{ onClick, ...rest }", - "description": [], - "signature": [ - "Props" - ], - "path": "packages/kbn-shared-ux-components/src/toolbar/buttons/add_from_library/add_from_library.tsx", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.IconButtonGroup", - "type": "Function", - "tags": [], - "label": "IconButtonGroup", - "description": [], - "signature": [ - "({ buttons, legend }: ", - "Props", - ") => JSX.Element" - ], - "path": "packages/kbn-shared-ux-components/src/toolbar/buttons/icon_button_group/icon_button_group.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.IconButtonGroup.$1", - "type": "Object", - "tags": [], - "label": "{ buttons, legend }", - "description": [], - "signature": [ - "Props" - ], - "path": "packages/kbn-shared-ux-components/src/toolbar/buttons/icon_button_group/icon_button_group.tsx", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/shared-ux-components", "id": "def-common.KibanaPageTemplate", @@ -213,72 +147,6 @@ ], "returnComment": [], "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.ToolbarButton", - "type": "Function", - "tags": [], - "label": "ToolbarButton", - "description": [], - "signature": [ - "({ label, iconSide, ...rest }: ", - "Props", - ") => JSX.Element" - ], - "path": "packages/kbn-shared-ux-components/src/toolbar/buttons/primary/primary.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.ToolbarButton.$1", - "type": "Object", - "tags": [], - "label": "{ label, iconSide = 'left', ...rest }", - "description": [], - "signature": [ - "Props" - ], - "path": "packages/kbn-shared-ux-components/src/toolbar/buttons/primary/primary.tsx", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.ToolbarPopover", - "type": "Function", - "tags": [], - "label": "ToolbarPopover", - "description": [], - "signature": [ - "({ label, iconType, children, iconSide, ...popover }: ", - "Props", - ") => JSX.Element" - ], - "path": "packages/kbn-shared-ux-components/src/toolbar/popovers/popover.tsx", - "deprecated": false, - "children": [ - { - "parentPluginId": "@kbn/shared-ux-components", - "id": "def-common.ToolbarPopover.$1", - "type": "CompoundType", - "tags": [], - "label": "{ label, iconType, children, iconSide, ...popover }", - "description": [], - "signature": [ - "Props" - ], - "path": "packages/kbn-shared-ux-components/src/toolbar/popovers/popover.tsx", - "deprecated": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false } ], "interfaces": [ @@ -368,7 +236,7 @@ ], "signature": [ "{ [x: string]: ", - "ElasticAgentCardProps", + "NoDataCardProps", "; }" ], "path": "packages/kbn-shared-ux-components/src/page_template/no_data_page/types.ts", diff --git a/api_docs/kbn_shared_ux_components.mdx b/api_docs/kbn_shared_ux_components.mdx index bcc049c525f48..90f9d0da202d6 100644 --- a/api_docs/kbn_shared_ux_components.mdx +++ b/api_docs/kbn_shared_ux_components.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-components title: "@kbn/shared-ux-components" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-components plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-components'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 21 | 0 | 15 | 3 | +| 13 | 0 | 7 | 1 | ## Common diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.devdocs.json b/api_docs/kbn_shared_ux_page_analytics_no_data.devdocs.json index f4beb653b7af2..83b4b33fcbd5e 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.devdocs.json +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.devdocs.json @@ -188,7 +188,7 @@ "label": "getStoryArgTypes", "description": [], "signature": [ - "() => { canCreateNewDataView: { control: string; defaultValue: boolean; }; dataViewsDocLink: { options: (string | undefined)[]; control: { type: string; }; }; hasESData: { control: string; defaultValue: boolean; }; hasUserDataView: { control: string; defaultValue: boolean; }; kibanaGuideDocLink: { control: string; defaultValue: string; }; }" + "() => { canAccessFleet: { control: string; defaultValue: boolean; }; category: { control: { type: string; }; defaultValue: string; }; title: { control: { type: string; }; defaultValue: string; }; description: { control: { type: string; }; defaultValue: string; }; button: { control: { type: string; }; defaultValue: string; }; canCreateNewDataView: { control: string; defaultValue: boolean; }; dataViewsDocLink: { options: (string | undefined)[]; control: { type: string; }; }; hasESData: { control: string; defaultValue: boolean; }; hasUserDataView: { control: string; defaultValue: boolean; }; kibanaGuideDocLink: { control: string; defaultValue: string; }; }" ], "path": "packages/shared-ux/page/analytics_no_data/src/mocks.ts", "deprecated": false, diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index 480849798cd98..25263bf851522 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.devdocs.json b/api_docs/kbn_shared_ux_page_kibana_no_data.devdocs.json index d427025ca79b9..c8af7fe42f402 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.devdocs.json +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.devdocs.json @@ -72,7 +72,7 @@ "\nReturns the Storybook arguments for `KibanaNoDataPage`, for its stories for and for\nconsuming component stories." ], "signature": [ - "() => { canCreateNewDataView: { control: string; defaultValue: boolean; }; dataViewsDocLink: { options: (string | undefined)[]; control: { type: string; }; }; solution: { control: string; defaultValue: string; }; logo: { control: { type: string; }; options: (string | undefined)[]; defaultValue: undefined; }; hasESData: { control: string; defaultValue: boolean; }; hasUserDataView: { control: string; defaultValue: boolean; }; }" + "() => { canAccessFleet: { control: string; defaultValue: boolean; }; category: { control: { type: string; }; defaultValue: string; }; title: { control: { type: string; }; defaultValue: string; }; description: { control: { type: string; }; defaultValue: string; }; button: { control: { type: string; }; defaultValue: string; }; canCreateNewDataView: { control: string; defaultValue: boolean; }; dataViewsDocLink: { options: (string | undefined)[]; control: { type: string; }; }; solution: { control: string; defaultValue: string; }; logo: { control: { type: string; }; options: (string | undefined)[]; defaultValue: undefined; }; hasESData: { control: string; defaultValue: boolean; }; hasUserDataView: { control: string; defaultValue: boolean; }; }" ], "path": "packages/shared-ux/page/kibana_no_data/src/mocks.ts", "deprecated": false, diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index e47f5b9daf814..e88217dcefe35 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index 255b56f6a9dd8..b92aac33cf0aa 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_services.mdx b/api_docs/kbn_shared_ux_services.mdx index 14cd49894a5e7..f809536fb2f63 100644 --- a/api_docs/kbn_shared_ux_services.mdx +++ b/api_docs/kbn_shared_ux_services.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-services title: "@kbn/shared-ux-services" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-services plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-services'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_storybook.mdx b/api_docs/kbn_shared_ux_storybook.mdx index b405fd2cf9465..60f18e4f85447 100644 --- a/api_docs/kbn_shared_ux_storybook.mdx +++ b/api_docs/kbn_shared_ux_storybook.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook title: "@kbn/shared-ux-storybook" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-storybook plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 7decdcc305e7b..5dec81ad3ac9d 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-utility plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_sort_package_json.mdx b/api_docs/kbn_sort_package_json.mdx index 7e5e5c6eceb3c..22052b556d703 100644 --- a/api_docs/kbn_sort_package_json.mdx +++ b/api_docs/kbn_sort_package_json.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-sort-package-json title: "@kbn/sort-package-json" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/sort-package-json plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-package-json'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 3368a7ab9c159..acfcc9383bb1c 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/std plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 402b716b6cc1f..191e64cdf1b15 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/stdio-dev-helpers plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index bd1a62e3435df..9915f6c0ffb52 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/storybook plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 5521938204a73..1d9a712006716 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/telemetry-tools plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 6f1b84a16cd16..82c4660718088 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/test plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index d782de1dae9f6..cbf66e2e32d12 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/test-jest-helpers plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index b6014d1b8c0eb..f58eea4717a3c 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/tooling-log plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_type_summarizer.mdx b/api_docs/kbn_type_summarizer.mdx index df57d5d260f5f..8ae22eea4c48f 100644 --- a/api_docs/kbn_type_summarizer.mdx +++ b/api_docs/kbn_type_summarizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer title: "@kbn/type-summarizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/type-summarizer plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index ae6037a1263f3..5de17b41dda5d 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/typed-react-router-config plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ui_theme.devdocs.json b/api_docs/kbn_ui_theme.devdocs.json index da6173029a84a..6ed9941720d38 100644 --- a/api_docs/kbn_ui_theme.devdocs.json +++ b/api_docs/kbn_ui_theme.devdocs.json @@ -52,7 +52,7 @@ "label": "Theme", "description": [], "signature": [ - "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: string; }; euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCodeBlockPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: string; warning: string; danger: string; accent: string; }; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiTextColors: { default: string; subdued: string; success: string; accent: string; warning: string; danger: string; ghost: string; inherit: string; }; euiTextConstrainedMaxWidth: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipBorderColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" + "{ euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCodeBlockPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiEmptyPromptContentMaxWidth: string; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipBorderColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" ], "path": "packages/kbn-ui-theme/src/theme.ts", "deprecated": false, @@ -82,7 +82,7 @@ "label": "euiDarkVars", "description": [], "signature": [ - "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: string; }; euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCodeBlockPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: string; warning: string; danger: string; accent: string; }; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiTextColors: { default: string; subdued: string; success: string; accent: string; warning: string; danger: string; ghost: string; inherit: string; }; euiTextConstrainedMaxWidth: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipBorderColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" + "{ euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCodeBlockPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiEmptyPromptContentMaxWidth: string; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipBorderColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" ], "path": "packages/kbn-ui-theme/src/theme.ts", "deprecated": false, @@ -96,7 +96,7 @@ "label": "euiLightVars", "description": [], "signature": [ - "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: string; }; euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCodeBlockPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: string; warning: string; danger: string; accent: string; }; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiTextColors: { default: string; subdued: string; success: string; accent: string; warning: string; danger: string; ghost: string; inherit: string; }; euiTextConstrainedMaxWidth: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipBorderColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" + "{ euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCodeBlockPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiEmptyPromptContentMaxWidth: string; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipBorderColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" ], "path": "packages/kbn-ui-theme/src/theme.ts", "deprecated": false, @@ -112,7 +112,7 @@ "\nEUI Theme vars that automatically adjust to light/dark theme" ], "signature": [ - "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: string; }; euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCodeBlockPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: string; warning: string; danger: string; accent: string; }; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiTextColors: { default: string; subdued: string; success: string; accent: string; warning: string; danger: string; ghost: string; inherit: string; }; euiTextConstrainedMaxWidth: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipBorderColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" + "{ euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCodeBlockPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiEmptyPromptContentMaxWidth: string; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipBorderColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" ], "path": "packages/kbn-ui-theme/src/theme.ts", "deprecated": false, diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index aa9b3fb0ea96f..2a9a98da12496 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ui-theme plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 797ab4c9112d8..c0bf713a000c4 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/utility-types plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 1a67afdbbd632..f34e19084886d 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/utility-types-jest plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 0f4d4f4b7174a..68a8d863e92c8 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/utils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 78ed43bbada8f..f0b4a3c578ae9 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaOverview plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index 76bb04637fae1..114c6531060a2 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -5194,7 +5194,7 @@ "label": "eui", "description": [], "signature": [ - "{ paddingSizes: { xs: string; s: string; m: string; l: string; xl: string; }; euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCodeBlockPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiExpressionColors: { subdued: string; primary: string; success: string; warning: string; danger: string; accent: string; }; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiTextColors: { default: string; subdued: string; success: string; accent: string; warning: string; danger: string; ghost: string; inherit: string; }; euiTextConstrainedMaxWidth: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipBorderColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" + "{ euiBadgeGroupGutterTypes: { gutterExtraSmall: string; gutterSmall: string; }; euiBreadcrumbSpacing: string; euiBreadcrumbTruncateWidth: string; euiButtonEmptyTypes: { primary: string; danger: string; disabled: string; ghost: string; text: string; success: string; warning: string; }; euiCallOutTypes: { primary: string; success: string; warning: string; danger: string; }; euiCardSpacing: string; euiCardBottomNodeHeight: string; euiCardSelectButtonBorders: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardSelectButtonBackgrounds: { text: string; primary: string; success: string; danger: string; ghost: string; }; euiCardPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCheckableCardPadding: string; euiCodeBlockPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiCollapsibleNavGroupLightBackgroundColor: string; euiCollapsibleNavGroupDarkBackgroundColor: string; euiCollapsibleNavGroupDarkHighContrastColor: string; euiColorPickerValueRange0: string; euiColorPickerValueRange1: string; euiColorPickerSaturationRange0: string; euiColorPickerSaturationRange1: string; euiColorPickerIndicatorSize: string; euiColorPickerWidth: string; euiColorPaletteDisplaySizes: { sizeExtraSmall: string; sizeSmall: string; sizeMedium: string; }; euiContextMenuWidth: string; euiControlBarBackground: string; euiControlBarText: string; euiControlBarBorderColor: string; euiControlBarInitialHeight: string; euiControlBarMaxHeight: string; euiControlBarHeights: { s: string; m: string; l: string; }; euiDataGridPrefix: string; euiDataGridStyles: string; euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridColumnResizerWidth: string; euiDataGridPopoverMaxHeight: string; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiDataGridVerticalBorder: string; euiSuperDatePickerWidth: string; euiSuperDatePickerButtonWidth: string; euiDragAndDropSpacing: { s: string; m: string; l: string; }; euiEmptyPromptContentMaxWidth: string; euiFacetGutterSizes: { gutterNone: number; gutterSmall: string; gutterMedium: string; gutterLarge: string; }; gutterTypes: { gutterExtraSmall: string; gutterSmall: string; gutterMedium: string; gutterLarge: string; gutterExtraLarge: string; }; fractions: { fourths: { percentage: string; count: number; }; thirds: { percentage: string; count: number; }; halves: { percentage: string; count: number; }; single: { percentage: string; count: number; }; }; flyoutSizes: { small: { min: string; width: string; max: string; }; medium: { min: string; width: string; max: string; }; large: { min: string; width: string; max: string; }; }; euiFlyoutBorder: string; euiFlyoutPaddingModifiers: { paddingNone: number; paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiFilePickerTallHeight: string; euiRangeLevelColors: { primary: string; success: string; warning: string; danger: string; }; textareaResizing: { vertical: string; horizontal: string; both: string; none: string; }; euiHeaderLinksGutterSizes: { gutterXS: string; gutterS: string; gutterM: string; gutterL: string; }; euiIconLoadingOpacity: number; euiIconColors: { accent: string; danger: string; ghost: string; primary: string; success: string; subdued: string; text: string; warning: string; inherit: string; }; euiIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiKeyPadMenuSize: string; euiKeyPadMenuMarginSize: string; euiListGroupItemHoverBackground: string; euiListGroupItemHoverBackgroundGhost: string; euiListGroupGutterTypes: { gutterSmall: string; gutterMedium: string; }; euiListGroupItemColorTypes: { primary: string; text: string; subdued: string; ghost: string; }; euiListGroupItemSizeTypes: { xSmall: string; small: string; medium: string; large: string; }; euiMarkdownEditorMinHeight: string; euiPopoverArrowSize: string; euiPopoverTranslateDistance: string; euiProgressSizes: { xs: string; s: string; m: string; l: string; }; euiProgressColors: { primary: string; success: string; warning: string; danger: string; accent: string; subdued: string; vis0: string; vis1: string; vis2: string; vis3: string; vis4: string; vis5: string; vis6: string; vis7: string; vis8: string; vis9: string; customColor: string; }; euiResizableButtonTransitionSpeed: string; euiResizableButtonSize: string; euiSelectableListItemBorder: string; euiSelectableListItemPadding: string; euiSelectableTemplateSitewideTypes: { application: { color: string; 'font-weight': number; }; deployment: { color: string; 'font-weight': number; }; article: { color: string; 'font-weight': number; }; case: { color: string; 'font-weight': number; }; platform: { color: string; 'font-weight': number; }; }; euiSideNavEmphasizedBackgroundColor: string; euiSideNavRootTextcolor: string; euiSideNavBranchTextcolor: string; euiSideNavSelectedTextcolor: string; euiSideNavDisabledTextcolor: string; euiStepNumberSize: string; euiStepNumberSmallSize: string; euiStepNumberMargin: string; euiStepStatusColorsToFade: { warning: string; danger: string; disabled: string; incomplete: string; }; euiSuggestItemColors: { tint0: string; tint1: string; tint2: string; tint3: string; tint4: string; tint5: string; tint6: string; tint7: string; tint8: string; tint9: string; tint10: string; }; euiTableCellContentPadding: string; euiTableCellContentPaddingCompressed: string; euiTableCellCheckboxWidth: string; euiTableActionsAreaWidth: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiToastWidth: string; euiToastTypes: { primary: string; success: string; warning: string; danger: string; }; euiTokenGrayColor: string; euiTokenTypes: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; gray: { graphic: string; behindText: string; }; }; euiTokenTypeKeys: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiCodeBlockBackgroundColor: string; euiCodeBlockColor: string; euiCodeBlockSelectedBackgroundColor: string; euiCodeBlockCommentColor: string; euiCodeBlockSelectorTagColor: string; euiCodeBlockStringColor: string; euiCodeBlockTagColor: string; euiCodeBlockNameColor: string; euiCodeBlockNumberColor: string; euiCodeBlockKeywordColor: string; euiCodeBlockFunctionTitleColor: string; euiCodeBlockTypeColor: string; euiCodeBlockAttributeColor: string; euiCodeBlockSymbolColor: string; euiCodeBlockParamsColor: string; euiCodeBlockMetaColor: string; euiCodeBlockTitleColor: string; euiCodeBlockSectionColor: string; euiCodeBlockAdditionColor: string; euiCodeBlockDeletionColor: string; euiCodeBlockSelectorClassColor: string; euiCodeBlockSelectorIdColor: string; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiRangeTrackColor: string; euiRangeThumbRadius: string; euiRangeThumbHeight: string; euiRangeThumbWidth: string; euiRangeThumbBorderColor: string; euiRangeTrackWidth: string; euiRangeTrackHeight: string; euiRangeTrackBorderWidth: number; euiRangeTrackBorderColor: string; euiRangeTrackRadius: string; euiRangeDisabledOpacity: number; euiRangeHighlightHeight: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiButtonMinWidth: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiTooltipBackgroundColor: string; euiTooltipBorderColor: string; euiTooltipAnimations: { top: string; left: string; bottom: string; right: string; }; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; euiDatePickerCalendarWidth: string; euiDatePickerPadding: string; euiDatePickerGap: string; euiDatePickerCalendarColumns: number; euiDatePickerButtonSize: string; euiDatePickerMinControlWidth: string; euiDatePickerMaxControlWidth: string; euiButtonDefaultTransparency: number; euiButtonFontWeight: number; euiRangeHighlightColor: string; euiRangeThumbBackgroundColor: string; euiRangeTrackCompressedHeight: string; euiRangeHighlightCompressedHeight: string; euiRangeHeight: string; euiRangeCompressedHeight: string; euiStepStatusColors: { default: string; complete: string; warning: string; danger: string; }; }" ], "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", "deprecated": false diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 2242d950f6c29..bcdd5f22cab89 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaReact plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index fbd9b5bdd4acf..aad503a434db1 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaUtils plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index bef023719b650..4525bbe2e90ea 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github summary: API docs for the kubernetesSecurity plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/lens.devdocs.json b/api_docs/lens.devdocs.json index 36811434f6524..706e10de5bdf5 100644 --- a/api_docs/lens.devdocs.json +++ b/api_docs/lens.devdocs.json @@ -8937,13 +8937,7 @@ "description": [], "signature": [ "(id: string | undefined, timeRange: ", - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", " | undefined) => string" ], "path": "x-pack/plugins/lens/common/constants.ts", @@ -8971,13 +8965,7 @@ "label": "timeRange", "description": [], "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataQueryPluginApi", - "section": "def-common.TimeRange", - "text": "TimeRange" - }, + "TimeRange", " | undefined" ], "path": "x-pack/plugins/lens/common/constants.ts", diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 1f41d750347a1..f3a701a57c6f7 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github summary: API docs for the lens plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 0311a4144606e..20aa6358763ad 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github summary: API docs for the licenseApiGuard plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 64d2d74d65595..672bf37cfefb7 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the licenseManagement plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/licensing.devdocs.json b/api_docs/licensing.devdocs.json index 45f8a135afef5..3e7f24385561c 100644 --- a/api_docs/licensing.devdocs.json +++ b/api_docs/licensing.devdocs.json @@ -551,14 +551,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" @@ -2312,14 +2304,6 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts" - }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/list.test.ts" diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 90c723377b5b2..2d26f51d0b1d1 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github summary: API docs for the licensing plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/lists.devdocs.json b/api_docs/lists.devdocs.json index c158f3bc048fd..cfca7e62412b5 100644 --- a/api_docs/lists.devdocs.json +++ b/api_docs/lists.devdocs.json @@ -4163,9 +4163,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; child: (opts: ", "ClientOptions", diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 374c61201b9aa..c9226f6423611 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github summary: API docs for the lists plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/management.mdx b/api_docs/management.mdx index ec9cedc1b123d..85636d6db9aeb 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github summary: API docs for the management plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 48aea2c4895dc..e1a9268a4b430 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github summary: API docs for the maps plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 9d4043ad6cc75..6e53777799afe 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github summary: API docs for the mapsEms plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 1ea342d35e1de..90e4c001a78b0 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github summary: API docs for the ml plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 748bb78ac66d1..fe91552cf5304 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github summary: API docs for the monitoring plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index 088a3a7cac1d3..efbb5010c6689 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github summary: API docs for the monitoringCollection plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 207c3bb12cf30..8a635d95c6698 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github summary: API docs for the navigation plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 8048f69d979dc..39103b8cd170f 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github summary: API docs for the newsfeed plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index ba2cf8008a71e..fe47345018d5f 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -5482,9 +5482,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; child: (opts: ", "ClientOptions", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 17c7f3d460722..8a3b10a8cce01 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github summary: API docs for the observability plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index f7e4d6adb8263..55bd58456c64a 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github summary: API docs for the osquery plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 32383fd0f8d8b..909b06aeb0f90 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -3,7 +3,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory summary: Directory of public APIs available through plugins or packages. -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -12,13 +12,13 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 290 | 233 | 35 | +| 292 | 235 | 35 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 26620 | 172 | 19141 | 1252 | +| 26363 | 171 | 19041 | 1244 | ## Plugin Directory @@ -43,7 +43,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 101 | 0 | 82 | 1 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 143 | 0 | 141 | 12 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 52 | 0 | 51 | 0 | -| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3372 | 35 | 2518 | 21 | +| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3072 | 34 | 2399 | 22 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | This plugin provides the ability to create data views via a modal flyout from any kibana app | 15 | 0 | 7 | 0 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Reusable data view field editor across Kibana | 42 | 0 | 37 | 3 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Data view management app | 2 | 0 | 2 | 0 | @@ -71,11 +71,11 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds 'shape' function and renderer to expressions | 148 | 0 | 146 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Expression Tagcloud plugin adds a `tagcloud` renderer and function to the expression plugin. The renderer will display the `Wordcloud` chart. | 7 | 0 | 7 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Expression XY plugin adds a `xy` renderer and function to the expression plugin. The renderer will display the `xy` chart. | 148 | 0 | 138 | 14 | -| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds expression runtime to Kibana | 2176 | 17 | 1722 | 5 | +| | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds expression runtime to Kibana | 2180 | 17 | 1726 | 5 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 222 | 0 | 95 | 2 | | | [App Services](https://github.com/orgs/elastic/teams/kibana-app-services) | Index pattern fields and ambiguous values formatters | 288 | 5 | 249 | 3 | | | [Machine Learning UI](https://github.com/orgs/elastic/teams/ml-ui) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 62 | 0 | 62 | 2 | -| | [Fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1427 | 8 | 1300 | 10 | +| | [Fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1435 | 8 | 1308 | 10 | | | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 68 | 0 | 14 | 5 | | globalSearchBar | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | globalSearchProviders | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | @@ -163,7 +163,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Registers the vega visualization. Is the elastic version of vega and vega-lite libraries. | 2 | 0 | 2 | 0 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Contains the vislib visualizations. These are the classical area/line/bar, pie, gauge/goal and heatmap charts. We want to replace them with elastic-charts. | 26 | 0 | 25 | 1 | | | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Contains the new xy-axis chart using the elastic-charts library, which will eventually replace the vislib xy-axis charts including bar, area, and line. | 57 | 0 | 51 | 5 | -| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 379 | 12 | 355 | 14 | +| | [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 380 | 12 | 356 | 14 | | watcher | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | ## Package Directory @@ -218,7 +218,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Owner missing] | - | 65 | 0 | 65 | 2 | | | [Owner missing] | - | 1 | 0 | 1 | 0 | | | [Owner missing] | - | 27 | 0 | 14 | 1 | -| | [Owner missing] | - | 209 | 1 | 158 | 11 | +| | [Owner missing] | - | 213 | 1 | 159 | 11 | | | [Owner missing] | - | 2 | 0 | 1 | 0 | | | [Owner missing] | - | 20 | 0 | 16 | 0 | | | [Owner missing] | - | 2 | 0 | 0 | 0 | @@ -260,7 +260,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Owner missing] | security solution utilities to use across plugins such lists, security_solution, cases, etc... | 31 | 0 | 29 | 0 | | | [Owner missing] | - | 53 | 0 | 50 | 1 | | | [Owner missing] | - | 25 | 0 | 24 | 1 | -| | [Owner missing] | - | 21 | 0 | 15 | 3 | +| | [Owner missing] | - | 20 | 0 | 6 | 0 | +| | [Owner missing] | - | 14 | 0 | 7 | 1 | +| | [Owner missing] | - | 13 | 0 | 7 | 1 | | | [Owner missing] | - | 12 | 0 | 8 | 5 | | | [Owner missing] | - | 31 | 0 | 12 | 2 | | | [Owner missing] | - | 21 | 0 | 12 | 2 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 8d17c70635b98..bf2fe7cfebf46 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github summary: API docs for the presentationUtil plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index a042b3740a67f..170032a3bc4d2 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github summary: API docs for the remoteClusters plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index b1c829f78678e..5d3c8b0936a80 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github summary: API docs for the reporting plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index d10a59bbd07d3..ca76c4653ec8e 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github summary: API docs for the rollup plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 33f15039f24ae..5472f6eaed6b8 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github summary: API docs for the ruleRegistry plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 89138bbe32a3b..8f89583822b50 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github summary: API docs for the runtimeFields plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index a61a7eee2ca45..f51a2a70b2220 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjects plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 7b15727ad98e6..0fbe05a13338f 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsManagement plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index e4c11a2821387..1b39a76ecf0b7 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsTagging plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 49c58d8bd77f3..94134caede2d8 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsTaggingOss plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 61d950b32adfa..cff973e270d3e 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github summary: API docs for the screenshotMode plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 517de3434b0ad..263fbb99ec61f 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github summary: API docs for the screenshotting plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 341da1ff265f2..0b87aeb636f9f 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github summary: API docs for the security plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index c79b7d1ed0fc4..5b1e670ad236d 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github summary: API docs for the securitySolution plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index c4ea5ee61f820..bfee9c84b1de8 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github summary: API docs for the sessionView plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 85d7476dfa0f2..2192eafe5e3f0 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github summary: API docs for the share plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/shared_u_x.mdx b/api_docs/shared_u_x.mdx index 500e70f9d6fac..f64d2a3f4988b 100644 --- a/api_docs/shared_u_x.mdx +++ b/api_docs/shared_u_x.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/sharedUX title: "sharedUX" image: https://source.unsplash.com/400x175/?github summary: API docs for the sharedUX plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sharedUX'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 72118a77eee39..667c3941ee568 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github summary: API docs for the snapshotRestore plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index bf0983152c457..793c6097c28af 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github summary: API docs for the spaces plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 183b1f1105347..c751bd1600098 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github summary: API docs for the stackAlerts plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 1426b95f84d09..fbda9a1e539df 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github summary: API docs for the taskManager plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 495a173de69f4..ccf398abc8dbe 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetry plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/telemetry_collection_manager.devdocs.json b/api_docs/telemetry_collection_manager.devdocs.json index c0bed4f0c9b72..5d7ae451769f4 100644 --- a/api_docs/telemetry_collection_manager.devdocs.json +++ b/api_docs/telemetry_collection_manager.devdocs.json @@ -266,9 +266,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; child: (opts: ", "ClientOptions", diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 374f795aa17ff..2f8e2e77085cf 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryCollectionManager plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index be49b24529e5e..9fd053ad4b8db 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryCollectionXpack plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 21dea3bcd1f30..0704b8ce4782a 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryManagementSection plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 44c529cd368f1..3056d7d683c84 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github summary: API docs for the timelines plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index f0407efcf8d13..8de9d5e89de2d 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github summary: API docs for the transform plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 80428368d4eac..a987e4b4bc8f3 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github summary: API docs for the triggersActionsUi plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 91add4fe3a647..c39a2718bf367 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github summary: API docs for the uiActions plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 3c4dd685e0dfb..1ccc372c28f52 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the uiActionsEnhanced plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index e8c89e1094e70..426b8cf9fbf18 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the unifiedSearch plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 4b52092837842..cc30eb1fd7850 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github summary: API docs for the unifiedSearch.autocomplete plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index c12a378c02365..a7ec086e66b1e 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github summary: API docs for the urlForwarding plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/usage_collection.devdocs.json b/api_docs/usage_collection.devdocs.json index c8e999ebd31a4..15737e2480fdf 100644 --- a/api_docs/usage_collection.devdocs.json +++ b/api_docs/usage_collection.devdocs.json @@ -520,9 +520,9 @@ "TransportRequestOptions", " | undefined): Promise<", "ClosePointInTimeResponse", - ">; }; helpers: ", + ">; }; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", - "; [kInternal]: symbol | null; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; helpers: ", "default", "; child: (opts: ", "ClientOptions", diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 5e94564ea7785..47778833e072e 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github summary: API docs for the usageCollection plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index dd3e748e4f8da..0058b11c6b0c8 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github summary: API docs for the ux plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 36ded170d7d2f..53a3915ea7687 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the visDefaultEditor plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index d410523075e93..a8243f4cdbc7e 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeGauge plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index e2e148842026b..12ae5dddebc4a 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeHeatmap plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index b38616526e102..88bafeff23ed5 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypePie plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index eb93a2b5f1105..d97556bb2e801 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTable plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 42c8cd671ebe2..2055a6d670392 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTimelion plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index c3f505b257520..d78d1cbbfbcb5 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTimeseries plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index 6adce6d305f4f..0275317068293 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeVega plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index daf06b80d1df9..b3be9dae57a24 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeVislib plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 6012d5344f67b..391ed29ea11d7 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeXy plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/visualizations.devdocs.json b/api_docs/visualizations.devdocs.json index 9c5ca75bc9bcc..905974977e35b 100644 --- a/api_docs/visualizations.devdocs.json +++ b/api_docs/visualizations.devdocs.json @@ -4513,6 +4513,19 @@ "path": "src/plugins/visualizations/public/vis_types/types.ts", "deprecated": false }, + { + "parentPluginId": "visualizations", + "id": "def-public.VisualizeEditorLayersContext.collapseFn", + "type": "string", + "tags": [], + "label": "collapseFn", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/visualizations/public/vis_types/types.ts", + "deprecated": false + }, { "parentPluginId": "visualizations", "id": "def-public.VisualizeEditorLayersContext.splitFilters", diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index f1fc3dd6e816f..aa0a1affa5c38 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github summary: API docs for the visualizations plugin -date: 2022-06-21 +date: 2022-06-22 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Vis Editors](https://github.com/orgs/elastic/teams/kibana-vis-editors) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 379 | 12 | 355 | 14 | +| 380 | 12 | 356 | 14 | ## Client From 8039218bf3a3b64d75e0669c228d03f32dce72ef Mon Sep 17 00:00:00 2001 From: John Dorlus Date: Wed, 22 Jun 2022 01:10:02 -0400 Subject: [PATCH 22/61] Added Snapshot Restore a11y tests. (#134414) * Added Snapshot Restore a11y tests. * Commented out snapshot after reporting a11y violation. * Changed title. * Made changes per the nits. Co-authored-by: Bhavya RM --- test/functional/page_objects/settings_page.ts | 8 ++ .../home/restore_list/restore_list.tsx | 2 +- .../apps/snapshot_and_restore.ts | 124 ++++++++++++++++++ x-pack/test/accessibility/config.ts | 1 + .../page_objects/snapshot_restore_page.ts | 60 ++++++++- 5 files changed, 193 insertions(+), 2 deletions(-) create mode 100644 x-pack/test/accessibility/apps/snapshot_and_restore.ts diff --git a/test/functional/page_objects/settings_page.ts b/test/functional/page_objects/settings_page.ts index 75f468382fca2..306755823b822 100644 --- a/test/functional/page_objects/settings_page.ts +++ b/test/functional/page_objects/settings_page.ts @@ -51,6 +51,14 @@ export class SettingsPageObject extends FtrService { await this.header.waitUntilLoadingHasFinished(); } + async clickSnapshotRestore() { + await this.testSubjects.click('snapshot_restore'); + await this.header.waitUntilLoadingHasFinished(); + await this.retry.waitFor('snapshot restore header to be visible', async () => { + return (await this.testSubjects.getVisibleText('appTitle')) === 'Snapshot and Restore'; + }); + } + async clickIndexManagement() { await this.testSubjects.click('index_management'); await this.header.waitUntilLoadingHasFinished(); diff --git a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx b/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx index 3ce492031b866..5b05cb772b478 100644 --- a/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx +++ b/x-pack/plugins/snapshot_restore/public/application/sections/home/restore_list/restore_list.tsx @@ -115,7 +115,7 @@ export const RestoreList: React.FunctionComponent = () => { +

{ + before(async () => { + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickSnapshotRestore(); + }); + + describe('empty state', async () => { + it('empty snapshots table', async () => { + await a11y.testAppSnapshot(); + }); + + it('empty repositories table', async () => { + await PageObjects.snapshotRestore.navToRepositories(); + await a11y.testAppSnapshot(); + }); + + it('empty policies table', async () => { + await PageObjects.snapshotRestore.navToPolicies(); + await a11y.testAppSnapshot(); + }); + + it('empty restored snapshots status table', async () => { + await PageObjects.snapshotRestore.navToRestoreStatus(); + await a11y.testAppSnapshot(); + }); + }); + + describe('table views with data', async () => { + const testRepoName = 'testrepo'; + const snapshotName = `testsnapshot${Date.now().toString()}`; + before(async () => { + await createRepo(testRepoName); + await es.snapshot.create({ + repository: testRepoName, + snapshot: snapshotName, + wait_for_completion: true, + }); + + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickSnapshotRestore(); + }); + it('snapshots table with data', async () => { + await a11y.testAppSnapshot(); + }); + it('repository table with data', async () => { + await PageObjects.snapshotRestore.navToRepositories(); + await a11y.testAppSnapshot(); + }); + + after(async () => { + await es.snapshot.delete({ snapshot: snapshotName, repository: testRepoName }); + await es.snapshot.deleteRepository({ name: [testRepoName] }); + }); + }); + + describe('create policy wizard', async () => { + const testRepoName = 'policyrepo'; + before(async () => { + await createRepo(testRepoName); + await PageObjects.snapshotRestore.navToPolicies(); + }); + it('page one', async () => { + await PageObjects.snapshotRestore.fillCreateNewPolicyPageOne( + 'testpolicy', + '' + ); + await a11y.testAppSnapshot(); + }); + it('page two', async () => { + await PageObjects.snapshotRestore.fillCreateNewPolicyPageTwo(); + await a11y.testAppSnapshot(); + }); + it('page three', async () => { + await PageObjects.snapshotRestore.fillCreateNewPolicyPageThree(); + await a11y.testAppSnapshot(); + }); + it('submit page four and flyout', async () => { + // Commenting out this snapshot as this is reported. https://github.com/elastic/kibana/issues/134514 + await PageObjects.snapshotRestore.submitNewPolicy(); + // await a11y.testAppSnapshot(); + }); + it('policy table with data', async () => { + await PageObjects.snapshotRestore.closeFlyout(); + await a11y.testAppSnapshot(); + }); + + after(async () => { + await es.snapshot.deleteRepository({ name: [testRepoName] }); + await es.slm.deleteLifecycle({ policy_id: 'testpolicy' }); + }); + }); + }); +} diff --git a/x-pack/test/accessibility/config.ts b/x-pack/test/accessibility/config.ts index 87709e92a678a..e5e7cabcc4bae 100644 --- a/x-pack/test/accessibility/config.ts +++ b/x-pack/test/accessibility/config.ts @@ -41,6 +41,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { require.resolve('./apps/security_solution'), require.resolve('./apps/ml_embeddables_in_dashboard'), require.resolve('./apps/remote_clusters'), + require.resolve('./apps/snapshot_and_restore'), require.resolve('./apps/reporting'), require.resolve('./apps/enterprise_search'), require.resolve('./apps/license_management'), diff --git a/x-pack/test/functional/page_objects/snapshot_restore_page.ts b/x-pack/test/functional/page_objects/snapshot_restore_page.ts index e1fc50ed86fa2..19a6e1dd8f4c3 100644 --- a/x-pack/test/functional/page_objects/snapshot_restore_page.ts +++ b/x-pack/test/functional/page_objects/snapshot_restore_page.ts @@ -18,7 +18,7 @@ export function SnapshotRestorePageProvider({ getService }: FtrProviderContext) async registerRepositoryButton() { return await testSubjects.find('registerRepositoryButton'); }, - async navToRepositories() { + async navToRepositories(emptyList: boolean = true) { await testSubjects.click('repositories_tab'); await retry.waitForWithTimeout( 'Wait for register repository button to be on page', @@ -28,6 +28,64 @@ export function SnapshotRestorePageProvider({ getService }: FtrProviderContext) } ); }, + async navToPolicies(emptyList: boolean = true) { + await testSubjects.click('policies_tab'); + await retry.waitForWithTimeout( + 'Wait for register repository button to be on page', + 10000, + async () => { + return await testSubjects.isDisplayed('createPolicyButton'); + } + ); + }, + async navToRestoreStatus(emptyList: boolean = true) { + await testSubjects.click('restore_status_tab'); + await retry.waitForWithTimeout( + 'Wait for register repository button to be on page', + 10000, + async () => { + return await testSubjects.isDisplayed('noRestoredSnapshotsHeader'); + } + ); + }, + + async fillCreateNewPolicyPageOne(policyName: string, snapshotName: string) { + await testSubjects.click('createPolicyButton'); + await testSubjects.setValue('nameInput', policyName); + await testSubjects.setValue('snapshotNameInput', snapshotName); + await testSubjects.click('nextButton'); + await retry.waitFor('all indices to be visible', async () => { + return await testSubjects.isDisplayed('allIndicesToggle'); + }); + }, + + async fillCreateNewPolicyPageTwo() { + await testSubjects.click('nextButton'); + await retry.waitFor('expire after value input to be visible', async () => { + return await testSubjects.isDisplayed('expireAfterValueInput'); + }); + }, + + async fillCreateNewPolicyPageThree() { + await testSubjects.click('nextButton'); + await retry.waitFor('submit button to be visible', async () => { + return await testSubjects.isDisplayed('submitButton'); + }); + }, + + async submitNewPolicy() { + await testSubjects.click('submitButton'); + await retry.waitFor('policy management button to be visible', async () => { + return await testSubjects.isDisplayed('policyActionMenuButton'); + }); + }, + + async closeFlyout() { + await testSubjects.click('srPolicyDetailsFlyoutCloseButton'); + await retry.waitFor('policy table to be visible', async () => { + return await testSubjects.isDisplayed('policyLink'); + }); + }, async getRepoList() { const table = await testSubjects.find('repositoryTable'); const rows = await table.findAllByTestSubject('row'); From fabe14673914f28fd24d44a406f9a95f883adb43 Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Wed, 22 Jun 2022 02:54:24 -0400 Subject: [PATCH 23/61] [Synthetics] Ensure port or url is never undefined, to prevent project monitor decryption errors (#134867) --- .../common/constants/monitor_defaults.ts | 2 +- .../monitor_management/monitor_types.ts | 4 +- .../fleet_package/browser/simple_fields.tsx | 4 +- .../hooks/use_update_policy.test.tsx | 7 +-- .../synthetics_policy_create_extension.tsx | 7 ++- .../synthetics_policy_edit_extension.tsx | 2 +- .../fleet_package/validation.test.ts | 10 ++-- .../monitor_config/monitor_config.tsx | 4 +- .../monitor_management/validation.test.ts | 8 +-- .../monitor_cruds/monitor_validation.test.ts | 6 +-- .../hydrate_saved_object.ts | 2 +- .../synthetics_service/synthetics_service.ts | 4 +- .../apis/uptime/rest/add_monitor_project.ts | 53 +++++++++++++++++++ .../uptime/rest/fixtures/browser_monitor.json | 4 +- 14 files changed, 87 insertions(+), 30 deletions(-) diff --git a/x-pack/plugins/synthetics/common/constants/monitor_defaults.ts b/x-pack/plugins/synthetics/common/constants/monitor_defaults.ts index d91342cdedbb0..f054e15e744f7 100644 --- a/x-pack/plugins/synthetics/common/constants/monitor_defaults.ts +++ b/x-pack/plugins/synthetics/common/constants/monitor_defaults.ts @@ -72,7 +72,7 @@ export const DEFAULT_BROWSER_SIMPLE_FIELDS: BrowserSimpleFields = { }, [ConfigKey.MONITOR_TYPE]: DataStream.BROWSER, [ConfigKey.PARAMS]: '', - [ConfigKey.PORT]: undefined, + [ConfigKey.PORT]: null, [ConfigKey.SCHEDULE]: { unit: ScheduleUnit.MINUTES, number: '10', diff --git a/x-pack/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts b/x-pack/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts index c44d7adced16a..958fc0a5c0a17 100644 --- a/x-pack/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts +++ b/x-pack/plugins/synthetics/common/runtime_types/monitor_management/monitor_types.ts @@ -229,8 +229,8 @@ export const BrowserSensitiveSimpleFieldsCodec = t.intersection([ [ConfigKey.SOURCE_ZIP_USERNAME]: t.string, [ConfigKey.SOURCE_ZIP_PASSWORD]: t.string, [ConfigKey.PARAMS]: t.string, - [ConfigKey.URLS]: t.union([t.string, t.undefined]), - [ConfigKey.PORT]: t.union([t.number, t.undefined]), + [ConfigKey.URLS]: t.union([t.string, t.null]), + [ConfigKey.PORT]: t.union([t.number, t.null]), }), ZipUrlTLSFieldsCodec, CommonFieldsCodec, diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/browser/simple_fields.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/browser/simple_fields.tsx index 91c34a270b562..25ed39569bc8b 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/browser/simple_fields.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/browser/simple_fields.tsx @@ -9,7 +9,7 @@ import React, { memo, useMemo, useCallback } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiFormRow } from '@elastic/eui'; import { Validation } from '../types'; -import { ConfigKey } from '../types'; +import { ConfigKey, MonitorFields } from '../types'; import { useBrowserSimpleFieldsContext } from '../contexts'; import { ScheduleField } from '../schedule_field'; import { SourceField } from './source_field'; @@ -76,7 +76,7 @@ export const BrowserSimpleFields = memo(({ validate, onFieldBlur }) => { defaultMessage="Frequency" /> } - isInvalid={!!validate[ConfigKey.SCHEDULE]?.(fields)} + isInvalid={!!validate[ConfigKey.SCHEDULE]?.(fields as Partial)} error={ { it('handles browser data stream', async () => { const onChange = jest.fn(); const initialProps = { - defaultConfig: defaultConfig[DataStream.BROWSER], - config: defaultConfig[DataStream.BROWSER], + defaultConfig: defaultConfig[DataStream.BROWSER] as Partial, + config: defaultConfig[DataStream.BROWSER] as Partial, newPolicy, onChange, validate, @@ -637,7 +638,7 @@ describe('useBarChartsHooks', () => { rerender({ ...initialProps, - config, + config: config as Partial, }); await waitFor(() => { diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx index 6247619f6a3b6..d84420f155798 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_create_extension.tsx @@ -8,8 +8,7 @@ import React, { memo, useEffect, useMemo } from 'react'; import { PackagePolicyCreateExtensionComponentProps } from '@kbn/fleet-plugin/public'; import { useTrackPageview } from '@kbn/observability-plugin/public'; -import { DataStream } from './types'; -import { PolicyConfig } from './types'; +import { DataStream, PolicyConfig, MonitorFields } from './types'; import { usePolicyConfigContext } from './contexts'; import { DEFAULT_FIELDS } from '../../../../common/constants/monitor_defaults'; import { CustomFields } from './custom_fields'; @@ -39,8 +38,8 @@ export const SyntheticsPolicyCreateExtension = memo, + config: policyConfig[monitorType] as Partial, newPolicy, onChange, validate, diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension.tsx index edc8e3f58d490..771ac6ed8c88f 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/synthetics_policy_edit_extension.tsx @@ -35,7 +35,7 @@ export const SyntheticsPolicyEditExtension = memo, newPolicy, onChange, validate, diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/validation.test.ts b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/validation.test.ts index b2cca04b44d1b..2a9ead81fce33 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/validation.test.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/fleet_package/validation.test.ts @@ -9,9 +9,9 @@ import { ConfigKey, DataStream, HTTPFields, - BrowserFields, MonitorFields, ScheduleUnit, + SyntheticsMonitor, } from '../../../../common/runtime_types'; import { validate } from './validation'; @@ -53,18 +53,20 @@ describe('[Monitor Management] validation', () => { [ConfigKey.SOURCE_INLINE, 'step(() => {});'], [ConfigKey.SOURCE_ZIP_URL, 'https://test.zip'], ])('Browser', (configKey, value) => { - const browserProps: Partial = { + const browserProps = { ...commonPropsValid, [ConfigKey.MONITOR_TYPE]: DataStream.BROWSER, [ConfigKey.TIMEOUT]: null, + [ConfigKey.URLS]: null, + [ConfigKey.PORT]: null, [configKey]: value, - }; + } as SyntheticsMonitor; it('should return false for all valid props', () => { const validators = validate[DataStream.BROWSER]; const keysToValidate = [ConfigKey.SCHEDULE, ConfigKey.TIMEOUT, configKey]; const validatorFns = keysToValidate.map((key) => validators[key]); - const result = validatorFns.map((fn) => fn?.(browserProps) ?? true); + const result = validatorFns.map((fn) => fn?.(browserProps as Partial) ?? true); expect(result).not.toEqual(expect.arrayContaining([true])); }); diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/monitor_config.tsx b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/monitor_config.tsx index 3e85c932bf700..7c430963e03d1 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/monitor_config.tsx +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/monitor_config/monitor_config.tsx @@ -41,8 +41,8 @@ export const MonitorConfig = ({ isEdit = false }: { isEdit: boolean }) => { const { isValid, config } = useFormatMonitor({ monitorType, validate, - config: policyConfig[monitorType], - defaultConfig: DEFAULT_FIELDS[monitorType], + config: policyConfig[monitorType] as Partial, + defaultConfig: DEFAULT_FIELDS[monitorType] as Partial, }); const [hasBeenSubmitted, setHasBeenSubmitted] = useState(false); diff --git a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/validation.test.ts b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/validation.test.ts index ce7c08a45dbaf..dc2e5cb48c077 100644 --- a/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/validation.test.ts +++ b/x-pack/plugins/synthetics/public/legacy_uptime/components/monitor_management/validation.test.ts @@ -9,10 +9,10 @@ import { ConfigKey, DataStream, HTTPFields, - BrowserFields, MonitorFields, ScheduleUnit, ServiceLocations, + SyntheticsMonitor, } from '../../../../common/runtime_types'; import { validate, validateCommon } from './validation'; @@ -96,18 +96,18 @@ describe('[Monitor Management] validation', () => { [ConfigKey.SOURCE_INLINE, 'step(() => {});'], [ConfigKey.SOURCE_ZIP_URL, 'https://test.zip'], ])('Browser', (configKey, value) => { - const browserProps: Partial = { + const browserProps = { ...commonPropsValid, [ConfigKey.MONITOR_TYPE]: DataStream.BROWSER, [ConfigKey.TIMEOUT]: undefined, [configKey]: value, - }; + } as SyntheticsMonitor; it('should return false for all valid props', () => { const validators = validate[DataStream.BROWSER]; const keysToValidate = [ConfigKey.SCHEDULE, ConfigKey.TIMEOUT, configKey]; const validatorFns = keysToValidate.map((key) => validators[key]); - const result = validatorFns.map((fn) => fn?.(browserProps) ?? true); + const result = validatorFns.map((fn) => fn?.(browserProps as Partial) ?? true); expect(result).not.toEqual(expect.arrayContaining([true])); }); diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts index e862bec6e92cc..e22aef73e19d6 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/monitor_validation.test.ts @@ -173,8 +173,8 @@ describe('validateMonitor', () => { [ConfigKey.SOURCE_ZIP_PASSWORD]: 'password', [ConfigKey.SOURCE_ZIP_PROXY_URL]: 'http://proxy-url.com', [ConfigKey.PARAMS]: '', - [ConfigKey.URLS]: undefined, - [ConfigKey.PORT]: undefined, + [ConfigKey.URLS]: null, + [ConfigKey.PORT]: null, }; testBrowserAdvancedFields = { @@ -309,7 +309,7 @@ describe('validateMonitor', () => { const testMonitor = { ...testHTTPFields, ...({ - [ConfigKey.URLS]: undefined, + [ConfigKey.URLS]: null, } as unknown as Partial), } as MonitorFields; diff --git a/x-pack/plugins/synthetics/server/synthetics_service/hydrate_saved_object.ts b/x-pack/plugins/synthetics/server/synthetics_service/hydrate_saved_object.ts index 92f457d3c0516..a2ea7a906fb7b 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/hydrate_saved_object.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/hydrate_saved_object.ts @@ -70,7 +70,7 @@ export const hydrateSavedObjects = async ({ monitors .filter((monitor) => missingInfoIds.includes(monitor.id)) .forEach((monitor) => { - let resultAttributes: Partial = monitor.attributes; + let resultAttributes: SyntheticsMonitor = monitor.attributes; let isUpdated = false; diff --git a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts index 8103415af9492..1e353f4301f45 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts @@ -439,8 +439,8 @@ export class SyntheticsService { } formatConfigs(configs: SyntheticsMonitorWithId[]) { - return configs.map((config: Partial) => - formatMonitorConfig(Object.keys(config) as ConfigKey[], config) + return configs.map((config: SyntheticsMonitor) => + formatMonitorConfig(Object.keys(config) as ConfigKey[], config as Partial) ); } diff --git a/x-pack/test/api_integration/apis/uptime/rest/add_monitor_project.ts b/x-pack/test/api_integration/apis/uptime/rest/add_monitor_project.ts index 512cb0c96056e..0445843ddd02e 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/add_monitor_project.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/add_monitor_project.ts @@ -576,5 +576,58 @@ export default function ({ getService }: FtrProviderContext) { await security.role.delete(roleName); } }); + + it('project monitors - is able to decrypt monitor when updated after hydration', async () => { + try { + await supertest + .put(API_URLS.SYNTHETICS_MONITORS_PROJECT) + .set('kbn-xsrf', 'true') + .send(projectMonitors); + + const response = await supertest + .get(API_URLS.SYNTHETICS_MONITORS) + .query({ + filter: `${syntheticsMonitorType}.attributes.journey_id: ${projectMonitors.monitors[0].id}`, + }) + .set('kbn-xsrf', 'true') + .expect(200); + + const { monitors } = response.body; + + // add urls and ports to mimic hydration + const updates = { + [ConfigKey.URLS]: 'https://modified-host.com', + [ConfigKey.PORT]: 443, + }; + + const modifiedMonitor = { ...monitors[0]?.attributes, ...updates }; + + await supertest + .put(API_URLS.SYNTHETICS_MONITORS + '/' + monitors[0]?.id) + .set('kbn-xsrf', 'true') + .send(modifiedMonitor) + .expect(200); + + // update project monitor via push api + const apiResponse = await supertest + .put(API_URLS.SYNTHETICS_MONITORS_PROJECT) + .set('kbn-xsrf', 'true') + .send(projectMonitors) + .expect(200); + expect(apiResponse.body.updatedMonitors).eql([projectMonitors.monitors[0].id]); + + // ensure that monitor can still be decrypted + await supertest + .get(API_URLS.SYNTHETICS_MONITORS + '/' + monitors[0]?.id) + .set('kbn-xsrf', 'true') + .expect(200); + } finally { + await Promise.all([ + projectMonitors.monitors.map((monitor) => { + return deleteMonitor(monitor.id, projectMonitors.project); + }), + ]); + } + }); }); } diff --git a/x-pack/test/api_integration/apis/uptime/rest/fixtures/browser_monitor.json b/x-pack/test/api_integration/apis/uptime/rest/fixtures/browser_monitor.json index 5cc0d2bca4179..ae3c9d017362e 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/fixtures/browser_monitor.json +++ b/x-pack/test/api_integration/apis/uptime/rest/fixtures/browser_monitor.json @@ -43,5 +43,7 @@ "locations": [], "name": "Test HTTP Monitor 03", "namespace": "testnamespace", - "origin": "ui" + "origin": "ui", + "urls": null, + "url.port": null } From 87e72207bbbf8413aab313da8d6d5b9dbf54067e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20St=C3=BCrmer?= Date: Wed, 22 Jun 2022 11:23:55 +0200 Subject: [PATCH 24/61] [Metrics UI] Show descriptive loading, empty and error states in the metrics table (#133947) Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../public/components/empty_states/index.tsx | 3 +- .../empty_states/no_metric_indices.tsx | 28 ++ .../container_metrics_table.stories.tsx | 153 +++++-- .../container_metrics_table.test.tsx | 55 ++- .../container/container_metrics_table.tsx | 121 ++--- .../container/use_container_metrics_table.ts | 14 +- .../host/host_metrics_table.stories.tsx | 165 ++++--- .../host/host_metrics_table.test.tsx | 55 ++- .../host/host_metrics_table.tsx | 120 ++--- .../host/use_host_metrics_table.ts | 14 +- .../pod/pod_metrics_table.stories.tsx | 163 ++++--- .../pod/pod_metrics_table.test.tsx | 55 ++- .../pod/pod_metrics_table.tsx | 121 ++--- .../pod/use_pod_metrics_table.ts | 15 +- .../components/assets/no_results_dark.svg | 416 ++++++++++++++++++ .../components/assets/no_results_light.svg | 416 ++++++++++++++++++ .../shared/components/error_content.tsx | 24 + .../shared/components/index.ts | 6 + .../shared/components/no_data_content.tsx | 128 ++++++ .../hooks/use_infrastructure_node_metrics.ts | 44 +- .../shared/index.ts | 12 +- .../shared/types.ts | 21 + .../test_helpers.ts | 4 +- .../containers/metrics_source/source.tsx | 1 + .../public/pages/metrics/page_template.tsx | 15 +- 25 files changed, 1773 insertions(+), 396 deletions(-) create mode 100644 x-pack/plugins/infra/public/components/empty_states/no_metric_indices.tsx create mode 100644 x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/assets/no_results_dark.svg create mode 100644 x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/assets/no_results_light.svg create mode 100644 x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/error_content.tsx create mode 100644 x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/no_data_content.tsx diff --git a/x-pack/plugins/infra/public/components/empty_states/index.tsx b/x-pack/plugins/infra/public/components/empty_states/index.tsx index d1b3d375a4779..27c0ea44a2491 100644 --- a/x-pack/plugins/infra/public/components/empty_states/index.tsx +++ b/x-pack/plugins/infra/public/components/empty_states/index.tsx @@ -5,5 +5,6 @@ * 2.0. */ -export { NoIndices } from './no_indices'; +export * from './no_metric_indices'; export { NoData } from './no_data'; +export { NoIndices } from './no_indices'; diff --git a/x-pack/plugins/infra/public/components/empty_states/no_metric_indices.tsx b/x-pack/plugins/infra/public/components/empty_states/no_metric_indices.tsx new file mode 100644 index 0000000000000..433f4caaa4b6a --- /dev/null +++ b/x-pack/plugins/infra/public/components/empty_states/no_metric_indices.tsx @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const noMetricIndicesPromptPrimaryActionTitle = i18n.translate( + 'xpack.infra.metrics.noDataConfig.beatsCard.title', + { + defaultMessage: 'Add a metrics integration', + } +); + +export const noMetricIndicesPromptDescription = i18n.translate( + 'xpack.infra.metrics.noDataConfig.beatsCard.description', + { + defaultMessage: + 'Use Beats to send metrics data to Elasticsearch. We make it easy with modules for many popular systems and apps.', + } +); + +export const noMetricIndicesPromptTitle = i18n.translate( + 'xpack.infra.metrics.noDataConfig.promptTitle', + { defaultMessage: 'Add metrics data' } +); diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.stories.tsx b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.stories.tsx index 9b4d3938e7d4c..56c9f75483abc 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.stories.tsx +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.stories.tsx @@ -7,12 +7,13 @@ import { EuiCard } from '@elastic/eui'; import { I18nProvider } from '@kbn/i18n-react'; -import type { Meta } from '@storybook/react/types-6-0'; -import React from 'react'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import type { Meta, Story } from '@storybook/react/types-6-0'; +import React from 'react'; import { decorateWithGlobalStorybookThemeProviders } from '../../../test_utils/use_global_storybook_theme'; -import { ContainerMetricsTable } from './container_metrics_table'; import type { ContainerMetricsTableProps } from './container_metrics_table'; +import { ContainerMetricsTable } from './container_metrics_table'; +import { ContainerNodeMetricsRow } from './use_container_metrics_table'; const mockServices = { application: { @@ -32,6 +33,20 @@ export default { decorateWithGlobalStorybookThemeProviders, ], component: ContainerMetricsTable, + args: { + data: { + state: 'empty-indices', + }, + isLoading: false, + sortState: { + direction: 'desc', + field: 'averageCpuUsagePercent', + }, + timerange: { + from: 'now-15m', + to: 'now', + }, + }, argTypes: { setSortState: { action: 'Sort field or direction changed', @@ -42,53 +57,95 @@ export default { }, } as Meta; -const storyArgs: Omit = { - isLoading: false, - containers: [ - { - name: 'gke-edge-oblt-pool-1-9a60016d-lgg1', - uptime: 23000000, - averageCpuUsagePercent: 99, - averageMemoryUsageMegabytes: 34, - }, - { - name: 'gke-edge-oblt-pool-1-9a60016d-lgg2', - uptime: 43000000, - averageCpuUsagePercent: 72, - averageMemoryUsageMegabytes: 68, - }, - { - name: 'gke-edge-oblt-pool-1-9a60016d-lgg3', - uptime: 53000000, - averageCpuUsagePercent: 54, - averageMemoryUsageMegabytes: 132, - }, - { - name: 'gke-edge-oblt-pool-1-9a60016d-lgg4', - uptime: 63000000, - averageCpuUsagePercent: 34, - averageMemoryUsageMegabytes: 264, - }, - { - name: 'gke-edge-oblt-pool-1-9a60016d-lgg5', - uptime: 83000000, - averageCpuUsagePercent: 13, - averageMemoryUsageMegabytes: 512, - }, - ], - currentPageIndex: 0, - pageCount: 10, - sortState: { - direction: 'desc', - field: 'averageCpuUsagePercent', +const loadedContainers: ContainerNodeMetricsRow[] = [ + { + name: 'gke-edge-oblt-pool-1-9a60016d-lgg1', + uptime: 23000000, + averageCpuUsagePercent: 99, + averageMemoryUsageMegabytes: 34, }, - timerange: { - from: 'now-15m', - to: 'now', + { + name: 'gke-edge-oblt-pool-1-9a60016d-lgg2', + uptime: 43000000, + averageCpuUsagePercent: 72, + averageMemoryUsageMegabytes: 68, }, -}; + { + name: 'gke-edge-oblt-pool-1-9a60016d-lgg3', + uptime: 53000000, + averageCpuUsagePercent: 54, + averageMemoryUsageMegabytes: 132, + }, + { + name: 'gke-edge-oblt-pool-1-9a60016d-lgg4', + uptime: 63000000, + averageCpuUsagePercent: 34, + averageMemoryUsageMegabytes: 264, + }, + { + name: 'gke-edge-oblt-pool-1-9a60016d-lgg5', + uptime: 83000000, + averageCpuUsagePercent: 13, + averageMemoryUsageMegabytes: 512, + }, +]; -export const Demo = (args: ContainerMetricsTableProps) => { +const Template: Story = (args) => { return ; }; -Demo.args = storyArgs; + +export const Basic = Template.bind({}); +Basic.args = { + data: { + state: 'data', + currentPageIndex: 1, + pageCount: 10, + rows: loadedContainers, + }, +}; + +export const Loading = Template.bind({}); +Loading.args = { + isLoading: true, +}; + +export const Reloading = Template.bind({}); +Reloading.args = { + data: { + state: 'data', + currentPageIndex: 1, + pageCount: 10, + rows: loadedContainers, + }, + isLoading: true, +}; + +export const MissingIndices = Template.bind({}); +MissingIndices.args = { + data: { + state: 'no-indices', + }, +}; + +export const EmptyIndices = Template.bind({}); +EmptyIndices.args = { + data: { + state: 'empty-indices', + }, +}; + +export const FailedToLoadSource = Template.bind({}); +FailedToLoadSource.args = { + data: { + state: 'error', + errors: [new Error('Failed to load source configuration')], + }, +}; + +export const FailedToLoadMetrics = Template.bind({}); +FailedToLoadMetrics.args = { + data: { + state: 'error', + errors: [new Error('Failed to load metrics')], + }, +}; diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.test.tsx b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.test.tsx index 4ead102c9bae8..2f35fe2b0c90e 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.test.tsx +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.test.tsx @@ -5,19 +5,21 @@ * 2.0. */ +import type { HttpFetchOptions } from '@kbn/core/public'; +import { MetricsExplorerSeries } from '../../../../common/http_api'; +import { CoreProviders } from '../../../apps/common_providers'; import { render, screen, waitFor } from '@testing-library/react'; import React from 'react'; -import type { HttpFetchOptions } from '@kbn/core/public'; import type { DataResponseMock, NodeMetricsTableFetchMock, SourceResponseMock, } from '../test_helpers'; import { createStartServicesAccessorMock } from '../test_helpers'; +import { ContainerMetricsTable } from './container_metrics_table'; import { createLazyContainerMetricsTable } from './create_lazy_container_metrics_table'; import IntegratedContainerMetricsTable from './integrated_container_metrics_table'; import { metricByField } from './use_container_metrics_table'; -import type { MetricsExplorerSeries } from '../../../../common/http_api'; describe('ContainerMetricsTable', () => { const timerange = { @@ -40,6 +42,8 @@ describe('ContainerMetricsTable', () => { const fetchMock = createFetchMock(); + const loadingIndicatorTestId = 'metricsTableLoadingContent'; + describe('createLazyContainerMetricsTable', () => { it('should lazily load and render the table', async () => { const { fetch, getStartServices } = createStartServicesAccessorMock(fetchMock); @@ -47,7 +51,7 @@ describe('ContainerMetricsTable', () => { render(); - expect(screen.queryByTestId('containerMetricsTableLoader')).not.toBeInTheDocument(); + expect(screen.queryByTestId(loadingIndicatorTestId)).not.toBeInTheDocument(); expect(screen.queryByTestId('containerMetricsTable')).not.toBeInTheDocument(); // Using longer time out since resolving dynamic import can be slow @@ -56,7 +60,7 @@ describe('ContainerMetricsTable', () => { timeout: 10000, }); - expect(screen.queryByTestId('containerMetricsTableLoader')).not.toBeInTheDocument(); + expect(screen.queryByTestId(loadingIndicatorTestId)).not.toBeInTheDocument(); expect(screen.queryByTestId('containerMetricsTable')).toBeInTheDocument(); }, 10000); }); @@ -79,6 +83,44 @@ describe('ContainerMetricsTable', () => { expect(await findByText(/some-container/)).toBeInTheDocument(); }); }); + + it('should render a loading indicator on first load', () => { + const { coreProvidersPropsMock } = createStartServicesAccessorMock(jest.fn()); + + const { queryByTestId } = render( + + + + ); + + expect(queryByTestId(loadingIndicatorTestId)).toBeInTheDocument(); + }); + + it('should render a prompt when indices are missing', () => { + const { coreProvidersPropsMock } = createStartServicesAccessorMock(jest.fn()); + + const { queryByTestId } = render( + + + + ); + + expect(queryByTestId('metricsTableLoadingContent')).toBeInTheDocument(); + }); }); function createFetchMock(): NodeMetricsTableFetchMock { @@ -87,6 +129,9 @@ function createFetchMock(): NodeMetricsTableFetchMock { configuration: { metricAlias: 'some-index-pattern', }, + status: { + metricIndicesExist: true, + }, }, }; @@ -97,7 +142,7 @@ function createFetchMock(): NodeMetricsTableFetchMock { ], }; - return (path: string, options: HttpFetchOptions) => { + return (path: string, _options: HttpFetchOptions) => { // options can be used to read body for filter clause if (path === '/api/metrics/source/default') { return Promise.resolve(sourceMock); diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.tsx b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.tsx index 445bfd7c107fb..6c75bf1e2d16b 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.tsx +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/container_metrics_table.tsx @@ -10,44 +10,37 @@ import type { EuiBasicTableColumn, EuiTableSortingType, } from '@elastic/eui'; -import { - EuiBasicTable, - EuiFlexGroup, - EuiFlexItem, - EuiLoadingSpinner, - EuiSpacer, -} from '@elastic/eui'; +import { EuiBasicTable, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useCallback, useMemo } from 'react'; import type { SortState } from '../shared'; -import { MetricsNodeDetailsLink, NumberCell, StepwisePagination, UptimeCell } from '../shared'; +import { + MetricsNodeDetailsLink, + MetricsTableEmptyIndicesContent, + MetricsTableErrorContent, + MetricsTableLoadingContent, + MetricsTableNoIndicesContent, + NodeMetricsTableData, + NumberCell, + StepwisePagination, + UptimeCell, +} from '../shared'; import type { ContainerNodeMetricsRow } from './use_container_metrics_table'; export interface ContainerMetricsTableProps { + data: NodeMetricsTableData; + isLoading: boolean; + setCurrentPageIndex: (value: number) => void; + setSortState: (state: SortState) => void; + sortState: SortState; timerange: { from: string; to: string; }; - isLoading: boolean; - containers: ContainerNodeMetricsRow[]; - pageCount: number; - currentPageIndex: number; - setCurrentPageIndex: (value: number) => void; - sortState: SortState; - setSortState: (state: SortState) => void; } export const ContainerMetricsTable = (props: ContainerMetricsTableProps) => { - const { - timerange, - isLoading, - containers, - pageCount, - currentPageIndex, - setCurrentPageIndex, - sortState, - setSortState, - } = props; + const { data, isLoading, setCurrentPageIndex, setSortState, sortState, timerange } = props; const columns = useMemo(() => containerNodeColumns(timerange), [timerange]); @@ -68,42 +61,54 @@ export const ContainerMetricsTable = (props: ContainerMetricsTableProps) => { [setSortState, setCurrentPageIndex] ); - if (isLoading) { + if (data.state === 'error') { + return ( + <> + {data.errors.map((error) => ( + + ))} + + ); + } else if (isLoading && data.state !== 'data') { + return ; + } else if (data.state === 'no-indices') { + return ; + } else if (data.state === 'empty-indices') { + return ; + } else if (data.state === 'data') { return ( - - - + <> + } + data-test-subj="containerMetricsTable" + /> + + + + + + + ); + } else { + return null; } - - return ( - <> - - - - - - - - - ); }; function containerNodeColumns( diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/use_container_metrics_table.ts b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/use_container_metrics_table.ts index 6fea0b399b425..946aa2dac6c7e 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/use_container_metrics_table.ts +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/container/use_container_metrics_table.ts @@ -73,11 +73,7 @@ export function useContainerMetricsTable({ [filterClauseDsl] ); - const { - isLoading, - nodes: containers, - pageCount, - } = useInfrastructureNodeMetrics({ + const { data, isLoading } = useInfrastructureNodeMetrics({ metricsExplorerOptions: containerMetricsOptions, timerange, transform: seriesToContainerNodeMetricsRow, @@ -86,14 +82,12 @@ export function useContainerMetricsTable({ }); return { - timerange, + data, isLoading, - containers, - pageCount, - currentPageIndex, setCurrentPageIndex, - sortState, setSortState, + sortState, + timerange, }; } diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.stories.tsx b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.stories.tsx index 862d55a45c094..657ed19f0c0cb 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.stories.tsx +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.stories.tsx @@ -7,12 +7,13 @@ import { EuiCard } from '@elastic/eui'; import { I18nProvider } from '@kbn/i18n-react'; -import type { Meta } from '@storybook/react/types-6-0'; -import React from 'react'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import type { Meta, Story } from '@storybook/react/types-6-0'; +import React from 'react'; import { decorateWithGlobalStorybookThemeProviders } from '../../../test_utils/use_global_storybook_theme'; -import { HostMetricsTable } from './host_metrics_table'; import type { HostMetricsTableProps } from './host_metrics_table'; +import { HostMetricsTable } from './host_metrics_table'; +import { HostNodeMetricsRow } from './use_host_metrics_table'; const mockServices = { application: { @@ -32,6 +33,20 @@ export default { decorateWithGlobalStorybookThemeProviders, ], component: HostMetricsTable, + args: { + data: { + state: 'empty-indices', + }, + isLoading: false, + sortState: { + direction: 'desc', + field: 'averageCpuUsagePercent', + }, + timerange: { + from: 'now-15m', + to: 'now', + }, + }, argTypes: { setSortState: { action: 'Sort field or direction changed', @@ -40,60 +55,102 @@ export default { action: 'Page changed', }, }, -} as Meta; +} as Meta; -const storyArgs: Omit = { - isLoading: false, - hosts: [ - { - name: 'gke-edge-oblt-pool-1-9a60016d-lgg1', - cpuCount: 2, - averageCpuUsagePercent: 99, - totalMemoryMegabytes: 1024, - averageMemoryUsagePercent: 34, - }, - { - name: 'gke-edge-oblt-pool-1-9a60016d-lgg2', - cpuCount: 4, - averageCpuUsagePercent: 74, - totalMemoryMegabytes: 2450, - averageMemoryUsagePercent: 13, - }, - { - name: 'gke-edge-oblt-pool-1-9a60016d-lgg3', - cpuCount: 8, - averageCpuUsagePercent: 56, - totalMemoryMegabytes: 4810, - averageMemoryUsagePercent: 74, - }, - { - name: 'gke-edge-oblt-pool-1-9a60016d-lgg4', - cpuCount: 16, - averageCpuUsagePercent: 34, - totalMemoryMegabytes: 8123, - averageMemoryUsagePercent: 56, - }, - { - name: 'gke-edge-oblt-pool-1-9a60016d-lgg5', - cpuCount: 32, - averageCpuUsagePercent: 13, - totalMemoryMegabytes: 16792, - averageMemoryUsagePercent: 99, - }, - ], - currentPageIndex: 0, - pageCount: 10, - sortState: { - direction: 'desc', - field: 'averageCpuUsagePercent', +const loadedHosts: HostNodeMetricsRow[] = [ + { + name: 'gke-edge-oblt-pool-1-9a60016d-lgg1', + cpuCount: 2, + averageCpuUsagePercent: 99, + totalMemoryMegabytes: 1024, + averageMemoryUsagePercent: 34, }, - timerange: { - from: 'now-15m', - to: 'now', + { + name: 'gke-edge-oblt-pool-1-9a60016d-lgg2', + cpuCount: 4, + averageCpuUsagePercent: 74, + totalMemoryMegabytes: 2450, + averageMemoryUsagePercent: 13, }, -}; + { + name: 'gke-edge-oblt-pool-1-9a60016d-lgg3', + cpuCount: 8, + averageCpuUsagePercent: 56, + totalMemoryMegabytes: 4810, + averageMemoryUsagePercent: 74, + }, + { + name: 'gke-edge-oblt-pool-1-9a60016d-lgg4', + cpuCount: 16, + averageCpuUsagePercent: 34, + totalMemoryMegabytes: 8123, + averageMemoryUsagePercent: 56, + }, + { + name: 'gke-edge-oblt-pool-1-9a60016d-lgg5', + cpuCount: 32, + averageCpuUsagePercent: 13, + totalMemoryMegabytes: 16792, + averageMemoryUsagePercent: 99, + }, +]; -export const Demo = (args: HostMetricsTableProps) => { +const Template: Story = (args) => { return ; }; -Demo.args = storyArgs; + +export const Basic = Template.bind({}); +Basic.args = { + data: { + state: 'data', + currentPageIndex: 1, + pageCount: 10, + rows: loadedHosts, + }, +}; + +export const Loading = Template.bind({}); +Loading.args = { + isLoading: true, +}; + +export const Reloading = Template.bind({}); +Reloading.args = { + data: { + state: 'data', + currentPageIndex: 1, + pageCount: 10, + rows: loadedHosts, + }, + isLoading: true, +}; + +export const MissingIndices = Template.bind({}); +MissingIndices.args = { + data: { + state: 'no-indices', + }, +}; + +export const EmptyIndices = Template.bind({}); +EmptyIndices.args = { + data: { + state: 'empty-indices', + }, +}; + +export const FailedToLoadSource = Template.bind({}); +FailedToLoadSource.args = { + data: { + state: 'error', + errors: [new Error('Failed to load source configuration')], + }, +}; + +export const FailedToLoadMetrics = Template.bind({}); +FailedToLoadMetrics.args = { + data: { + state: 'error', + errors: [new Error('Failed to load metrics')], + }, +}; diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.test.tsx b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.test.tsx index 892972a077835..970ec38707b16 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.test.tsx +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.test.tsx @@ -5,9 +5,11 @@ * 2.0. */ +import type { HttpFetchOptions } from '@kbn/core/public'; +import { CoreProviders } from '../../../apps/common_providers'; import { render, screen, waitFor } from '@testing-library/react'; import React from 'react'; -import type { HttpFetchOptions } from '@kbn/core/public'; +import type { MetricsExplorerSeries } from '../../../../common/http_api'; import type { DataResponseMock, NodeMetricsTableFetchMock, @@ -15,9 +17,9 @@ import type { } from '../test_helpers'; import { createStartServicesAccessorMock } from '../test_helpers'; import { createLazyHostMetricsTable } from './create_lazy_host_metrics_table'; +import { HostMetricsTable } from './host_metrics_table'; import IntegratedHostMetricsTable from './integrated_host_metrics_table'; import { metricByField } from './use_host_metrics_table'; -import type { MetricsExplorerSeries } from '../../../../common/http_api'; describe('HostMetricsTable', () => { const timerange = { @@ -40,6 +42,8 @@ describe('HostMetricsTable', () => { const fetchMock = createFetchMock(); + const loadingIndicatorTestId = 'metricsTableLoadingContent'; + describe('createLazyHostMetricsTable', () => { it('should lazily load and render the table', async () => { const { fetch, getStartServices } = createStartServicesAccessorMock(fetchMock); @@ -47,7 +51,7 @@ describe('HostMetricsTable', () => { render(); - expect(screen.queryByTestId('hostMetricsTableLoader')).not.toBeInTheDocument(); + expect(screen.queryByTestId(loadingIndicatorTestId)).not.toBeInTheDocument(); expect(screen.queryByTestId('hostMetricsTable')).not.toBeInTheDocument(); // Using longer time out since resolving dynamic import can be slow @@ -56,7 +60,7 @@ describe('HostMetricsTable', () => { timeout: 10000, }); - expect(screen.queryByTestId('hostMetricsTableLoader')).not.toBeInTheDocument(); + expect(screen.queryByTestId(loadingIndicatorTestId)).not.toBeInTheDocument(); expect(screen.queryByTestId('hostMetricsTable')).toBeInTheDocument(); }, 10000); }); @@ -79,6 +83,44 @@ describe('HostMetricsTable', () => { expect(await findByText(/some-host/)).toBeInTheDocument(); }); }); + + it('should render a loading indicator on first load', () => { + const { coreProvidersPropsMock } = createStartServicesAccessorMock(jest.fn()); + + const { queryByTestId } = render( + + + + ); + + expect(queryByTestId(loadingIndicatorTestId)).toBeInTheDocument(); + }); + + it('should render a prompt when indices are missing', () => { + const { coreProvidersPropsMock } = createStartServicesAccessorMock(jest.fn()); + + const { queryByTestId } = render( + + + + ); + + expect(queryByTestId('metricsTableLoadingContent')).toBeInTheDocument(); + }); }); function createFetchMock(): NodeMetricsTableFetchMock { @@ -87,6 +129,9 @@ function createFetchMock(): NodeMetricsTableFetchMock { configuration: { metricAlias: 'some-index-pattern', }, + status: { + metricIndicesExist: true, + }, }, }; @@ -97,7 +142,7 @@ function createFetchMock(): NodeMetricsTableFetchMock { ], }; - return (path: string, options: HttpFetchOptions) => { + return (path: string, _options: HttpFetchOptions) => { // options can be used to read body for filter clause if (path === '/api/metrics/source/default') { return Promise.resolve(sourceMock); diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.tsx b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.tsx index 043d9411bf284..53e3576a732b0 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.tsx +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/host_metrics_table.tsx @@ -10,44 +10,36 @@ import type { EuiBasicTableColumn, EuiTableSortingType, } from '@elastic/eui'; -import { - EuiBasicTable, - EuiFlexGroup, - EuiFlexItem, - EuiLoadingSpinner, - EuiSpacer, -} from '@elastic/eui'; +import { EuiBasicTable, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useCallback, useMemo } from 'react'; import type { SortState } from '../shared'; -import { MetricsNodeDetailsLink, NumberCell, StepwisePagination } from '../shared'; +import { + MetricsNodeDetailsLink, + MetricsTableEmptyIndicesContent, + MetricsTableErrorContent, + MetricsTableLoadingContent, + MetricsTableNoIndicesContent, + NodeMetricsTableData, + NumberCell, + StepwisePagination, +} from '../shared'; import type { HostNodeMetricsRow } from './use_host_metrics_table'; export interface HostMetricsTableProps { + data: NodeMetricsTableData; + isLoading: boolean; + setCurrentPageIndex: (value: number) => void; + setSortState: (state: SortState) => void; + sortState: SortState; timerange: { from: string; to: string; }; - isLoading: boolean; - hosts: HostNodeMetricsRow[]; - pageCount: number; - currentPageIndex: number; - setCurrentPageIndex: (value: number) => void; - sortState: SortState; - setSortState: (state: SortState) => void; } export const HostMetricsTable = (props: HostMetricsTableProps) => { - const { - timerange, - isLoading, - hosts, - pageCount, - currentPageIndex, - setCurrentPageIndex, - sortState, - setSortState, - } = props; + const { data, isLoading, setCurrentPageIndex, setSortState, sortState, timerange } = props; const columns = useMemo(() => hostMetricsColumns(timerange), [timerange]); @@ -68,42 +60,54 @@ export const HostMetricsTable = (props: HostMetricsTableProps) => { [setSortState, setCurrentPageIndex] ); - if (isLoading) { + if (data.state === 'error') { return ( - - - + <> + {data.errors.map((error) => ( + + ))} + ); + } else if (isLoading && data.state !== 'data') { + return ; + } else if (data.state === 'no-indices') { + return ; + } else if (data.state === 'empty-indices') { + return ; + } else if (data.state === 'data') { + return ( + <> + } + data-test-subj="hostMetricsTable" + /> + + + + + + + + ); + } else { + return null; } - - return ( - <> - - - - - - - - - ); }; function hostMetricsColumns( diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/use_host_metrics_table.ts b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/use_host_metrics_table.ts index 602b5e519d25d..9492df0b533e6 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/use_host_metrics_table.ts +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/host/use_host_metrics_table.ts @@ -70,11 +70,7 @@ export function useHostMetricsTable({ timerange, filterClauseDsl }: UseNodeMetri [filterClauseDsl] ); - const { - isLoading, - nodes: hosts, - pageCount, - } = useInfrastructureNodeMetrics({ + const { data, isLoading } = useInfrastructureNodeMetrics({ metricsExplorerOptions: hostMetricsOptions, timerange, transform: seriesToHostNodeMetricsRow, @@ -83,14 +79,12 @@ export function useHostMetricsTable({ timerange, filterClauseDsl }: UseNodeMetri }); return { - timerange, + data, isLoading, - hosts, - pageCount, - currentPageIndex, setCurrentPageIndex, - sortState, setSortState, + sortState, + timerange, }; } diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.stories.tsx b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.stories.tsx index 79b1f0d55f92c..eb6057d88d04e 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.stories.tsx +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.stories.tsx @@ -7,12 +7,13 @@ import { EuiCard } from '@elastic/eui'; import { I18nProvider } from '@kbn/i18n-react'; -import type { Meta } from '@storybook/react/types-6-0'; -import React from 'react'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import type { Meta, Story } from '@storybook/react/types-6-0'; +import React from 'react'; import { decorateWithGlobalStorybookThemeProviders } from '../../../test_utils/use_global_storybook_theme'; -import { PodMetricsTable } from './pod_metrics_table'; import type { PodMetricsTableProps } from './pod_metrics_table'; +import { PodMetricsTable } from './pod_metrics_table'; +import { PodNodeMetricsRow } from './use_pod_metrics_table'; const mockServices = { application: { @@ -32,6 +33,20 @@ export default { decorateWithGlobalStorybookThemeProviders, ], component: PodMetricsTable, + args: { + data: { + state: 'empty-indices', + }, + isLoading: false, + sortState: { + direction: 'desc', + field: 'averageCpuUsagePercent', + }, + timerange: { + from: 'now-15m', + to: 'now', + }, + }, argTypes: { setSortState: { action: 'Sort field or direction changed', @@ -42,58 +57,100 @@ export default { }, } as Meta; -const storyArgs: Omit = { - isLoading: false, - pods: [ - { - id: '358d96e3-026f-4440-a487-f6c2301884c0', - name: 'gke-edge-oblt-pool-1-9a60016d-lgg1', - uptime: 23000000, - averageCpuUsagePercent: 99, - averageMemoryUsageMegabytes: 34, - }, - { - id: '358d96e3-026f-4440-a487-f6c2301884c1', - name: 'gke-edge-oblt-pool-1-9a60016d-lgg2', - uptime: 43000000, - averageCpuUsagePercent: 72, - averageMemoryUsageMegabytes: 68, - }, - { - id: '358d96e3-026f-4440-a487-f6c2301884c0', - name: 'gke-edge-oblt-pool-1-9a60016d-lgg3', - uptime: 53000000, - averageCpuUsagePercent: 54, - averageMemoryUsageMegabytes: 132, - }, - { - id: '358d96e3-026f-4440-a487-f6c2301884c0', - name: 'gke-edge-oblt-pool-1-9a60016d-lgg4', - uptime: 63000000, - averageCpuUsagePercent: 34, - averageMemoryUsageMegabytes: 264, - }, - { - id: '358d96e3-026f-4440-a487-f6c2301884c0', - name: 'gke-edge-oblt-pool-1-9a60016d-lgg5', - uptime: 83000000, - averageCpuUsagePercent: 13, - averageMemoryUsageMegabytes: 512, - }, - ], - currentPageIndex: 0, - pageCount: 10, - sortState: { - direction: 'desc', - field: 'averageCpuUsagePercent', +const loadedPods: PodNodeMetricsRow[] = [ + { + id: '358d96e3-026f-4440-a487-f6c2301884c0', + name: 'gke-edge-oblt-pool-1-9a60016d-lgg1', + uptime: 23000000, + averageCpuUsagePercent: 99, + averageMemoryUsageMegabytes: 34, }, - timerange: { - from: 'now-15m', - to: 'now', + { + id: '358d96e3-026f-4440-a487-f6c2301884c1', + name: 'gke-edge-oblt-pool-1-9a60016d-lgg2', + uptime: 43000000, + averageCpuUsagePercent: 72, + averageMemoryUsageMegabytes: 68, }, -}; + { + id: '358d96e3-026f-4440-a487-f6c2301884c0', + name: 'gke-edge-oblt-pool-1-9a60016d-lgg3', + uptime: 53000000, + averageCpuUsagePercent: 54, + averageMemoryUsageMegabytes: 132, + }, + { + id: '358d96e3-026f-4440-a487-f6c2301884c0', + name: 'gke-edge-oblt-pool-1-9a60016d-lgg4', + uptime: 63000000, + averageCpuUsagePercent: 34, + averageMemoryUsageMegabytes: 264, + }, + { + id: '358d96e3-026f-4440-a487-f6c2301884c0', + name: 'gke-edge-oblt-pool-1-9a60016d-lgg5', + uptime: 83000000, + averageCpuUsagePercent: 13, + averageMemoryUsageMegabytes: 512, + }, +]; -export const Demo = (args: PodMetricsTableProps) => { +const Template: Story = (args) => { return ; }; -Demo.args = storyArgs; + +export const Basic = Template.bind({}); +Basic.args = { + data: { + state: 'data', + currentPageIndex: 1, + pageCount: 10, + rows: loadedPods, + }, +}; + +export const Loading = Template.bind({}); +Loading.args = { + isLoading: true, +}; + +export const Reloading = Template.bind({}); +Reloading.args = { + data: { + state: 'data', + currentPageIndex: 1, + pageCount: 10, + rows: loadedPods, + }, + isLoading: true, +}; + +export const MissingIndices = Template.bind({}); +MissingIndices.args = { + data: { + state: 'no-indices', + }, +}; + +export const EmptyIndices = Template.bind({}); +EmptyIndices.args = { + data: { + state: 'empty-indices', + }, +}; + +export const FailedToLoadSource = Template.bind({}); +FailedToLoadSource.args = { + data: { + state: 'error', + errors: [new Error('Failed to load source configuration')], + }, +}; + +export const FailedToLoadMetrics = Template.bind({}); +FailedToLoadMetrics.args = { + data: { + state: 'error', + errors: [new Error('Failed to load metrics')], + }, +}; diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.test.tsx b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.test.tsx index bc3b7199ecd5d..aba60015d2633 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.test.tsx +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.test.tsx @@ -5,9 +5,11 @@ * 2.0. */ +import type { HttpFetchOptions } from '@kbn/core/public'; +import { CoreProviders } from '../../../apps/common_providers'; import { render, screen, waitFor } from '@testing-library/react'; import React from 'react'; -import type { HttpFetchOptions } from '@kbn/core/public'; +import type { MetricsExplorerSeries } from '../../../../common/http_api'; import type { DataResponseMock, NodeMetricsTableFetchMock, @@ -16,8 +18,8 @@ import type { import { createStartServicesAccessorMock } from '../test_helpers'; import { createLazyPodMetricsTable } from './create_lazy_pod_metrics_table'; import IntegratedPodMetricsTable from './integrated_pod_metrics_table'; +import { PodMetricsTable } from './pod_metrics_table'; import { metricByField } from './use_pod_metrics_table'; -import type { MetricsExplorerSeries } from '../../../../common/http_api'; describe('PodMetricsTable', () => { const timerange = { @@ -40,6 +42,8 @@ describe('PodMetricsTable', () => { const fetchMock = createFetchMock(); + const loadingIndicatorTestId = 'metricsTableLoadingContent'; + describe('createLazyPodMetricsTable', () => { it('should lazily load and render the table', async () => { const { fetch, getStartServices } = createStartServicesAccessorMock(fetchMock); @@ -47,7 +51,7 @@ describe('PodMetricsTable', () => { render(); - expect(screen.queryByTestId('podMetricsTableLoader')).not.toBeInTheDocument(); + expect(screen.queryByTestId(loadingIndicatorTestId)).not.toBeInTheDocument(); expect(screen.queryByTestId('podMetricsTable')).not.toBeInTheDocument(); // Using longer time out since resolving dynamic import can be slow @@ -56,7 +60,7 @@ describe('PodMetricsTable', () => { timeout: 10000, }); - expect(screen.queryByTestId('podMetricsTableLoader')).not.toBeInTheDocument(); + expect(screen.queryByTestId(loadingIndicatorTestId)).not.toBeInTheDocument(); expect(screen.queryByTestId('podMetricsTable')).toBeInTheDocument(); }, 10000); }); @@ -79,6 +83,44 @@ describe('PodMetricsTable', () => { expect(await findByText(/some-pod/)).toBeInTheDocument(); }); }); + + it('should render a loading indicator on first load', () => { + const { coreProvidersPropsMock } = createStartServicesAccessorMock(jest.fn()); + + const { queryByTestId } = render( + + + + ); + + expect(queryByTestId(loadingIndicatorTestId)).toBeInTheDocument(); + }); + + it('should render a prompt when indices are missing', () => { + const { coreProvidersPropsMock } = createStartServicesAccessorMock(jest.fn()); + + const { queryByTestId } = render( + + + + ); + + expect(queryByTestId('metricsTableLoadingContent')).toBeInTheDocument(); + }); }); function createFetchMock(): NodeMetricsTableFetchMock { @@ -87,6 +129,9 @@ function createFetchMock(): NodeMetricsTableFetchMock { configuration: { metricAlias: 'some-index-pattern', }, + status: { + metricIndicesExist: true, + }, }, }; @@ -97,7 +142,7 @@ function createFetchMock(): NodeMetricsTableFetchMock { ], }; - return (path: string, options: HttpFetchOptions) => { + return (path: string, _options: HttpFetchOptions) => { // options can be used to read body for filter clause if (path === '/api/metrics/source/default') { return Promise.resolve(sourceMock); diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.tsx b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.tsx index 9e8016ac1c2ef..7021371b63245 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.tsx +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/pod_metrics_table.tsx @@ -10,44 +10,37 @@ import type { EuiBasicTableColumn, EuiTableSortingType, } from '@elastic/eui'; -import { - EuiBasicTable, - EuiFlexGroup, - EuiFlexItem, - EuiLoadingSpinner, - EuiSpacer, -} from '@elastic/eui'; +import { EuiBasicTable, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useMemo } from 'react'; import type { SortState } from '../shared'; -import { MetricsNodeDetailsLink, NumberCell, StepwisePagination, UptimeCell } from '../shared'; +import { + MetricsNodeDetailsLink, + MetricsTableEmptyIndicesContent, + MetricsTableErrorContent, + MetricsTableLoadingContent, + MetricsTableNoIndicesContent, + NodeMetricsTableData, + NumberCell, + StepwisePagination, + UptimeCell, +} from '../shared'; import type { PodNodeMetricsRow } from './use_pod_metrics_table'; export interface PodMetricsTableProps { + data: NodeMetricsTableData; + isLoading: boolean; + setCurrentPageIndex: (value: number) => void; + setSortState: (state: SortState) => void; + sortState: SortState; timerange: { from: string; to: string; }; - isLoading: boolean; - pods: PodNodeMetricsRow[]; - pageCount: number; - currentPageIndex: number; - setCurrentPageIndex: (value: number) => void; - sortState: SortState; - setSortState: (state: SortState) => void; } export const PodMetricsTable = (props: PodMetricsTableProps) => { - const { - timerange, - isLoading, - pods, - pageCount, - currentPageIndex, - setCurrentPageIndex, - sortState, - setSortState, - } = props; + const { data, isLoading, setCurrentPageIndex, setSortState, sortState, timerange } = props; const columns = useMemo(() => podNodeColumns(timerange), [timerange]); @@ -66,42 +59,54 @@ export const PodMetricsTable = (props: PodMetricsTableProps) => { setCurrentPageIndex(0); }; - if (isLoading) { + if (data.state === 'error') { return ( - - - + <> + {data.errors.map((error) => ( + + ))} + ); + } else if (isLoading && data.state !== 'data') { + return ; + } else if (data.state === 'no-indices') { + return ; + } else if (data.state === 'empty-indices') { + return ; + } else if (data.state === 'data') { + return ( + <> + } + data-test-subj="podMetricsTable" + /> + + + + + + + + ); + } else { + return null; } - - return ( - <> - - - - - - - - - ); }; function podNodeColumns( diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/use_pod_metrics_table.ts b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/use_pod_metrics_table.ts index cf097c52bc629..755a8c06aa3fa 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/use_pod_metrics_table.ts +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/pod/use_pod_metrics_table.ts @@ -71,11 +71,7 @@ export function usePodMetricsTable({ timerange, filterClauseDsl }: UseNodeMetric [filterClauseDsl] ); - const { - isLoading, - nodes: pods, - pageCount, - } = useInfrastructureNodeMetrics({ + const { data, isLoading } = useInfrastructureNodeMetrics({ metricsExplorerOptions: podMetricsOptions, timerange, transform: seriesToPodNodeMetricsRow, @@ -84,14 +80,13 @@ export function usePodMetricsTable({ timerange, filterClauseDsl }: UseNodeMetric }); return { - timerange, - isLoading, - pods, - pageCount, currentPageIndex, + data, + isLoading, setCurrentPageIndex, - sortState, setSortState, + sortState, + timerange, }; } diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/assets/no_results_dark.svg b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/assets/no_results_dark.svg new file mode 100644 index 0000000000000..e76cfc1027270 --- /dev/null +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/assets/no_results_dark.svg @@ -0,0 +1,416 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/assets/no_results_light.svg b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/assets/no_results_light.svg new file mode 100644 index 0000000000000..a2546872380a5 --- /dev/null +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/assets/no_results_light.svg @@ -0,0 +1,416 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/error_content.tsx b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/error_content.tsx new file mode 100644 index 0000000000000..457dc193d0a9b --- /dev/null +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/error_content.tsx @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiCodeBlock, EuiEmptyPrompt } from '@elastic/eui'; +import React from 'react'; + +export const MetricsTableErrorContent = ({ error }: { error: Error }) => ( + + {error.stack ?? `${error}`} + + } + color="danger" + data-test-subj="metricsTableErrorContent" + iconType="alert" + title={

{error.message}

} + titleSize="s" + /> +); diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/index.ts b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/index.ts index fa4398a279e86..b0319a472930b 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/index.ts +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/index.ts @@ -5,7 +5,13 @@ * 2.0. */ +export { MetricsTableErrorContent } from './error_content'; export { MetricsNodeDetailsLink } from './metrics_node_details_link'; +export { + MetricsTableEmptyIndicesContent, + MetricsTableLoadingContent, + MetricsTableNoIndicesContent, +} from './no_data_content'; export { NumberCell } from './number_cell'; export { StepwisePagination } from './stepwise_pagination'; export { UptimeCell } from './uptime_cell'; diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/no_data_content.tsx b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/no_data_content.tsx new file mode 100644 index 0000000000000..55f403d960ff5 --- /dev/null +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/components/no_data_content.tsx @@ -0,0 +1,128 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + COLOR_MODES_STANDARD, + EuiButton, + EuiDescriptionList, + EuiDescriptionListDescription, + EuiDescriptionListTitle, + EuiEmptyPrompt, + EuiImage, + EuiLoadingLogo, + useEuiTheme, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { useLinkProps } from '@kbn/observability-plugin/public'; +import React from 'react'; +import { + noMetricIndicesPromptDescription, + noMetricIndicesPromptPrimaryActionTitle, + noMetricIndicesPromptTitle, +} from '../../../empty_states'; +import noResultsIllustrationDark from './assets/no_results_dark.svg'; +import noResultsIllustrationLight from './assets/no_results_light.svg'; + +export const MetricsTableLoadingContent = () => ( + } + title={ +

+ +

+ } + /> +); + +export const MetricsTableNoIndicesContent = () => { + const integrationsLinkProps = useLinkProps({ app: 'integrations', pathname: 'browse' }); + + return ( + {noMetricIndicesPromptTitle}

} + body={

{noMetricIndicesPromptDescription}

} + actions={ + + {noMetricIndicesPromptPrimaryActionTitle} + + } + /> + ); +}; + +export const MetricsTableEmptyIndicesContent = () => { + return ( + + + + + + + + + + + + + + + } + color="subdued" + data-test-subj="metricsTableEmptyIndicesContent" + icon={} + layout="horizontal" + title={ +

+ +

+ } + titleSize="m" + /> + ); +}; + +const NoResultsIllustration = () => { + const { colorMode } = useEuiTheme(); + + const illustration = + colorMode === COLOR_MODES_STANDARD.dark + ? noResultsIllustrationDark + : noResultsIllustrationLight; + + return ( + + ); +}; + +const noResultsIllustrationAlternativeText = i18n.translate( + 'xpack.infra.metricsTable.noResultsIllustrationAlternativeText', + { defaultMessage: 'A magnifying glass with an exclamation mark' } +); diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/hooks/use_infrastructure_node_metrics.ts b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/hooks/use_infrastructure_node_metrics.ts index 93ddcc8bf4aa8..95e388d3aae64 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/hooks/use_infrastructure_node_metrics.ts +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/hooks/use_infrastructure_node_metrics.ts @@ -19,6 +19,7 @@ import type { MetricsExplorerTimeOptions, } from '../../../../pages/metrics/metrics_explorer/hooks/use_metrics_explorer_options'; import { useTrackedPromise } from '../../../../utils/use_tracked_promise'; +import { NodeMetricsTableData } from '../types'; export interface SortState { field: keyof T; @@ -51,10 +52,10 @@ export const useInfrastructureNodeMetrics = ( const [transformedNodes, setTransformedNodes] = useState([]); const fetch = useKibanaHttpFetch(); - const { source, isLoadingSource } = useSourceContext(); + const { source, isLoadingSource, loadSourceRequest, metricIndicesExist } = useSourceContext(); const timerangeWithInterval = useTimerangeWithInterval(timerange); - const [{ state: promiseState }, fetchNodes] = useTrackedPromise( + const [fetchNodesRequest, fetchNodes] = useTrackedPromise( { createPromise: (): Promise => { if (!source) { @@ -78,16 +79,22 @@ export const useInfrastructureNodeMetrics = ( onResolve: (response: MetricsExplorerResponse) => { setTransformedNodes(response.series.map(transform)); }, - onReject: (error) => { - // What to do about this? - // eslint-disable-next-line no-console - console.log(error); - }, cancelPreviousOn: 'creation', }, [source, metricsExplorerOptions, timerangeWithInterval] ); - const isLoadingNodes = promiseState === 'pending' || promiseState === 'uninitialized'; + + const isLoadingNodes = + fetchNodesRequest.state === 'pending' || fetchNodesRequest.state === 'uninitialized'; + const isLoading = isLoadingSource || isLoadingNodes; + + const errors = useMemo( + () => [ + ...(loadSourceRequest.state === 'rejected' ? [wrapAsError(loadSourceRequest.value)] : []), + ...(fetchNodesRequest.state === 'rejected' ? [wrapAsError(fetchNodesRequest.value)] : []), + ], + [fetchNodesRequest, loadSourceRequest] + ); useEffect(() => { fetchNodes(); @@ -109,10 +116,23 @@ export const useInfrastructureNodeMetrics = ( const pageCount = useMemo(() => Math.ceil(top100Nodes.length / TABLE_PAGE_SIZE), [top100Nodes]); + const data = useMemo>( + () => + errors.length > 0 + ? { state: 'error', errors } + : metricIndicesExist == null + ? { state: 'unknown' } + : !metricIndicesExist + ? { state: 'no-indices' } + : nodes.length <= 0 + ? { state: 'empty-indices' } + : { state: 'data', currentPageIndex, pageCount, rows: nodes }, + [currentPageIndex, errors, metricIndicesExist, nodes, pageCount] + ); + return { - isLoading: isLoadingSource || isLoadingNodes, - nodes, - pageCount, + isLoading, + data, }; }; @@ -188,3 +208,5 @@ function sortDescending(nodeAValue: unknown, nodeBValue: unknown) { return 0; } + +const wrapAsError = (value: any): Error => (value instanceof Error ? value : new Error(`${value}`)); diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/index.ts b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/index.ts index 12bc83c008e8f..b980f93cd46ef 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/index.ts +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/index.ts @@ -5,7 +5,16 @@ * 2.0. */ -export { MetricsNodeDetailsLink, NumberCell, StepwisePagination, UptimeCell } from './components'; +export { + MetricsNodeDetailsLink, + MetricsTableEmptyIndicesContent, + MetricsTableErrorContent, + MetricsTableLoadingContent, + MetricsTableNoIndicesContent, + NumberCell, + StepwisePagination, + UptimeCell, +} from './components'; export { averageOfValues, createMetricByFieldLookup, @@ -17,6 +26,7 @@ export { export type { MetricsMap, MetricsQueryOptions, SortState } from './hooks'; export type { IntegratedNodeMetricsTableProps, + NodeMetricsTableData, SourceProviderProps, UseNodeMetricsTableOptions, } from './types'; diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/types.ts b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/types.ts index 5ab363dc7fafd..36fb29c57ecc5 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/types.ts +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/shared/types.ts @@ -21,3 +21,24 @@ export interface SourceProviderProps { export type IntegratedNodeMetricsTableProps = UseNodeMetricsTableOptions & SourceProviderProps & CoreProvidersProps; + +export type NodeMetricsTableData = + | { + state: 'unknown'; + } + | { + state: 'no-indices'; + } + | { + state: 'empty-indices'; + } + | { + state: 'data'; + currentPageIndex: number; + pageCount: number; + rows: NodeMetricsRow[]; + } + | { + state: 'error'; + errors: Error[]; + }; diff --git a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/test_helpers.ts b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/test_helpers.ts index b4c5639b00711..a84ecd94e3182 100644 --- a/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/test_helpers.ts +++ b/x-pack/plugins/infra/public/components/infrastructure_node_metrics_tables/test_helpers.ts @@ -5,9 +5,10 @@ * 2.0. */ -import { DeepPartial } from 'utility-types'; import type { HttpFetchOptions } from '@kbn/core/public'; import { coreMock } from '@kbn/core/public/mocks'; +import { I18nProvider } from '@kbn/i18n-react'; +import { DeepPartial } from 'utility-types'; import type { MetricsExplorerResponse } from '../../../common/http_api/metrics_explorer'; import type { MetricsSourceConfigurationResponse } from '../../../common/metrics_sources'; import type { CoreProvidersProps } from '../../apps/common_providers'; @@ -28,6 +29,7 @@ export function createStartServicesAccessorMock(fetchMock: NodeMetricsTableFetch const core = coreMock.createStart(); // @ts-expect-error core.http.fetch has overloads, Jest/TypeScript only picks the first definition when mocking core.http.fetch.mockImplementation(fetchMock); + core.i18n.Context.mockImplementation(I18nProvider as () => JSX.Element); const coreProvidersPropsMock: CoreProvidersProps = { core, diff --git a/x-pack/plugins/infra/public/containers/metrics_source/source.tsx b/x-pack/plugins/infra/public/containers/metrics_source/source.tsx index 1b90106d69ed2..393cad266a123 100644 --- a/x-pack/plugins/infra/public/containers/metrics_source/source.tsx +++ b/x-pack/plugins/infra/public/containers/metrics_source/source.tsx @@ -145,6 +145,7 @@ export const useSource = ({ sourceId }: { sourceId: string }) => { isUninitialized, hasFailedLoadingSource: loadSourceRequest.state === 'rejected', loadSource, + loadSourceRequest, loadSourceFailureMessage: loadSourceRequest.state === 'rejected' ? `${loadSourceRequest.value}` : undefined, metricIndicesExist, diff --git a/x-pack/plugins/infra/public/pages/metrics/page_template.tsx b/x-pack/plugins/infra/public/pages/metrics/page_template.tsx index 3cac0b68ec91c..53a0cc21dd7ce 100644 --- a/x-pack/plugins/infra/public/pages/metrics/page_template.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/page_template.tsx @@ -5,10 +5,14 @@ * 2.0. */ -import React from 'react'; import { i18n } from '@kbn/i18n'; import type { LazyObservabilityPageTemplateProps } from '@kbn/observability-plugin/public'; import { KibanaPageTemplateProps } from '@kbn/shared-ux-components'; +import React from 'react'; +import { + noMetricIndicesPromptDescription, + noMetricIndicesPromptPrimaryActionTitle, +} from '../../components/empty_states'; import { useKibanaContextForPlugin } from '../../hooks/use_kibana'; interface MetricsPageTemplateProps extends LazyObservabilityPageTemplateProps { @@ -37,13 +41,8 @@ export const MetricsPageTemplate: React.FC = ({ }), action: { beats: { - title: i18n.translate('xpack.infra.metrics.noDataConfig.beatsCard.title', { - defaultMessage: 'Add a metrics integration', - }), - description: i18n.translate('xpack.infra.metrics.noDataConfig.beatsCard.description', { - defaultMessage: - 'Use Beats to send metrics data to Elasticsearch. We make it easy with modules for many popular systems and apps.', - }), + title: noMetricIndicesPromptPrimaryActionTitle, + description: noMetricIndicesPromptDescription, }, }, docsLink: docLinks.links.observability.guide, From 4a7d910da5e008cd37bcba0d49cd7bb9e8ae09e6 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Wed, 22 Jun 2022 11:19:08 +0100 Subject: [PATCH 25/61] [ML] Fix trained model map associating wrong model to job (#134849) * [ML] Fix trained model map associating wrong model to job * removing comment * removing throw * changing error message to match test --- .../data_frame_analytics/analytics_manager.ts | 237 ++++++------------ 1 file changed, 83 insertions(+), 154 deletions(-) diff --git a/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_manager.ts b/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_manager.ts index d4076a7cf496a..d841777215eae 100644 --- a/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_manager.ts +++ b/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_manager.ts @@ -6,18 +6,17 @@ */ import Boom from '@hapi/boom'; +import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { IScopedClusterClient } from '@kbn/core/server'; import { INDEX_CREATED_BY, JOB_MAP_NODE_TYPES, JobMapNodeTypes, } from '../../../common/constants/data_frame_analytics'; -import { TrainedModelConfigResponse } from '../../../common/types/trained_models'; import { AnalyticsMapEdgeElement, AnalyticsMapReturnType, AnalyticsMapNodeElement, - DataFrameAnalyticsStats, MapElements, } from '../../../common/types/data_frame_analytics'; import { getAnalysisType } from '../../../common/util/analytics_utils'; @@ -36,53 +35,18 @@ import { import type { MlClient } from '../../lib/ml_client'; export class AnalyticsManager { - private _client: IScopedClusterClient; - private _mlClient: MlClient; - private _inferenceModels: TrainedModelConfigResponse[]; - private _jobStats: DataFrameAnalyticsStats[]; - - constructor(mlClient: MlClient, client: IScopedClusterClient) { - this._client = client; - this._mlClient = mlClient; - this._inferenceModels = []; - this._jobStats = []; - } - - public set jobStats(stats) { - this._jobStats = stats; - } - - public get jobStats() { - return this._jobStats; - } - - public set inferenceModels(models) { - this._inferenceModels = models; - } - - public get inferenceModels() { - return this._inferenceModels; - } - - async setInferenceModels() { - try { - const models = await this.getAnalyticsModels(); - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete - this.inferenceModels = models; - } catch (error) { - // eslint-disable-next-line - console.error('Unable to fetch inference models', error); - } - } - - async setJobStats() { - try { - const jobStats = await this.getAnalyticsStats(); - this.jobStats = jobStats; - } catch (error) { - // eslint-disable-next-line - console.error('Unable to fetch job stats', error); - } + private _trainedModels: estypes.MlTrainedModelConfig[] = []; + private _jobs: estypes.MlDataframeAnalyticsSummary[] = []; + + constructor(private _mlClient: MlClient, private _client: IScopedClusterClient) {} + + private async initData() { + const [models, jobs] = await Promise.all([ + this._mlClient.getTrainedModels(), + this._mlClient.getDataFrameAnalytics({ size: 1000 }), + ]); + this._trainedModels = models.trained_model_configs; + this._jobs = jobs.data_frame_analytics; } private isDuplicateElement(analyticsId: string, elements: MapElements[]): boolean { @@ -99,50 +63,6 @@ export class AnalyticsManager { return isDuplicate; } - private async getAnalyticsModelData(modelId: string) { - const resp = await this._mlClient.getTrainedModels({ - model_id: modelId, - }); - const modelData = resp?.trained_model_configs[0]; - return modelData; - } - - private async getAnalyticsModels() { - const resp = await this._mlClient.getTrainedModels(); - const models = resp?.trained_model_configs; - return models; - } - - private async getAnalyticsStats() { - const resp = await this._mlClient.getDataFrameAnalyticsStats({ size: 1000 }); - const stats = resp?.data_frame_analytics; - return stats; - } - - private async getAnalyticsData(analyticsId?: string) { - const options = analyticsId - ? { - id: analyticsId, - } - : undefined; - const resp = await this._mlClient.getDataFrameAnalytics(options); - let jobData = analyticsId ? resp?.data_frame_analytics[0] : resp?.data_frame_analytics; - - if (analyticsId !== undefined) { - const jobStats = this.findJobStats(analyticsId); - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete - jobData = { ...jobData, stats: { ...jobStats } }; - } else { - // @ts-expect-error @elastic-elasticsearch Data frame types incompletes - jobData = jobData.map((job: any) => { - const jobStats = this.findJobStats(job.id); - return { ...job, stats: { ...jobStats } }; - }); - } - - return jobData; - } - private async getIndexData(index: string) { const indexData = await this._client.asInternalUser.indices.get({ index, @@ -158,14 +78,30 @@ export class AnalyticsManager { return transformData; } - private findJobModel(analyticsId: string): any { - return this.inferenceModels.find( - (model) => model.metadata?.analytics_config?.id === analyticsId + private findJobModel(analyticsId: string, analyticsCreateTime: number): any { + return this._trainedModels.find( + (model) => + // @ts-expect-error @elastic-elasticsearch Data frame types incomplete + model.metadata?.analytics_config?.id === analyticsId && + // @ts-expect-error @elastic-elasticsearch Data frame types incomplete + model.metadata?.analytics_config.create_time === analyticsCreateTime ); } - private findJobStats(analyticsId: string): DataFrameAnalyticsStats | undefined { - return this.jobStats.find((js) => js.id === analyticsId); + private findJob(id: string): estypes.MlDataframeAnalyticsSummary { + const job = this._jobs.find((js) => js.id === id); + if (job === undefined) { + throw Error(`No known job with id '${id}'`); + } + return job; + } + + private findTrainedModel(id: string): estypes.MlTrainedModelConfig { + const trainedModel = this._trainedModels.find((js) => js.model_id === id); + if (trainedModel === undefined) { + throw Error(`No known trained model with id '${id}'`); + } + return trainedModel; } private async getNextLink({ @@ -188,7 +124,7 @@ export class AnalyticsManager { return { isWildcardIndexPattern, isIndexPattern: true, indexData, meta }; } else if (type.includes(JOB_MAP_NODE_TYPES.ANALYTICS)) { // fetch job associated with this index - const jobData = await this.getAnalyticsData(id); + const jobData = this.findJob(id); return { jobData, isJob: true }; } else if (type === JOB_MAP_NODE_TYPES.TRANSFORM) { // fetch transform so we can get original index pattern @@ -200,13 +136,16 @@ export class AnalyticsManager { } } - private getAnalyticsModelElements(analyticsId: string): { + private getAnalyticsModelElements( + analyticsId: string, + analyticsCreateTime: number + ): { modelElement?: AnalyticsMapNodeElement; modelDetails?: any; edgeElement?: AnalyticsMapEdgeElement; } { - // Get inference model for analytics job and create model node - const analyticsModel = this.findJobModel(analyticsId); + // Get trained model for analytics job and create model node + const analyticsModel = this.findJobModel(analyticsId, analyticsCreateTime); let modelElement; let edgeElement; @@ -260,12 +199,13 @@ export class AnalyticsManager { * Prepares the initial elements for incoming modelId * @param modelId */ - async getInitialElementsModelRoot(modelId: string): Promise { + private async getInitialElementsModelRoot(modelId: string): Promise { const resultElements = []; const modelElements = []; const details: any = {}; + let data: estypes.MlTrainedModelConfig | estypes.MlDataframeAnalyticsSummary; // fetch model data and create model elements - let data = await this.getAnalyticsModelData(modelId); + data = this.findTrainedModel(modelId); const modelNodeId = `${data.model_id}-${JOB_MAP_NODE_TYPES.TRAINED_MODEL}`; // @ts-expect-error @elastic-elasticsearch Data frame types incomplete const sourceJobId = data?.metadata?.analytics_config?.id; @@ -286,22 +226,18 @@ export class AnalyticsManager { // fetch source job data and create elements if (sourceJobId !== undefined) { try { - // @ts-expect-error @elastic-elasticsearch Data frame types incompletes - data = await this.getAnalyticsData(sourceJobId); - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete + data = this.findJob(sourceJobId); + nextLinkId = data?.source?.index[0]; nextType = JOB_MAP_NODE_TYPES.INDEX; - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete previousNodeId = `${data.id}-${JOB_MAP_NODE_TYPES.ANALYTICS}`; resultElements.push({ data: { id: previousNodeId, - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete label: data.id, type: JOB_MAP_NODE_TYPES.ANALYTICS, - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete analysisType: getAnalysisType(data?.analysis), }, }); @@ -330,25 +266,25 @@ export class AnalyticsManager { * Prepares the initial elements for incoming jobId * @param jobId */ - async getInitialElementsJobRoot(jobId: string): Promise { + private async getInitialElementsJobRoot( + jobId: string, + jobCreateTime: number + ): Promise { const resultElements = []; const modelElements = []; const details: any = {}; - const data = await this.getAnalyticsData(jobId); - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete + const data = this.findJob(jobId); + const nextLinkId = data?.source?.index[0]; const nextType: JobMapNodeTypes = JOB_MAP_NODE_TYPES.INDEX; - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete const previousNodeId = `${data.id}-${JOB_MAP_NODE_TYPES.ANALYTICS}`; resultElements.push({ data: { id: previousNodeId, - // @ts-expect-error @elastic-elasticsearch Data frame types incompletes label: data.id, type: JOB_MAP_NODE_TYPES.ANALYTICS, - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete analysisType: getAnalysisType(data?.analysis), isRoot: true, }, @@ -356,7 +292,10 @@ export class AnalyticsManager { details[previousNodeId] = data; - const { modelElement, modelDetails, edgeElement } = this.getAnalyticsModelElements(jobId); + const { modelElement, modelDetails, edgeElement } = this.getAnalyticsModelElements( + jobId, + jobCreateTime + ); if (isAnalyticsMapNodeElement(modelElement)) { modelElements.push(modelElement); details[modelElement.data.id] = modelDetails; @@ -373,7 +312,7 @@ export class AnalyticsManager { * @param jobId (optional) * @param modelId (optional) */ - async getAnalyticsMap({ + public async getAnalyticsMap({ analyticsId, modelId, }: GetAnalyticsMapArgs): Promise { @@ -382,11 +321,13 @@ export class AnalyticsManager { const indexPatternElements: MapElements[] = []; try { - await Promise.all([this.setInferenceModels(), this.setJobStats()]); + await this.initData(); // Create first node for incoming analyticsId or modelId let initialData: InitialElementsReturnType = {} as InitialElementsReturnType; - if (analyticsId !== undefined) { - initialData = await this.getInitialElementsJobRoot(analyticsId); + const job = analyticsId === undefined ? undefined : this.findJob(analyticsId); + if (analyticsId !== undefined && job !== undefined) { + const jobCreateTime = job.create_time!; + initialData = await this.getInitialElementsJobRoot(analyticsId, jobCreateTime); } else if (modelId !== undefined) { initialData = await this.getInitialElementsModelRoot(modelId); } @@ -486,8 +427,11 @@ export class AnalyticsManager { nextLinkId = data?.source?.index[0]; nextType = JOB_MAP_NODE_TYPES.INDEX; - // Get inference model for analytics job and create model node - ({ modelElement, modelDetails, edgeElement } = this.getAnalyticsModelElements(data.id)); + // Get trained model for analytics job and create model node + ({ modelElement, modelDetails, edgeElement } = this.getAnalyticsModelElements( + data.id, + data.create_time + )); if (isAnalyticsMapNodeElement(modelElement)) { modelElements.push(modelElement); result.details[modelElement.data.id] = modelDetails; @@ -534,30 +478,23 @@ export class AnalyticsManager { // fetch all jobs associated with root transform if defined, otherwise check root index if (rootTransform !== undefined || rootIndexPattern !== undefined) { - const jobs = await this.getAnalyticsData(); + const jobs = this._jobs; const comparator = rootTransform !== undefined ? rootTransform : rootIndexPattern; - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete for (let i = 0; i < jobs.length; i++) { if ( - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete jobs[i]?.source?.index[0] === comparator && - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete this.isDuplicateElement(jobs[i].id, result.elements) === false ) { - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete const nodeId = `${jobs[i].id}-${JOB_MAP_NODE_TYPES.ANALYTICS}`; result.elements.push({ data: { id: nodeId, - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete label: jobs[i].id, type: JOB_MAP_NODE_TYPES.ANALYTICS, - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete analysisType: getAnalysisType(jobs[i]?.analysis), }, }); - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete result.details[nodeId] = jobs[i]; const source = `${comparator}-${JOB_MAP_NODE_TYPES.INDEX}`; result.elements.push({ @@ -567,10 +504,10 @@ export class AnalyticsManager { target: nodeId, }, }); - // Get inference model for analytics job and create model node + // Get trained model for analytics job and create model node ({ modelElement, modelDetails, edgeElement } = this.getAnalyticsModelElements( - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete - jobs[i].id + jobs[i].id, + jobs[i].create_time! )); if (isAnalyticsMapNodeElement(modelElement)) { modelElements.push(modelElement); @@ -592,32 +529,31 @@ export class AnalyticsManager { } } - async extendAnalyticsMapForAnalyticsJob({ + public async extendAnalyticsMapForAnalyticsJob({ analyticsId, index, }: ExtendAnalyticsMapArgs): Promise { const result: AnalyticsMapReturnType = { elements: [], details: {}, error: null }; try { - await Promise.all([this.setInferenceModels(), this.setJobStats()]); - const jobs = await this.getAnalyticsData(); + await this.initData(); + const jobs = this._jobs; let rootIndex; let rootIndexNodeId; if (analyticsId !== undefined) { - const jobData = await this.getAnalyticsData(analyticsId); - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete + const jobData = this.findJob(analyticsId); + const currentJobNodeId = `${jobData.id}-${JOB_MAP_NODE_TYPES.ANALYTICS}`; - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete rootIndex = Array.isArray(jobData?.dest?.index) - ? // @ts-expect-error @elastic-elasticsearch Data frame types incomplete - jobData?.dest?.index[0] - : // @ts-expect-error @elastic-elasticsearch Data frame types incomplete - jobData?.dest?.index; + ? jobData?.dest?.index[0] + : jobData?.dest?.index; rootIndexNodeId = `${rootIndex}-${JOB_MAP_NODE_TYPES.INDEX}`; - // Fetch inference model for incoming job id and add node and edge - const { modelElement, modelDetails, edgeElement } = - this.getAnalyticsModelElements(analyticsId); + // Fetch trained model for incoming job id and add node and edge + const { modelElement, modelDetails, edgeElement } = this.getAnalyticsModelElements( + analyticsId, + jobData.create_time! + ); if (isAnalyticsMapNodeElement(modelElement)) { result.elements.push(modelElement); result.details[modelElement.data.id] = modelDetails; @@ -650,28 +586,21 @@ export class AnalyticsManager { rootIndexNodeId = `${rootIndex}-${JOB_MAP_NODE_TYPES.INDEX}`; } - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete for (let i = 0; i < jobs.length; i++) { if ( - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete jobs[i]?.source?.index[0] === rootIndex && - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete this.isDuplicateElement(jobs[i].id, result.elements) === false ) { // Create node for associated job - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete const nodeId = `${jobs[i].id}-${JOB_MAP_NODE_TYPES.ANALYTICS}`; result.elements.push({ data: { id: nodeId, - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete label: jobs[i].id, type: JOB_MAP_NODE_TYPES.ANALYTICS, - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete analysisType: getAnalysisType(jobs[i]?.analysis), }, }); - // @ts-expect-error @elastic-elasticsearch Data frame types incomplete result.details[nodeId] = jobs[i]; result.elements.push({ From 0f9714876c058955c88298ccd015ef2fcb72196b Mon Sep 17 00:00:00 2001 From: Pierre Gayvallet Date: Wed, 22 Jun 2022 14:27:02 +0200 Subject: [PATCH 26/61] Move server-side analytics service to packages (#134736) * creating the empty packages * move public types to public package * move implement and mocks to packages * update readmes * move preboot contract into public package * fix imports * lint * update generated doc --- package.json | 6 ++ packages/BUILD.bazel | 6 ++ .../BUILD.bazel | 101 ++++++++++++++++++ .../core-analytics-server-internal/README.md | 4 + .../jest.config.js | 13 +++ .../package.json | 7 ++ .../src}/analytics_service.ts | 29 ++--- .../src/index.ts | 9 ++ .../tsconfig.json | 17 +++ .../core-analytics-server-mocks/BUILD.bazel | 100 +++++++++++++++++ .../core-analytics-server-mocks/README.md | 4 + .../jest.config.js | 13 +++ .../core-analytics-server-mocks/package.json | 7 ++ .../src}/analytics_service.mock.ts | 8 +- .../core-analytics-server-mocks/src/index.ts | 9 ++ .../core-analytics-server-mocks/tsconfig.json | 17 +++ .../core-analytics-server/BUILD.bazel | 96 +++++++++++++++++ .../analytics/core-analytics-server/README.md | 4 + .../core-analytics-server/jest.config.js | 13 +++ .../core-analytics-server/package.json | 7 ++ .../core-analytics-server/src/contracts.ts | 33 ++++++ .../core-analytics-server/src}/index.ts | 20 +--- .../core-analytics-server/tsconfig.json | 17 +++ .../elasticsearch_service.test.ts | 2 +- .../elasticsearch/elasticsearch_service.ts | 2 +- ...egister_analytics_context_provider.test.ts | 4 +- .../register_analytics_context_provider.ts | 2 +- .../environment/environment_service.test.ts | 5 +- .../server/environment/environment_service.ts | 2 +- src/core/server/index.ts | 22 ++-- src/core/server/internal_types.ts | 10 +- src/core/server/mocks.ts | 4 +- src/core/server/server.api.md | 24 ++--- src/core/server/server.ts | 3 +- src/core/server/status/status_service.test.ts | 2 +- src/core/server/status/status_service.ts | 2 +- yarn.lock | 24 +++++ 37 files changed, 564 insertions(+), 84 deletions(-) create mode 100644 packages/core/analytics/core-analytics-server-internal/BUILD.bazel create mode 100644 packages/core/analytics/core-analytics-server-internal/README.md create mode 100644 packages/core/analytics/core-analytics-server-internal/jest.config.js create mode 100644 packages/core/analytics/core-analytics-server-internal/package.json rename {src/core/server/analytics => packages/core/analytics/core-analytics-server-internal/src}/analytics_service.ts (85%) create mode 100644 packages/core/analytics/core-analytics-server-internal/src/index.ts create mode 100644 packages/core/analytics/core-analytics-server-internal/tsconfig.json create mode 100644 packages/core/analytics/core-analytics-server-mocks/BUILD.bazel create mode 100644 packages/core/analytics/core-analytics-server-mocks/README.md create mode 100644 packages/core/analytics/core-analytics-server-mocks/jest.config.js create mode 100644 packages/core/analytics/core-analytics-server-mocks/package.json rename {src/core/server/analytics => packages/core/analytics/core-analytics-server-mocks/src}/analytics_service.mock.ts (94%) create mode 100644 packages/core/analytics/core-analytics-server-mocks/src/index.ts create mode 100644 packages/core/analytics/core-analytics-server-mocks/tsconfig.json create mode 100644 packages/core/analytics/core-analytics-server/BUILD.bazel create mode 100644 packages/core/analytics/core-analytics-server/README.md create mode 100644 packages/core/analytics/core-analytics-server/jest.config.js create mode 100644 packages/core/analytics/core-analytics-server/package.json create mode 100644 packages/core/analytics/core-analytics-server/src/contracts.ts rename {src/core/server/analytics => packages/core/analytics/core-analytics-server/src}/index.ts (54%) create mode 100644 packages/core/analytics/core-analytics-server/tsconfig.json diff --git a/package.json b/package.json index 75ae3a7198703..48ded3c338a82 100644 --- a/package.json +++ b/package.json @@ -149,6 +149,9 @@ "@kbn/core-analytics-browser": "link:bazel-bin/packages/core/analytics/core-analytics-browser", "@kbn/core-analytics-browser-internal": "link:bazel-bin/packages/core/analytics/core-analytics-browser-internal", "@kbn/core-analytics-browser-mocks": "link:bazel-bin/packages/core/analytics/core-analytics-browser-mocks", + "@kbn/core-analytics-server": "link:bazel-bin/packages/core/analytics/core-analytics-server", + "@kbn/core-analytics-server-internal": "link:bazel-bin/packages/core/analytics/core-analytics-server-internal", + "@kbn/core-analytics-server-mocks": "link:bazel-bin/packages/core/analytics/core-analytics-server-mocks", "@kbn/core-base-browser-internal": "link:bazel-bin/packages/core/base/core-base-browser-internal", "@kbn/core-base-browser-mocks": "link:bazel-bin/packages/core/base/core-base-browser-mocks", "@kbn/core-base-common": "link:bazel-bin/packages/core/base/core-base-common", @@ -670,6 +673,9 @@ "@types/kbn__core-analytics-browser": "link:bazel-bin/packages/core/analytics/core-analytics-browser/npm_module_types", "@types/kbn__core-analytics-browser-internal": "link:bazel-bin/packages/core/analytics/core-analytics-browser-internal/npm_module_types", "@types/kbn__core-analytics-browser-mocks": "link:bazel-bin/packages/core/analytics/core-analytics-browser-mocks/npm_module_types", + "@types/kbn__core-analytics-server": "link:bazel-bin/packages/core/analytics/core-analytics-server/npm_module_types", + "@types/kbn__core-analytics-server-internal": "link:bazel-bin/packages/core/analytics/core-analytics-server-internal/npm_module_types", + "@types/kbn__core-analytics-server-mocks": "link:bazel-bin/packages/core/analytics/core-analytics-server-mocks/npm_module_types", "@types/kbn__core-base-browser": "link:bazel-bin/packages/core/base/core-base-browser/npm_module_types", "@types/kbn__core-base-browser-internal": "link:bazel-bin/packages/core/base/core-base-browser-internal/npm_module_types", "@types/kbn__core-base-browser-mocks": "link:bazel-bin/packages/core/base/core-base-browser-mocks/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 6c65af1a97e91..f6ebd9a1396c0 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -17,6 +17,9 @@ filegroup( "//packages/core/analytics/core-analytics-browser-internal:build", "//packages/core/analytics/core-analytics-browser-mocks:build", "//packages/core/analytics/core-analytics-browser:build", + "//packages/core/analytics/core-analytics-server-internal:build", + "//packages/core/analytics/core-analytics-server-mocks:build", + "//packages/core/analytics/core-analytics-server:build", "//packages/core/base/core-base-browser-internal:build", "//packages/core/base/core-base-browser-mocks:build", "//packages/core/base/core-base-common-internal:build", @@ -166,6 +169,9 @@ filegroup( "//packages/core/analytics/core-analytics-browser-internal:build_types", "//packages/core/analytics/core-analytics-browser-mocks:build_types", "//packages/core/analytics/core-analytics-browser:build_types", + "//packages/core/analytics/core-analytics-server-internal:build_types", + "//packages/core/analytics/core-analytics-server-mocks:build_types", + "//packages/core/analytics/core-analytics-server:build_types", "//packages/core/base/core-base-browser-internal:build_types", "//packages/core/base/core-base-browser-mocks:build_types", "//packages/core/base/core-base-common-internal:build_types", diff --git a/packages/core/analytics/core-analytics-server-internal/BUILD.bazel b/packages/core/analytics/core-analytics-server-internal/BUILD.bazel new file mode 100644 index 0000000000000..f4fc5e7ae3818 --- /dev/null +++ b/packages/core/analytics/core-analytics-server-internal/BUILD.bazel @@ -0,0 +1,101 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-analytics-server-internal" +PKG_REQUIRE_NAME = "@kbn/core-analytics-server-internal" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "@npm//rxjs", + "//packages/analytics/client", +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//rxjs", + "//packages/analytics/client:npm_module_types", + "//packages/core/base/core-base-server-internal:npm_module_types", + "//packages/core/analytics/core-analytics-server:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/analytics/core-analytics-server-internal/README.md b/packages/core/analytics/core-analytics-server-internal/README.md new file mode 100644 index 0000000000000..669a7a428e0ac --- /dev/null +++ b/packages/core/analytics/core-analytics-server-internal/README.md @@ -0,0 +1,4 @@ +# @kbn/core-analytics-server-internal + +This package contains the internal types and implementation for Core's server-side analytics service. + diff --git a/packages/core/analytics/core-analytics-server-internal/jest.config.js b/packages/core/analytics/core-analytics-server-internal/jest.config.js new file mode 100644 index 0000000000000..d124015992400 --- /dev/null +++ b/packages/core/analytics/core-analytics-server-internal/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/analytics/core-analytics-server-internal'], +}; diff --git a/packages/core/analytics/core-analytics-server-internal/package.json b/packages/core/analytics/core-analytics-server-internal/package.json new file mode 100644 index 0000000000000..12dc15e9633a4 --- /dev/null +++ b/packages/core/analytics/core-analytics-server-internal/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/core-analytics-server-internal", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/server/analytics/analytics_service.ts b/packages/core/analytics/core-analytics-server-internal/src/analytics_service.ts similarity index 85% rename from src/core/server/analytics/analytics_service.ts rename to packages/core/analytics/core-analytics-server-internal/src/analytics_service.ts index 7d091f5744800..0fa96ebe0ae51 100644 --- a/src/core/server/analytics/analytics_service.ts +++ b/packages/core/analytics/core-analytics-server-internal/src/analytics_service.ts @@ -10,28 +10,11 @@ import { of } from 'rxjs'; import type { AnalyticsClient } from '@kbn/analytics-client'; import { createAnalytics } from '@kbn/analytics-client'; import type { CoreContext } from '@kbn/core-base-server-internal'; - -/** - * Exposes the public APIs of the AnalyticsClient during the preboot phase - * {@link AnalyticsClient} - * @public - */ -export type AnalyticsServicePreboot = Omit; -/** - * Exposes the public APIs of the AnalyticsClient during the setup phase. - * {@link AnalyticsClient} - * @public - */ -export type AnalyticsServiceSetup = Omit; -/** - * Exposes the public APIs of the AnalyticsClient during the start phase - * {@link AnalyticsClient} - * @public - */ -export type AnalyticsServiceStart = Pick< - AnalyticsClient, - 'optIn' | 'reportEvent' | 'telemetryCounter$' ->; +import type { + AnalyticsServiceSetup, + AnalyticsServiceStart, + AnalyticsServicePreboot, +} from '@kbn/core-analytics-server'; export class AnalyticsService { private readonly analyticsClient: AnalyticsClient; @@ -59,6 +42,7 @@ export class AnalyticsService { telemetryCounter$: this.analyticsClient.telemetryCounter$, }; } + public setup(): AnalyticsServiceSetup { return { optIn: this.analyticsClient.optIn, @@ -70,6 +54,7 @@ export class AnalyticsService { telemetryCounter$: this.analyticsClient.telemetryCounter$, }; } + public start(): AnalyticsServiceStart { return { optIn: this.analyticsClient.optIn, diff --git a/packages/core/analytics/core-analytics-server-internal/src/index.ts b/packages/core/analytics/core-analytics-server-internal/src/index.ts new file mode 100644 index 0000000000000..23048526a8e70 --- /dev/null +++ b/packages/core/analytics/core-analytics-server-internal/src/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { AnalyticsService } from './analytics_service'; diff --git a/packages/core/analytics/core-analytics-server-internal/tsconfig.json b/packages/core/analytics/core-analytics-server-internal/tsconfig.json new file mode 100644 index 0000000000000..97a3644c3c703 --- /dev/null +++ b/packages/core/analytics/core-analytics-server-internal/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/core/analytics/core-analytics-server-mocks/BUILD.bazel b/packages/core/analytics/core-analytics-server-mocks/BUILD.bazel new file mode 100644 index 0000000000000..21f95820735f4 --- /dev/null +++ b/packages/core/analytics/core-analytics-server-mocks/BUILD.bazel @@ -0,0 +1,100 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-analytics-server-mocks" +PKG_REQUIRE_NAME = "@kbn/core-analytics-server-mocks" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "@npm//rxjs", +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//rxjs", + "//packages/kbn-utility-types:npm_module_types", + "//packages/core/analytics/core-analytics-server:npm_module_types", + "//packages/core/analytics/core-analytics-server-internal:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/analytics/core-analytics-server-mocks/README.md b/packages/core/analytics/core-analytics-server-mocks/README.md new file mode 100644 index 0000000000000..1b94135affb9b --- /dev/null +++ b/packages/core/analytics/core-analytics-server-mocks/README.md @@ -0,0 +1,4 @@ +# @kbn/core-analytics-server-mocks + +This package contains the mocks for Core's server-side analytics service. + diff --git a/packages/core/analytics/core-analytics-server-mocks/jest.config.js b/packages/core/analytics/core-analytics-server-mocks/jest.config.js new file mode 100644 index 0000000000000..5206ddb7da156 --- /dev/null +++ b/packages/core/analytics/core-analytics-server-mocks/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/analytics/core-analytics-server-mocks'], +}; diff --git a/packages/core/analytics/core-analytics-server-mocks/package.json b/packages/core/analytics/core-analytics-server-mocks/package.json new file mode 100644 index 0000000000000..12b50433e7f62 --- /dev/null +++ b/packages/core/analytics/core-analytics-server-mocks/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/core-analytics-server-mocks", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/server/analytics/analytics_service.mock.ts b/packages/core/analytics/core-analytics-server-mocks/src/analytics_service.mock.ts similarity index 94% rename from src/core/server/analytics/analytics_service.mock.ts rename to packages/core/analytics/core-analytics-server-mocks/src/analytics_service.mock.ts index 7a00e573f3e7b..44d3d04f25279 100644 --- a/src/core/server/analytics/analytics_service.mock.ts +++ b/packages/core/analytics/core-analytics-server-mocks/src/analytics_service.mock.ts @@ -6,14 +6,14 @@ * Side Public License, v 1. */ +import { Subject } from 'rxjs'; import type { PublicMethodsOf } from '@kbn/utility-types'; import type { - AnalyticsService, - AnalyticsServicePreboot, AnalyticsServiceSetup, AnalyticsServiceStart, -} from './analytics_service'; -import { Subject } from 'rxjs'; + AnalyticsServicePreboot, +} from '@kbn/core-analytics-server'; +import type { AnalyticsService } from '@kbn/core-analytics-server-internal'; type AnalyticsServiceContract = PublicMethodsOf; diff --git a/packages/core/analytics/core-analytics-server-mocks/src/index.ts b/packages/core/analytics/core-analytics-server-mocks/src/index.ts new file mode 100644 index 0000000000000..0cf55aeb9a349 --- /dev/null +++ b/packages/core/analytics/core-analytics-server-mocks/src/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { analyticsServiceMock } from './analytics_service.mock'; diff --git a/packages/core/analytics/core-analytics-server-mocks/tsconfig.json b/packages/core/analytics/core-analytics-server-mocks/tsconfig.json new file mode 100644 index 0000000000000..97a3644c3c703 --- /dev/null +++ b/packages/core/analytics/core-analytics-server-mocks/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/core/analytics/core-analytics-server/BUILD.bazel b/packages/core/analytics/core-analytics-server/BUILD.bazel new file mode 100644 index 0000000000000..e59378e010127 --- /dev/null +++ b/packages/core/analytics/core-analytics-server/BUILD.bazel @@ -0,0 +1,96 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-analytics-server" +PKG_REQUIRE_NAME = "@kbn/core-analytics-server" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "//packages/analytics/client:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/analytics/core-analytics-server/README.md b/packages/core/analytics/core-analytics-server/README.md new file mode 100644 index 0000000000000..065d26a1d649c --- /dev/null +++ b/packages/core/analytics/core-analytics-server/README.md @@ -0,0 +1,4 @@ +# @kbn/core-analytics-server + +This package contains the public types for Core's server-side analytics service. + diff --git a/packages/core/analytics/core-analytics-server/jest.config.js b/packages/core/analytics/core-analytics-server/jest.config.js new file mode 100644 index 0000000000000..6b1d4596c8eb2 --- /dev/null +++ b/packages/core/analytics/core-analytics-server/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/analytics/core-analytics-server'], +}; diff --git a/packages/core/analytics/core-analytics-server/package.json b/packages/core/analytics/core-analytics-server/package.json new file mode 100644 index 0000000000000..f990017e75c39 --- /dev/null +++ b/packages/core/analytics/core-analytics-server/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/core-analytics-server", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/core/analytics/core-analytics-server/src/contracts.ts b/packages/core/analytics/core-analytics-server/src/contracts.ts new file mode 100644 index 0000000000000..1b297b197374d --- /dev/null +++ b/packages/core/analytics/core-analytics-server/src/contracts.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { AnalyticsClient } from '@kbn/analytics-client'; + +/** + * Exposes the public APIs of the AnalyticsClient during the preboot phase + * {@link AnalyticsClient} + * @public + */ +export type AnalyticsServicePreboot = Omit; + +/** + * Exposes the public APIs of the AnalyticsClient during the setup phase. + * {@link AnalyticsClient} + * @public + */ +export type AnalyticsServiceSetup = Omit; + +/** + * Exposes the public APIs of the AnalyticsClient during the start phase + * {@link AnalyticsClient} + * @public + */ +export type AnalyticsServiceStart = Pick< + AnalyticsClient, + 'optIn' | 'reportEvent' | 'telemetryCounter$' +>; diff --git a/src/core/server/analytics/index.ts b/packages/core/analytics/core-analytics-server/src/index.ts similarity index 54% rename from src/core/server/analytics/index.ts rename to packages/core/analytics/core-analytics-server/src/index.ts index 8a2f08d65bf9e..b070f744f831f 100644 --- a/src/core/server/analytics/index.ts +++ b/packages/core/analytics/core-analytics-server/src/index.ts @@ -6,24 +6,8 @@ * Side Public License, v 1. */ -export { AnalyticsService } from './analytics_service'; export type { - AnalyticsServicePreboot, AnalyticsServiceSetup, AnalyticsServiceStart, -} from './analytics_service'; - -export type { - AnalyticsClient, - Event, - EventContext, - EventType, - EventTypeOpts, - IShipper, - ShipperClassConstructor, - OptInConfig, - ContextProviderOpts, - TelemetryCounter, -} from '@kbn/analytics-client'; - -export { TelemetryCounterType } from '@kbn/analytics-client'; + AnalyticsServicePreboot, +} from './contracts'; diff --git a/packages/core/analytics/core-analytics-server/tsconfig.json b/packages/core/analytics/core-analytics-server/tsconfig.json new file mode 100644 index 0000000000000..97a3644c3c703 --- /dev/null +++ b/packages/core/analytics/core-analytics-server/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/src/core/server/elasticsearch/elasticsearch_service.test.ts b/src/core/server/elasticsearch/elasticsearch_service.test.ts index 4e9b981fce75e..254c1c05a243d 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.test.ts @@ -29,6 +29,7 @@ import { Env } from '@kbn/config'; import { configServiceMock, getEnvOptions } from '@kbn/config-mocks'; import type { CoreContext } from '@kbn/core-base-server-internal'; import { loggingSystemMock } from '@kbn/core-logging-server-mocks'; +import { analyticsServiceMock } from '@kbn/core-analytics-server-mocks'; import { httpServiceMock } from '../http/http_service.mock'; import { executionContextServiceMock } from '../execution_context/execution_context_service.mock'; import { configSchema, ElasticsearchConfig } from './elasticsearch_config'; @@ -37,7 +38,6 @@ import { elasticsearchClientMock } from './client/mocks'; import { duration } from 'moment'; import { isValidConnection as isValidConnectionMock } from './is_valid_connection'; import { pollEsNodesVersion as pollEsNodesVersionMocked } from './version_check/ensure_es_version'; -import { analyticsServiceMock } from '../analytics/analytics_service.mock'; const { pollEsNodesVersion: pollEsNodesVersionActual } = jest.requireActual( './version_check/ensure_es_version' diff --git a/src/core/server/elasticsearch/elasticsearch_service.ts b/src/core/server/elasticsearch/elasticsearch_service.ts index 90b616c0d439b..101ca5cea1bca 100644 --- a/src/core/server/elasticsearch/elasticsearch_service.ts +++ b/src/core/server/elasticsearch/elasticsearch_service.ts @@ -11,8 +11,8 @@ import { map, shareReplay, takeUntil } from 'rxjs/operators'; import type { Logger } from '@kbn/logging'; import type { CoreContext, CoreService } from '@kbn/core-base-server-internal'; +import type { AnalyticsServiceSetup } from '@kbn/core-analytics-server'; import { registerAnalyticsContextProvider } from './register_analytics_context_provider'; -import { AnalyticsServiceSetup } from '../analytics'; import { ClusterClient, ElasticsearchClientConfig } from './client'; import { ElasticsearchConfig, ElasticsearchConfigType } from './elasticsearch_config'; diff --git a/src/core/server/elasticsearch/register_analytics_context_provider.test.ts b/src/core/server/elasticsearch/register_analytics_context_provider.test.ts index 4f09ea8677f44..b041586cf1903 100644 --- a/src/core/server/elasticsearch/register_analytics_context_provider.test.ts +++ b/src/core/server/elasticsearch/register_analytics_context_provider.test.ts @@ -7,8 +7,8 @@ */ import { firstValueFrom, of } from 'rxjs'; -import type { AnalyticsServiceSetup } from '../analytics'; -import { analyticsServiceMock } from '../analytics/analytics_service.mock'; +import { analyticsServiceMock } from '@kbn/core-analytics-server-mocks'; +import type { AnalyticsServiceSetup } from '@kbn/core-analytics-server'; import { registerAnalyticsContextProvider } from './register_analytics_context_provider'; describe('registerAnalyticsContextProvider', () => { diff --git a/src/core/server/elasticsearch/register_analytics_context_provider.ts b/src/core/server/elasticsearch/register_analytics_context_provider.ts index cc4523c0d4eb5..9120d48fcb606 100644 --- a/src/core/server/elasticsearch/register_analytics_context_provider.ts +++ b/src/core/server/elasticsearch/register_analytics_context_provider.ts @@ -7,7 +7,7 @@ */ import type { Observable } from 'rxjs'; -import type { AnalyticsServiceSetup } from '../analytics'; +import type { AnalyticsServiceSetup } from '@kbn/core-analytics-server'; import type { ClusterInfo } from './get_cluster_info'; /** diff --git a/src/core/server/environment/environment_service.test.ts b/src/core/server/environment/environment_service.test.ts index 563db4e91918f..d13f78609ed8d 100644 --- a/src/core/server/environment/environment_service.test.ts +++ b/src/core/server/environment/environment_service.test.ts @@ -9,16 +9,17 @@ import { BehaviorSubject } from 'rxjs'; import type { CoreContext } from '@kbn/core-base-server-internal'; +import type { AnalyticsServicePreboot } from '@kbn/core-analytics-server'; + import { EnvironmentService } from './environment_service'; import { resolveInstanceUuid } from './resolve_uuid'; import { createDataFolder } from './create_data_folder'; import { writePidFile } from './write_pid_file'; -import type { AnalyticsServicePreboot } from '../analytics'; import { configServiceMock } from '@kbn/config-mocks'; import { mockCoreContext } from '@kbn/core-base-server-mocks'; import { loggingSystemMock } from '@kbn/core-logging-server-mocks'; -import { analyticsServiceMock } from '../analytics/analytics_service.mock'; +import { analyticsServiceMock } from '@kbn/core-analytics-server-mocks'; jest.mock('./resolve_uuid', () => ({ resolveInstanceUuid: jest.fn().mockResolvedValue('SOME_UUID'), diff --git a/src/core/server/environment/environment_service.ts b/src/core/server/environment/environment_service.ts index 9fcf54c7bc1c2..17dd296a81b10 100644 --- a/src/core/server/environment/environment_service.ts +++ b/src/core/server/environment/environment_service.ts @@ -11,7 +11,7 @@ import { PathConfigType, config as pathConfigDef } from '@kbn/utils'; import type { Logger } from '@kbn/logging'; import type { IConfigService } from '@kbn/config'; import type { CoreContext } from '@kbn/core-base-server-internal'; -import type { AnalyticsServicePreboot } from '../analytics'; +import type { AnalyticsServicePreboot } from '@kbn/core-analytics-server'; import { HttpConfigType, config as httpConfigDef } from '../http'; import { PidConfigType, config as pidConfigDef } from './pid_config'; import { resolveInstanceUuid } from './resolve_uuid'; diff --git a/src/core/server/index.ts b/src/core/server/index.ts index 252d23bb5c444..6266fbd3fd64a 100644 --- a/src/core/server/index.ts +++ b/src/core/server/index.ts @@ -33,6 +33,11 @@ import { Type } from '@kbn/config-schema'; import type { DocLinksServiceStart, DocLinksServiceSetup } from '@kbn/core-doc-links-server'; import type { AppenderConfigType, LoggingServiceSetup } from '@kbn/core-logging-server'; import { appendersSchema } from '@kbn/core-logging-server-internal'; +import type { + AnalyticsServiceSetup, + AnalyticsServiceStart, + AnalyticsServicePreboot, +} from '@kbn/core-analytics-server'; import { ElasticsearchServiceSetup, configSchema as elasticsearchConfigSchema, @@ -85,11 +90,6 @@ export type { }; import type { ExecutionContextSetup, ExecutionContextStart } from './execution_context'; -import type { - AnalyticsServicePreboot, - AnalyticsServiceSetup, - AnalyticsServiceStart, -} from './analytics'; export type { IExecutionContextContainer, KibanaExecutionContext } from './execution_context'; @@ -453,9 +453,6 @@ export type { export type { DocLinksServiceStart, DocLinksServiceSetup } from '@kbn/core-doc-links-server'; export type { - AnalyticsServiceSetup, - AnalyticsServicePreboot, - AnalyticsServiceStart, AnalyticsClient, Event, EventContext, @@ -466,8 +463,13 @@ export type { OptInConfig, ShipperClassConstructor, TelemetryCounter, -} from './analytics'; -export { TelemetryCounterType } from './analytics'; +} from '@kbn/analytics-client'; +export { TelemetryCounterType } from '@kbn/analytics-client'; +export type { + AnalyticsServiceSetup, + AnalyticsServicePreboot, + AnalyticsServiceStart, +} from '@kbn/core-analytics-server'; /** @public **/ export interface RequestHandlerContextBase { diff --git a/src/core/server/internal_types.ts b/src/core/server/internal_types.ts index 99e85406c9e76..934809f6f0eb6 100644 --- a/src/core/server/internal_types.ts +++ b/src/core/server/internal_types.ts @@ -11,6 +11,11 @@ import { InternalLoggingServicePreboot, InternalLoggingServiceSetup, } from '@kbn/core-logging-server-internal'; +import type { + AnalyticsServicePreboot, + AnalyticsServiceSetup, + AnalyticsServiceStart, +} from '@kbn/core-analytics-server'; import { CapabilitiesSetup, CapabilitiesStart } from './capabilities'; import { InternalContextPreboot, ContextSetup } from './context'; import { @@ -45,11 +50,6 @@ import type { InternalExecutionContextStart, } from './execution_context'; import { InternalPrebootServicePreboot } from './preboot'; -import type { - AnalyticsServicePreboot, - AnalyticsServiceSetup, - AnalyticsServiceStart, -} from './analytics'; /** @internal */ export interface InternalCorePreboot { diff --git a/src/core/server/mocks.ts b/src/core/server/mocks.ts index 2796e5a5742d1..a39efc69bd619 100644 --- a/src/core/server/mocks.ts +++ b/src/core/server/mocks.ts @@ -13,6 +13,7 @@ import { isPromise } from '@kbn/std'; import type { MockedKeys } from '@kbn/utility-types-jest'; import { docLinksServiceMock } from '@kbn/core-doc-links-server-mocks'; import { loggingSystemMock, loggingServiceMock } from '@kbn/core-logging-server-mocks'; +import { analyticsServiceMock } from '@kbn/core-analytics-server-mocks'; import type { PluginInitializerContext, CoreSetup, @@ -39,7 +40,6 @@ import { i18nServiceMock } from './i18n/i18n_service.mock'; import { deprecationsServiceMock } from './deprecations/deprecations_service.mock'; import { executionContextServiceMock } from './execution_context/execution_context_service.mock'; import { prebootServiceMock } from './preboot/preboot_service.mock'; -import { analyticsServiceMock } from './analytics/analytics_service.mock'; export { configServiceMock, configDeprecationsMock } from '@kbn/config-mocks'; export { loggingSystemMock } from '@kbn/core-logging-server-mocks'; @@ -64,7 +64,7 @@ export { i18nServiceMock } from './i18n/i18n_service.mock'; export { deprecationsServiceMock } from './deprecations/deprecations_service.mock'; export { executionContextServiceMock } from './execution_context/execution_context_service.mock'; export { docLinksServiceMock } from '@kbn/core-doc-links-server-mocks'; -export { analyticsServiceMock } from './analytics/analytics_service.mock'; +export { analyticsServiceMock } from '@kbn/core-analytics-server-mocks'; export type { ElasticsearchClientMock, diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index d3862e494fb59..6a85c1dff4bd1 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -8,6 +8,9 @@ import { AddConfigDeprecation } from '@kbn/config'; import { AnalyticsClient } from '@kbn/analytics-client'; +import { AnalyticsServicePreboot } from '@kbn/core-analytics-server'; +import { AnalyticsServiceSetup } from '@kbn/core-analytics-server'; +import { AnalyticsServiceStart } from '@kbn/core-analytics-server'; import apm from 'elastic-apm-node'; import { AppenderConfigType } from '@kbn/core-logging-server'; import { AwaitedProperties } from '@kbn/utility-types'; @@ -82,20 +85,11 @@ export { AddConfigDeprecation } export { AnalyticsClient } -// Warning: (ae-unresolved-link) The @link reference could not be resolved: This type of declaration is not supported yet by the resolver -// -// @public -export type AnalyticsServicePreboot = Omit; +export { AnalyticsServicePreboot } -// Warning: (ae-unresolved-link) The @link reference could not be resolved: This type of declaration is not supported yet by the resolver -// -// @public -export type AnalyticsServiceSetup = Omit; +export { AnalyticsServiceSetup } -// Warning: (ae-unresolved-link) The @link reference could not be resolved: This type of declaration is not supported yet by the resolver -// -// @public -export type AnalyticsServiceStart = Pick; +export { AnalyticsServiceStart } // @public export const APP_WRAPPER_CLASS = "kbnAppWrapper"; @@ -438,6 +432,8 @@ export type CoreIncrementUsageCounter = (params: CoreIncrementCounterParams) => // @public export interface CorePreboot { + // Warning: (ae-unresolved-link) The @link reference could not be resolved: This type of declaration is not supported yet by the resolver + // // (undocumented) analytics: AnalyticsServicePreboot; // (undocumented) @@ -495,6 +491,8 @@ export interface CoreServicesUsageData { // @public export interface CoreSetup { + // Warning: (ae-unresolved-link) The @link reference could not be resolved: This type of declaration is not supported yet by the resolver + // // (undocumented) analytics: AnalyticsServiceSetup; // (undocumented) @@ -537,6 +535,8 @@ export interface CoreSetup Date: Wed, 22 Jun 2022 15:35:26 +0300 Subject: [PATCH 27/61] core i18n browser (#134828) Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .i18nrc.json | 2 +- package.json | 6 + packages/BUILD.bazel | 6 + .../core-i18n-browser-internal/BUILD.bazel | 110 ++++++++++++++++++ .../i18n/core-i18n-browser-internal/README.md | 3 + .../core-i18n-browser-internal/jest.config.js | 13 +++ .../core-i18n-browser-internal/package.json | 8 ++ .../__snapshots__/i18n_service.test.tsx.snap | 0 .../src}/i18n_eui_mapping.test.ts | 10 +- .../src}/i18n_eui_mapping.tsx | 0 .../src}/i18n_service.test.tsx | 0 .../src}/i18n_service.tsx | 15 +-- .../core-i18n-browser-internal/src}/index.ts | 1 - .../core-i18n-browser-internal/tsconfig.json | 17 +++ .../i18n/core-i18n-browser-mocks/BUILD.bazel | 109 +++++++++++++++++ .../i18n/core-i18n-browser-mocks/README.md | 3 + .../core-i18n-browser-mocks/jest.config.js | 13 +++ .../i18n/core-i18n-browser-mocks/package.json | 8 ++ .../src}/i18n_service.mock.ts | 4 +- .../i18n/core-i18n-browser-mocks/src/index.ts | 9 ++ .../core-i18n-browser-mocks/tsconfig.json | 17 +++ .../core/i18n/core-i18n-browser/BUILD.bazel | 105 +++++++++++++++++ .../core/i18n/core-i18n-browser/README.md | 3 + .../i18n/core-i18n-browser/jest.config.js | 13 +++ .../core/i18n/core-i18n-browser/package.json | 8 ++ .../core/i18n/core-i18n-browser/src/index.ts | 9 ++ .../core/i18n/core-i18n-browser/src/types.ts | 22 ++++ .../core/i18n/core-i18n-browser/tsconfig.json | 17 +++ src/core/public/core_system.test.mocks.ts | 4 +- src/core/public/core_system.ts | 2 +- .../fatal_errors/fatal_errors_service.tsx | 2 +- src/core/public/index.ts | 3 +- src/core/public/mocks.ts | 4 +- .../notifications/notifications_service.ts | 2 +- .../notifications/toasts/error_toast.tsx | 2 +- .../notifications/toasts/toasts_api.test.ts | 2 +- .../notifications/toasts/toasts_api.tsx | 2 +- .../notifications/toasts/toasts_service.tsx | 2 +- .../overlays/banners/banners_service.test.ts | 2 +- .../overlays/banners/banners_service.tsx | 2 +- .../banners/user_banner_service.test.ts | 2 +- .../overlays/banners/user_banner_service.tsx | 2 +- .../overlays/flyout/flyout_service.test.tsx | 2 +- .../public/overlays/flyout/flyout_service.tsx | 2 +- .../overlays/modal/modal_service.test.tsx | 2 +- .../public/overlays/modal/modal_service.tsx | 2 +- src/core/public/overlays/overlay_service.ts | 2 +- .../public/plugins/plugins_service.test.ts | 2 +- src/core/public/public.api.md | 10 +- .../rendering/rendering_service.test.tsx | 2 +- .../public/rendering/rendering_service.tsx | 2 +- .../public/utils/core_context_provider.tsx | 2 +- src/plugins/usage_collection/tsconfig.json | 2 +- yarn.lock | 40 +++++-- 54 files changed, 571 insertions(+), 63 deletions(-) create mode 100644 packages/core/i18n/core-i18n-browser-internal/BUILD.bazel create mode 100644 packages/core/i18n/core-i18n-browser-internal/README.md create mode 100644 packages/core/i18n/core-i18n-browser-internal/jest.config.js create mode 100644 packages/core/i18n/core-i18n-browser-internal/package.json rename {src/core/public/i18n => packages/core/i18n/core-i18n-browser-internal/src}/__snapshots__/i18n_service.test.tsx.snap (100%) rename {src/core/public/i18n => packages/core/i18n/core-i18n-browser-internal/src}/i18n_eui_mapping.test.ts (97%) rename {src/core/public/i18n => packages/core/i18n/core-i18n-browser-internal/src}/i18n_eui_mapping.tsx (100%) rename {src/core/public/i18n => packages/core/i18n/core-i18n-browser-internal/src}/i18n_service.test.tsx (100%) rename {src/core/public/i18n => packages/core/i18n/core-i18n-browser-internal/src}/i18n_service.tsx (76%) rename {src/core/public/i18n => packages/core/i18n/core-i18n-browser-internal/src}/index.ts (89%) create mode 100644 packages/core/i18n/core-i18n-browser-internal/tsconfig.json create mode 100644 packages/core/i18n/core-i18n-browser-mocks/BUILD.bazel create mode 100644 packages/core/i18n/core-i18n-browser-mocks/README.md create mode 100644 packages/core/i18n/core-i18n-browser-mocks/jest.config.js create mode 100644 packages/core/i18n/core-i18n-browser-mocks/package.json rename {src/core/public/i18n => packages/core/i18n/core-i18n-browser-mocks/src}/i18n_service.mock.ts (91%) create mode 100644 packages/core/i18n/core-i18n-browser-mocks/src/index.ts create mode 100644 packages/core/i18n/core-i18n-browser-mocks/tsconfig.json create mode 100644 packages/core/i18n/core-i18n-browser/BUILD.bazel create mode 100644 packages/core/i18n/core-i18n-browser/README.md create mode 100644 packages/core/i18n/core-i18n-browser/jest.config.js create mode 100644 packages/core/i18n/core-i18n-browser/package.json create mode 100644 packages/core/i18n/core-i18n-browser/src/index.ts create mode 100644 packages/core/i18n/core-i18n-browser/src/types.ts create mode 100644 packages/core/i18n/core-i18n-browser/tsconfig.json diff --git a/.i18nrc.json b/.i18nrc.json index 0ab8e6b490a12..8c98fc415c910 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -7,7 +7,7 @@ "bfetch": "src/plugins/bfetch", "charts": "src/plugins/charts", "console": "src/plugins/console", - "core": "src/core", + "core": ["src/core", "packages/core/i18n/core-i18n-browser-internal"], "customIntegrations": "src/plugins/custom_integrations", "dashboard": "src/plugins/dashboard", "controls": "src/plugins/controls", diff --git a/package.json b/package.json index 48ded3c338a82..0024da78d1f37 100644 --- a/package.json +++ b/package.json @@ -164,6 +164,9 @@ "@kbn/core-doc-links-server": "link:bazel-bin/packages/core/doc-links/core-doc-links-server", "@kbn/core-doc-links-server-internal": "link:bazel-bin/packages/core/doc-links/core-doc-links-server-internal", "@kbn/core-doc-links-server-mocks": "link:bazel-bin/packages/core/doc-links/core-doc-links-server-mocks", + "@kbn/core-i18n-browser": "link:bazel-bin/packages/core/i18n/core-i18n-browser", + "@kbn/core-i18n-browser-internal": "link:bazel-bin/packages/core/i18n/core-i18n-browser-internal", + "@kbn/core-i18n-browser-mocks": "link:bazel-bin/packages/core/i18n/core-i18n-browser-mocks", "@kbn/core-injected-metadata-browser": "link:bazel-bin/packages/core/injected-metadata/core-injected-metadata-browser", "@kbn/core-injected-metadata-browser-internal": "link:bazel-bin/packages/core/injected-metadata/core-injected-metadata-browser-internal", "@kbn/core-injected-metadata-browser-mocks": "link:bazel-bin/packages/core/injected-metadata/core-injected-metadata-browser-mocks", @@ -691,6 +694,9 @@ "@types/kbn__core-doc-links-server": "link:bazel-bin/packages/core/doc-links/core-doc-links-server/npm_module_types", "@types/kbn__core-doc-links-server-internal": "link:bazel-bin/packages/core/doc-links/core-doc-links-server-internal/npm_module_types", "@types/kbn__core-doc-links-server-mocks": "link:bazel-bin/packages/core/doc-links/core-doc-links-server-mocks/npm_module_types", + "@types/kbn__core-i18n-browser": "link:bazel-bin/packages/core/i18n/core-i18n-browser/npm_module_types", + "@types/kbn__core-i18n-browser-internal": "link:bazel-bin/packages/core/i18n/core-i18n-browser-internal/npm_module_types", + "@types/kbn__core-i18n-browser-mocks": "link:bazel-bin/packages/core/i18n/core-i18n-browser-mocks/npm_module_types", "@types/kbn__core-injected-metadata-browser": "link:bazel-bin/packages/core/injected-metadata/core-injected-metadata-browser/npm_module_types", "@types/kbn__core-injected-metadata-browser-internal": "link:bazel-bin/packages/core/injected-metadata/core-injected-metadata-browser-internal/npm_module_types", "@types/kbn__core-injected-metadata-browser-mocks": "link:bazel-bin/packages/core/injected-metadata/core-injected-metadata-browser-mocks/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index f6ebd9a1396c0..8701bfcd9a6bf 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -32,6 +32,9 @@ filegroup( "//packages/core/doc-links/core-doc-links-server-internal:build", "//packages/core/doc-links/core-doc-links-server-mocks:build", "//packages/core/doc-links/core-doc-links-server:build", + "//packages/core/i18n/core-i18n-browser-internal:build", + "//packages/core/i18n/core-i18n-browser-mocks:build", + "//packages/core/i18n/core-i18n-browser:build", "//packages/core/injected-metadata/core-injected-metadata-browser-internal:build", "//packages/core/injected-metadata/core-injected-metadata-browser-mocks:build", "//packages/core/injected-metadata/core-injected-metadata-browser:build", @@ -184,6 +187,9 @@ filegroup( "//packages/core/doc-links/core-doc-links-server-internal:build_types", "//packages/core/doc-links/core-doc-links-server-mocks:build_types", "//packages/core/doc-links/core-doc-links-server:build_types", + "//packages/core/i18n/core-i18n-browser-internal:build_types", + "//packages/core/i18n/core-i18n-browser-mocks:build_types", + "//packages/core/i18n/core-i18n-browser:build_types", "//packages/core/injected-metadata/core-injected-metadata-browser-internal:build_types", "//packages/core/injected-metadata/core-injected-metadata-browser-mocks:build_types", "//packages/core/injected-metadata/core-injected-metadata-browser:build_types", diff --git a/packages/core/i18n/core-i18n-browser-internal/BUILD.bazel b/packages/core/i18n/core-i18n-browser-internal/BUILD.bazel new file mode 100644 index 0000000000000..edc404266491b --- /dev/null +++ b/packages/core/i18n/core-i18n-browser-internal/BUILD.bazel @@ -0,0 +1,110 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-i18n-browser-internal" +PKG_REQUIRE_NAME = "@kbn/core-i18n-browser-internal" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + "src/**/*.tsx", + ], + exclude = [ + "**/__snapshots__/**/*", + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + '//packages/kbn-i18n-react' +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//@types/react", + "//packages/kbn-i18n:npm_module_types", + "//packages/kbn-i18n-react:npm_module_types", + "//packages/core/injected-metadata/core-injected-metadata-browser-internal:npm_module_types", + "//packages/core/i18n/core-i18n-browser:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/i18n/core-i18n-browser-internal/README.md b/packages/core/i18n/core-i18n-browser-internal/README.md new file mode 100644 index 0000000000000..a222a9317cdbb --- /dev/null +++ b/packages/core/i18n/core-i18n-browser-internal/README.md @@ -0,0 +1,3 @@ +# @kbn/core-i18n-browser-internal + +This package contains the internal types and implementation for the i18n service. \ No newline at end of file diff --git a/packages/core/i18n/core-i18n-browser-internal/jest.config.js b/packages/core/i18n/core-i18n-browser-internal/jest.config.js new file mode 100644 index 0000000000000..573f9f6c6c598 --- /dev/null +++ b/packages/core/i18n/core-i18n-browser-internal/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/packages/core/i18n/core-i18n-browser-internal'], +}; diff --git a/packages/core/i18n/core-i18n-browser-internal/package.json b/packages/core/i18n/core-i18n-browser-internal/package.json new file mode 100644 index 0000000000000..ceb27969df9c5 --- /dev/null +++ b/packages/core/i18n/core-i18n-browser-internal/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-i18n-browser-internal", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "browser": "./target_web/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/public/i18n/__snapshots__/i18n_service.test.tsx.snap b/packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap similarity index 100% rename from src/core/public/i18n/__snapshots__/i18n_service.test.tsx.snap rename to packages/core/i18n/core-i18n-browser-internal/src/__snapshots__/i18n_service.test.tsx.snap diff --git a/src/core/public/i18n/i18n_eui_mapping.test.ts b/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.test.ts similarity index 97% rename from src/core/public/i18n/i18n_eui_mapping.test.ts rename to packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.test.ts index a2d35b37ac569..2520e06b20242 100644 --- a/src/core/public/i18n/i18n_eui_mapping.test.ts +++ b/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.test.ts @@ -15,6 +15,10 @@ import { getEuiContextMapping } from './i18n_eui_mapping'; /** Regexp to find {values} usage */ const VALUES_REGEXP = /\{\w+\}/; +type I18nTranslateCall = [ + string, + { defaultMessage: string; values?: object; description?: string } +]; describe('@elastic/eui i18n tokens', () => { const i18nTranslateActual = jest.requireActual('@kbn/i18n').i18n.translate; @@ -47,11 +51,7 @@ describe('@elastic/eui i18n tokens', () => { i18ntokens.forEach(({ token, defString }) => { describe(`Token "${token}"`, () => { - let i18nTranslateCall: [ - string, - { defaultMessage: string; values?: object; description?: string } - ]; - + let i18nTranslateCall: I18nTranslateCall; beforeAll(() => { // If it's a function, call it, so we have the mock to register the call. const entry = euiContextMapping[token as keyof typeof euiContextMapping]; diff --git a/src/core/public/i18n/i18n_eui_mapping.tsx b/packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx similarity index 100% rename from src/core/public/i18n/i18n_eui_mapping.tsx rename to packages/core/i18n/core-i18n-browser-internal/src/i18n_eui_mapping.tsx diff --git a/src/core/public/i18n/i18n_service.test.tsx b/packages/core/i18n/core-i18n-browser-internal/src/i18n_service.test.tsx similarity index 100% rename from src/core/public/i18n/i18n_service.test.tsx rename to packages/core/i18n/core-i18n-browser-internal/src/i18n_service.test.tsx diff --git a/src/core/public/i18n/i18n_service.tsx b/packages/core/i18n/core-i18n-browser-internal/src/i18n_service.tsx similarity index 76% rename from src/core/public/i18n/i18n_service.tsx rename to packages/core/i18n/core-i18n-browser-internal/src/i18n_service.tsx index 640dec6321184..c42662ae9cd32 100644 --- a/src/core/public/i18n/i18n_service.tsx +++ b/packages/core/i18n/core-i18n-browser-internal/src/i18n_service.tsx @@ -10,6 +10,7 @@ import React from 'react'; import { EuiContext } from '@elastic/eui'; import { I18nProvider } from '@kbn/i18n-react'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { getEuiContextMapping } from './i18n_eui_mapping'; /** @@ -50,17 +51,3 @@ export class I18nService { // nothing to do here currently } } - -/** - * I18nStart.Context is required by any localizable React component from \@kbn/i18n and \@elastic/eui packages - * and is supposed to be used as the topmost component for any i18n-compatible React tree. - * - * @public - * - */ -export interface I18nStart { - /** - * React Context provider required as the topmost component for any i18n-compatible React tree. - */ - Context: ({ children }: { children: React.ReactNode }) => JSX.Element; -} diff --git a/src/core/public/i18n/index.ts b/packages/core/i18n/core-i18n-browser-internal/src/index.ts similarity index 89% rename from src/core/public/i18n/index.ts rename to packages/core/i18n/core-i18n-browser-internal/src/index.ts index 791920dd31372..6c2bc79fe50b7 100644 --- a/src/core/public/i18n/index.ts +++ b/packages/core/i18n/core-i18n-browser-internal/src/index.ts @@ -7,4 +7,3 @@ */ export { I18nService } from './i18n_service'; -export type { I18nStart } from './i18n_service'; diff --git a/packages/core/i18n/core-i18n-browser-internal/tsconfig.json b/packages/core/i18n/core-i18n-browser-internal/tsconfig.json new file mode 100644 index 0000000000000..97a3644c3c703 --- /dev/null +++ b/packages/core/i18n/core-i18n-browser-internal/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/core/i18n/core-i18n-browser-mocks/BUILD.bazel b/packages/core/i18n/core-i18n-browser-mocks/BUILD.bazel new file mode 100644 index 0000000000000..4a3b9ec38e879 --- /dev/null +++ b/packages/core/i18n/core-i18n-browser-mocks/BUILD.bazel @@ -0,0 +1,109 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-i18n-browser-mocks" +PKG_REQUIRE_NAME = "@kbn/core-i18n-browser-mocks" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + "src/**/*.tsx", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "//packages/core/injected-metadata/core-injected-metadata-browser-mocks", + "//packages/core/i18n/core-i18n-browser-internal", +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "//packages/kbn-utility-types:npm_module_types", + "//packages/core/injected-metadata/core-injected-metadata-browser-mocks:npm_module_types", + "//packages/core/i18n/core-i18n-browser:npm_module_types", + "//packages/core/i18n/core-i18n-browser-internal:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/i18n/core-i18n-browser-mocks/README.md b/packages/core/i18n/core-i18n-browser-mocks/README.md new file mode 100644 index 0000000000000..18275d785215e --- /dev/null +++ b/packages/core/i18n/core-i18n-browser-mocks/README.md @@ -0,0 +1,3 @@ +# @kbn/core-i18n-browser-mocks + +This package contains the mocks for Core's browser-side i18n service. diff --git a/packages/core/i18n/core-i18n-browser-mocks/jest.config.js b/packages/core/i18n/core-i18n-browser-mocks/jest.config.js new file mode 100644 index 0000000000000..3e15cf7870c1a --- /dev/null +++ b/packages/core/i18n/core-i18n-browser-mocks/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/packages/core/i18n/core-i18n-browser-mocks'], +}; diff --git a/packages/core/i18n/core-i18n-browser-mocks/package.json b/packages/core/i18n/core-i18n-browser-mocks/package.json new file mode 100644 index 0000000000000..45424b4938ade --- /dev/null +++ b/packages/core/i18n/core-i18n-browser-mocks/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-i18n-browser-mocks", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "browser": "./target_web/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/public/i18n/i18n_service.mock.ts b/packages/core/i18n/core-i18n-browser-mocks/src/i18n_service.mock.ts similarity index 91% rename from src/core/public/i18n/i18n_service.mock.ts rename to packages/core/i18n/core-i18n-browser-mocks/src/i18n_service.mock.ts index be28a2d565cb2..ed4e4891ff1d7 100644 --- a/src/core/public/i18n/i18n_service.mock.ts +++ b/packages/core/i18n/core-i18n-browser-mocks/src/i18n_service.mock.ts @@ -8,8 +8,8 @@ import React from 'react'; import type { PublicMethodsOf } from '@kbn/utility-types'; - -import { I18nService, I18nStart } from './i18n_service'; +import { I18nService } from '@kbn/core-i18n-browser-internal'; +import type { I18nStart } from '@kbn/core-i18n-browser'; const PassThroughComponent = ({ children }: { children: React.ReactNode }) => children; diff --git a/packages/core/i18n/core-i18n-browser-mocks/src/index.ts b/packages/core/i18n/core-i18n-browser-mocks/src/index.ts new file mode 100644 index 0000000000000..2d174cdf989aa --- /dev/null +++ b/packages/core/i18n/core-i18n-browser-mocks/src/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { i18nServiceMock } from './i18n_service.mock'; diff --git a/packages/core/i18n/core-i18n-browser-mocks/tsconfig.json b/packages/core/i18n/core-i18n-browser-mocks/tsconfig.json new file mode 100644 index 0000000000000..97a3644c3c703 --- /dev/null +++ b/packages/core/i18n/core-i18n-browser-mocks/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/core/i18n/core-i18n-browser/BUILD.bazel b/packages/core/i18n/core-i18n-browser/BUILD.bazel new file mode 100644 index 0000000000000..6c44bae7866b0 --- /dev/null +++ b/packages/core/i18n/core-i18n-browser/BUILD.bazel @@ -0,0 +1,105 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-i18n-browser" +PKG_REQUIRE_NAME = "@kbn/core-i18n-browser" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + "src/**/*.tsx", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//@types/react", + "//packages/kbn-i18n:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +jsts_transpiler( + name = "target_web", + srcs = SRCS, + build_pkg_name = package_name(), + web = True, +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node", ":target_web"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/i18n/core-i18n-browser/README.md b/packages/core/i18n/core-i18n-browser/README.md new file mode 100644 index 0000000000000..f7a31f0b471c3 --- /dev/null +++ b/packages/core/i18n/core-i18n-browser/README.md @@ -0,0 +1,3 @@ +# @kbn/core-i18n-browser + +This package contains the public types for Core's browser-side i18n service. diff --git a/packages/core/i18n/core-i18n-browser/jest.config.js b/packages/core/i18n/core-i18n-browser/jest.config.js new file mode 100644 index 0000000000000..c2d008e3eec5f --- /dev/null +++ b/packages/core/i18n/core-i18n-browser/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/packages/core/i18n/core-i18n-browser'], +}; diff --git a/packages/core/i18n/core-i18n-browser/package.json b/packages/core/i18n/core-i18n-browser/package.json new file mode 100644 index 0000000000000..88382aca19615 --- /dev/null +++ b/packages/core/i18n/core-i18n-browser/package.json @@ -0,0 +1,8 @@ +{ + "name": "@kbn/core-i18n-browser", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "browser": "./target_web/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/core/i18n/core-i18n-browser/src/index.ts b/packages/core/i18n/core-i18n-browser/src/index.ts new file mode 100644 index 0000000000000..53a4a886bd5d3 --- /dev/null +++ b/packages/core/i18n/core-i18n-browser/src/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type { I18nStart } from './types'; diff --git a/packages/core/i18n/core-i18n-browser/src/types.ts b/packages/core/i18n/core-i18n-browser/src/types.ts new file mode 100644 index 0000000000000..3d469bf9d458e --- /dev/null +++ b/packages/core/i18n/core-i18n-browser/src/types.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; + +/** + * I18nStart.Context is required by any localizable React component from \@kbn/i18n and \@elastic/eui packages + * and is supposed to be used as the topmost component for any i18n-compatible React tree. + * + * @public + */ +export interface I18nStart { + /** + * React Context provider required as the topmost component for any i18n-compatible React tree. + */ + Context: ({ children }: { children: React.ReactNode }) => JSX.Element; +} diff --git a/packages/core/i18n/core-i18n-browser/tsconfig.json b/packages/core/i18n/core-i18n-browser/tsconfig.json new file mode 100644 index 0000000000000..97a3644c3c703 --- /dev/null +++ b/packages/core/i18n/core-i18n-browser/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/src/core/public/core_system.test.mocks.ts b/src/core/public/core_system.test.mocks.ts index e2b9d361abe85..25bbe39ddcc25 100644 --- a/src/core/public/core_system.test.mocks.ts +++ b/src/core/public/core_system.test.mocks.ts @@ -14,7 +14,7 @@ import { applicationServiceMock } from './application/application_service.mock'; import { chromeServiceMock } from './chrome/chrome_service.mock'; import { fatalErrorsServiceMock } from './fatal_errors/fatal_errors_service.mock'; import { httpServiceMock } from './http/http_service.mock'; -import { i18nServiceMock } from './i18n/i18n_service.mock'; +import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; import { notificationServiceMock } from './notifications/notifications_service.mock'; import { overlayServiceMock } from './overlays/overlay_service.mock'; import { pluginsServiceMock } from './plugins/plugins_service.mock'; @@ -54,7 +54,7 @@ jest.doMock('./fatal_errors', () => ({ export const MockI18nService = i18nServiceMock.create(); export const I18nServiceConstructor = jest.fn().mockImplementation(() => MockI18nService); -jest.doMock('./i18n', () => ({ +jest.doMock('@kbn/core-i18n-browser-internal', () => ({ I18nService: I18nServiceConstructor, })); diff --git a/src/core/public/core_system.ts b/src/core/public/core_system.ts index b49849d84eccd..5402e1cd58504 100644 --- a/src/core/public/core_system.ts +++ b/src/core/public/core_system.ts @@ -17,11 +17,11 @@ import { DocLinksService } from '@kbn/core-doc-links-browser-internal'; import { ThemeService } from '@kbn/core-theme-browser-internal'; import type { AnalyticsServiceSetup } from '@kbn/core-analytics-browser'; import { AnalyticsService } from '@kbn/core-analytics-browser-internal'; +import { I18nService } from '@kbn/core-i18n-browser-internal'; import { CoreSetup, CoreStart } from '.'; import { ChromeService } from './chrome'; import { FatalErrorsService, FatalErrorsSetup } from './fatal_errors'; import { HttpService } from './http'; -import { I18nService } from './i18n'; import { NotificationsService } from './notifications'; import { OverlayService } from './overlays'; import { PluginsService } from './plugins'; diff --git a/src/core/public/fatal_errors/fatal_errors_service.tsx b/src/core/public/fatal_errors/fatal_errors_service.tsx index 048c4e4b4ba8d..952740c414163 100644 --- a/src/core/public/fatal_errors/fatal_errors_service.tsx +++ b/src/core/public/fatal_errors/fatal_errors_service.tsx @@ -13,7 +13,7 @@ import { first, tap } from 'rxjs/operators'; import type { InternalInjectedMetadataSetup } from '@kbn/core-injected-metadata-browser-internal'; import type { ThemeServiceSetup } from '@kbn/core-theme-browser'; -import { I18nStart } from '../i18n'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { CoreContextProvider } from '../utils'; import { FatalErrorsScreen } from './fatal_errors_screen'; import { FatalErrorInfo, getErrorInfo } from './get_error_info'; diff --git a/src/core/public/index.ts b/src/core/public/index.ts index b32d872c40acf..5162cdac1024d 100644 --- a/src/core/public/index.ts +++ b/src/core/public/index.ts @@ -33,6 +33,8 @@ import type { import { DocLinksStart } from '@kbn/core-doc-links-browser'; import type { ThemeServiceSetup, ThemeServiceStart } from '@kbn/core-theme-browser'; import type { AnalyticsServiceSetup, AnalyticsServiceStart } from '@kbn/core-analytics-browser'; +import type { I18nStart } from '@kbn/core-i18n-browser'; + import { ChromeBadge, ChromeBreadcrumb, @@ -57,7 +59,6 @@ import { } from './chrome'; import { FatalErrorsSetup, FatalErrorsStart, FatalErrorInfo } from './fatal_errors'; import { HttpSetup, HttpStart } from './http'; -import { I18nStart } from './i18n'; import { NotificationsSetup, NotificationsStart } from './notifications'; import { OverlayStart } from './overlays'; import { Plugin, PluginInitializer, PluginInitializerContext, PluginOpaqueId } from './plugins'; diff --git a/src/core/public/mocks.ts b/src/core/public/mocks.ts index 6493bd7420f11..3a1f03f5ea782 100644 --- a/src/core/public/mocks.ts +++ b/src/core/public/mocks.ts @@ -14,6 +14,7 @@ import { coreContextMock } from '@kbn/core-base-browser-mocks'; import { analyticsServiceMock } from '@kbn/core-analytics-browser-mocks'; // Only import types from '.' to avoid triggering default Jest mocks. +import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; import { PluginInitializerContext, AppMountParameters } from '.'; // Import values from their individual modules instead. import { ScopedHistory } from './application'; @@ -21,7 +22,6 @@ import { applicationServiceMock } from './application/application_service.mock'; import { chromeServiceMock } from './chrome/chrome_service.mock'; import { fatalErrorsServiceMock } from './fatal_errors/fatal_errors_service.mock'; import { httpServiceMock } from './http/http_service.mock'; -import { i18nServiceMock } from './i18n/i18n_service.mock'; import { notificationServiceMock } from './notifications/notifications_service.mock'; import { overlayServiceMock } from './overlays/overlay_service.mock'; import { uiSettingsServiceMock } from './ui_settings/ui_settings_service.mock'; @@ -37,7 +37,7 @@ export { chromeServiceMock } from './chrome/chrome_service.mock'; export { executionContextServiceMock } from './execution_context/execution_context_service.mock'; export { fatalErrorsServiceMock } from './fatal_errors/fatal_errors_service.mock'; export { httpServiceMock } from './http/http_service.mock'; -export { i18nServiceMock } from './i18n/i18n_service.mock'; +export { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; export { notificationServiceMock } from './notifications/notifications_service.mock'; export { overlayServiceMock } from './overlays/overlay_service.mock'; export { uiSettingsServiceMock } from './ui_settings/ui_settings_service.mock'; diff --git a/src/core/public/notifications/notifications_service.ts b/src/core/public/notifications/notifications_service.ts index e09134944ff5d..859e21de5ffed 100644 --- a/src/core/public/notifications/notifications_service.ts +++ b/src/core/public/notifications/notifications_service.ts @@ -10,7 +10,7 @@ import { i18n } from '@kbn/i18n'; import { Subscription } from 'rxjs'; import type { ThemeServiceStart } from '@kbn/core-theme-browser'; -import { I18nStart } from '../i18n'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { ToastsService, ToastsSetup, ToastsStart } from './toasts'; import { IUiSettingsClient } from '../ui_settings'; import { OverlayStart } from '../overlays'; diff --git a/src/core/public/notifications/toasts/error_toast.tsx b/src/core/public/notifications/toasts/error_toast.tsx index 3b0a8a14f4966..bef4833d0097d 100644 --- a/src/core/public/notifications/toasts/error_toast.tsx +++ b/src/core/public/notifications/toasts/error_toast.tsx @@ -20,8 +20,8 @@ import { } from '@elastic/eui'; import { EuiSpacer } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { OverlayStart } from '../..'; -import { I18nStart } from '../../i18n'; interface ErrorToastProps { title: string; diff --git a/src/core/public/notifications/toasts/toasts_api.test.ts b/src/core/public/notifications/toasts/toasts_api.test.ts index 9130e060a37f8..d6b67bdb63f7a 100644 --- a/src/core/public/notifications/toasts/toasts_api.test.ts +++ b/src/core/public/notifications/toasts/toasts_api.test.ts @@ -11,7 +11,7 @@ import { firstValueFrom } from 'rxjs'; import { ToastsApi } from './toasts_api'; import { uiSettingsServiceMock } from '../../ui_settings/ui_settings_service.mock'; -import { i18nServiceMock } from '../../i18n/i18n_service.mock'; +import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; async function getCurrentToasts(toasts: ToastsApi) { return await firstValueFrom(toasts.get$()); diff --git a/src/core/public/notifications/toasts/toasts_api.tsx b/src/core/public/notifications/toasts/toasts_api.tsx index 5aaea1ca90a56..ecf32d442931c 100644 --- a/src/core/public/notifications/toasts/toasts_api.tsx +++ b/src/core/public/notifications/toasts/toasts_api.tsx @@ -11,12 +11,12 @@ import React from 'react'; import * as Rx from 'rxjs'; import { omitBy, isUndefined } from 'lodash'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { ErrorToast } from './error_toast'; import { MountPoint } from '../../types'; import { mountReactNode } from '../../utils'; import { IUiSettingsClient } from '../../ui_settings'; import { OverlayStart } from '../../overlays'; -import { I18nStart } from '../../i18n'; /** * Allowed fields for {@link ToastInput}. diff --git a/src/core/public/notifications/toasts/toasts_service.tsx b/src/core/public/notifications/toasts/toasts_service.tsx index 505cbb8787ca3..045da1fc24d02 100644 --- a/src/core/public/notifications/toasts/toasts_service.tsx +++ b/src/core/public/notifications/toasts/toasts_service.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; import type { ThemeServiceStart } from '@kbn/core-theme-browser'; -import { I18nStart } from '../../i18n'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { IUiSettingsClient } from '../../ui_settings'; import { GlobalToastList } from './global_toast_list'; import { ToastsApi, IToasts } from './toasts_api'; diff --git a/src/core/public/overlays/banners/banners_service.test.ts b/src/core/public/overlays/banners/banners_service.test.ts index 6ab49ce1b5f15..d3093879f8715 100644 --- a/src/core/public/overlays/banners/banners_service.test.ts +++ b/src/core/public/overlays/banners/banners_service.test.ts @@ -8,7 +8,7 @@ import { OverlayBannersService, OverlayBannersStart } from './banners_service'; import { take } from 'rxjs/operators'; -import { i18nServiceMock } from '../../i18n/i18n_service.mock'; +import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; import { uiSettingsServiceMock } from '../../ui_settings/ui_settings_service.mock'; describe('OverlayBannersService', () => { diff --git a/src/core/public/overlays/banners/banners_service.tsx b/src/core/public/overlays/banners/banners_service.tsx index 540a46d373304..a5436d21ef45e 100644 --- a/src/core/public/overlays/banners/banners_service.tsx +++ b/src/core/public/overlays/banners/banners_service.tsx @@ -10,10 +10,10 @@ import React from 'react'; import { BehaviorSubject, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { PriorityMap } from './priority_map'; import { BannersList } from './banners_list'; import { IUiSettingsClient } from '../../ui_settings'; -import { I18nStart } from '../../i18n'; import { MountPoint } from '../../types'; import { UserBannerService } from './user_banner_service'; diff --git a/src/core/public/overlays/banners/user_banner_service.test.ts b/src/core/public/overlays/banners/user_banner_service.test.ts index ff46a03886d7e..52d6d00171261 100644 --- a/src/core/public/overlays/banners/user_banner_service.test.ts +++ b/src/core/public/overlays/banners/user_banner_service.test.ts @@ -9,7 +9,7 @@ import { uiSettingsServiceMock } from '../../ui_settings/ui_settings_service.mock'; import { UserBannerService } from './user_banner_service'; import { overlayBannersServiceMock } from './banners_service.mock'; -import { i18nServiceMock } from '../../i18n/i18n_service.mock'; +import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; import { Subject } from 'rxjs'; describe('OverlayBannersService', () => { diff --git a/src/core/public/overlays/banners/user_banner_service.tsx b/src/core/public/overlays/banners/user_banner_service.tsx index cb6dd81d85a7b..175d43ea8ba59 100644 --- a/src/core/public/overlays/banners/user_banner_service.tsx +++ b/src/core/public/overlays/banners/user_banner_service.tsx @@ -14,7 +14,7 @@ import { Subscription } from 'rxjs'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiCallOut, EuiButton, EuiLoadingSpinner } from '@elastic/eui'; -import { I18nStart } from '../../i18n'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { IUiSettingsClient } from '../../ui_settings'; import { OverlayBannersStart } from './banners_service'; diff --git a/src/core/public/overlays/flyout/flyout_service.test.tsx b/src/core/public/overlays/flyout/flyout_service.test.tsx index b1508153a47f1..cd7e72f2883f5 100644 --- a/src/core/public/overlays/flyout/flyout_service.test.tsx +++ b/src/core/public/overlays/flyout/flyout_service.test.tsx @@ -9,7 +9,7 @@ import { mockReactDomRender, mockReactDomUnmount } from '../overlay.test.mocks'; import { mount } from 'enzyme'; -import { i18nServiceMock } from '../../i18n/i18n_service.mock'; +import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; import { themeServiceMock } from '@kbn/core-theme-browser-mocks'; import { FlyoutService, OverlayFlyoutStart } from './flyout_service'; import { OverlayRef } from '../types'; diff --git a/src/core/public/overlays/flyout/flyout_service.tsx b/src/core/public/overlays/flyout/flyout_service.tsx index a7eed8a1751fd..701915113bb5a 100644 --- a/src/core/public/overlays/flyout/flyout_service.tsx +++ b/src/core/public/overlays/flyout/flyout_service.tsx @@ -13,7 +13,7 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; import { Subject } from 'rxjs'; import type { ThemeServiceStart } from '@kbn/core-theme-browser'; -import { I18nStart } from '../../i18n'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { MountPoint } from '../../types'; import { OverlayRef } from '../types'; import { MountWrapper, CoreContextProvider } from '../../utils'; diff --git a/src/core/public/overlays/modal/modal_service.test.tsx b/src/core/public/overlays/modal/modal_service.test.tsx index a95d61e4f46c2..bd4353c4e8982 100644 --- a/src/core/public/overlays/modal/modal_service.test.tsx +++ b/src/core/public/overlays/modal/modal_service.test.tsx @@ -10,7 +10,7 @@ import { mockReactDomRender, mockReactDomUnmount } from '../overlay.test.mocks'; import React from 'react'; import { mount } from 'enzyme'; -import { i18nServiceMock } from '../../i18n/i18n_service.mock'; +import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; import { themeServiceMock } from '@kbn/core-theme-browser-mocks'; import { ModalService, OverlayModalStart } from './modal_service'; import { mountReactNode } from '../../utils'; diff --git a/src/core/public/overlays/modal/modal_service.tsx b/src/core/public/overlays/modal/modal_service.tsx index 37c6e002e5904..0195fb2b5bf1f 100644 --- a/src/core/public/overlays/modal/modal_service.tsx +++ b/src/core/public/overlays/modal/modal_service.tsx @@ -14,7 +14,7 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; import { Subject } from 'rxjs'; import type { ThemeServiceStart } from '@kbn/core-theme-browser'; -import { I18nStart } from '../../i18n'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { MountPoint } from '../../types'; import { OverlayRef } from '../types'; import { MountWrapper, CoreContextProvider } from '../../utils'; diff --git a/src/core/public/overlays/overlay_service.ts b/src/core/public/overlays/overlay_service.ts index 2a52aa323c480..35e839b0e175b 100644 --- a/src/core/public/overlays/overlay_service.ts +++ b/src/core/public/overlays/overlay_service.ts @@ -7,7 +7,7 @@ */ import type { ThemeServiceStart } from '@kbn/core-theme-browser'; -import { I18nStart } from '../i18n'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { IUiSettingsClient } from '../ui_settings'; import { OverlayBannersStart, OverlayBannersService } from './banners'; import { FlyoutService, OverlayFlyoutStart } from './flyout'; diff --git a/src/core/public/plugins/plugins_service.test.ts b/src/core/public/plugins/plugins_service.test.ts index 6e91392abde06..b3d0ab8f295a5 100644 --- a/src/core/public/plugins/plugins_service.test.ts +++ b/src/core/public/plugins/plugins_service.test.ts @@ -27,7 +27,7 @@ import { themeServiceMock } from '@kbn/core-theme-browser-mocks'; import { analyticsServiceMock } from '@kbn/core-analytics-browser-mocks'; import { notificationServiceMock } from '../notifications/notifications_service.mock'; import { applicationServiceMock } from '../application/application_service.mock'; -import { i18nServiceMock } from '../i18n/i18n_service.mock'; +import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; import { overlayServiceMock } from '../overlays/overlay_service.mock'; import { chromeServiceMock } from '../chrome/chrome_service.mock'; import { fatalErrorsServiceMock } from '../fatal_errors/fatal_errors_service.mock'; diff --git a/src/core/public/public.api.md b/src/core/public/public.api.md index ddb6522c7afa8..279d97d571262 100644 --- a/src/core/public/public.api.md +++ b/src/core/public/public.api.md @@ -29,6 +29,7 @@ import { EventType } from '@kbn/analytics-client'; import { EventTypeOpts } from '@kbn/analytics-client'; import { History as History_2 } from 'history'; import { Href } from 'history'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import { IconType } from '@elastic/eui'; import { InjectedMetadataParams } from '@kbn/core-injected-metadata-browser-internal'; import type { InjectedMetadataSetup } from '@kbn/core-injected-metadata-browser'; @@ -445,6 +446,8 @@ export interface CoreStart { fatalErrors: FatalErrorsStart; // (undocumented) http: HttpStart; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: This type of declaration is not supported yet by the resolver + // // (undocumented) i18n: I18nStart; // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "kibana" does not have an export "InjectedMetadataStart" @@ -688,12 +691,7 @@ export interface HttpSetup { // @public export type HttpStart = HttpSetup; -// @public -export interface I18nStart { - Context: ({ children }: { - children: React_2.ReactNode; - }) => JSX.Element; -} +export { I18nStart } // Warning: (ae-missing-release-tag) "IAnonymousPaths" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // diff --git a/src/core/public/rendering/rendering_service.test.tsx b/src/core/public/rendering/rendering_service.test.tsx index 3841cd98d33f7..13cfe0b29527e 100644 --- a/src/core/public/rendering/rendering_service.test.tsx +++ b/src/core/public/rendering/rendering_service.test.tsx @@ -14,7 +14,7 @@ import { applicationServiceMock } from '../application/application_service.mock' import { chromeServiceMock } from '../chrome/chrome_service.mock'; import { overlayServiceMock } from '../overlays/overlay_service.mock'; import { themeServiceMock } from '@kbn/core-theme-browser-mocks'; -import { i18nServiceMock } from '../i18n/i18n_service.mock'; +import { i18nServiceMock } from '@kbn/core-i18n-browser-mocks'; import { BehaviorSubject } from 'rxjs'; describe('RenderingService#start', () => { diff --git a/src/core/public/rendering/rendering_service.tsx b/src/core/public/rendering/rendering_service.tsx index 53165b5ff0c42..48031db64897a 100644 --- a/src/core/public/rendering/rendering_service.tsx +++ b/src/core/public/rendering/rendering_service.tsx @@ -11,10 +11,10 @@ import ReactDOM from 'react-dom'; import { pairwise, startWith } from 'rxjs/operators'; import type { ThemeServiceStart } from '@kbn/core-theme-browser'; +import type { I18nStart } from '@kbn/core-i18n-browser'; import type { InternalChromeStart } from '../chrome'; import type { InternalApplicationStart } from '../application'; import type { OverlayStart } from '../overlays'; -import type { I18nStart } from '../i18n'; import { CoreContextProvider } from '../utils'; import { AppWrapper } from './app_containers'; diff --git a/src/core/public/utils/core_context_provider.tsx b/src/core/public/utils/core_context_provider.tsx index 4d13bfb3a7d48..a400f8eae9916 100644 --- a/src/core/public/utils/core_context_provider.tsx +++ b/src/core/public/utils/core_context_provider.tsx @@ -9,7 +9,7 @@ import React, { FC } from 'react'; import type { ThemeServiceStart } from '@kbn/core-theme-browser'; import { CoreThemeProvider } from '@kbn/core-theme-browser-internal'; -import type { I18nStart } from '../i18n'; +import type { I18nStart } from '@kbn/core-i18n-browser'; interface CoreContextProviderProps { theme: ThemeServiceStart; diff --git a/src/plugins/usage_collection/tsconfig.json b/src/plugins/usage_collection/tsconfig.json index 7fac30a8048ea..0430eb5d64bf1 100644 --- a/src/plugins/usage_collection/tsconfig.json +++ b/src/plugins/usage_collection/tsconfig.json @@ -17,4 +17,4 @@ { "path": "../../core/tsconfig.json" }, { "path": "../../plugins/kibana_utils/tsconfig.json" } ] -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 7cb012f39dcb7..f23fdcdac0674 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3087,6 +3087,18 @@ version "0.0.0" uid "" +"@kbn/core-i18n-browser-internal@link:bazel-bin/packages/core/i18n/core-i18n-browser-internal": + version "0.0.0" + uid "" + +"@kbn/core-i18n-browser-mocks@link:bazel-bin/packages/core/i18n/core-i18n-browser-mocks": + version "0.0.0" + uid "" + +"@kbn/core-i18n-browser@link:bazel-bin/packages/core/i18n/core-i18n-browser": + version "0.0.0" + uid "" + "@kbn/core-injected-metadata-browser-internal@link:bazel-bin/packages/core/injected-metadata/core-injected-metadata-browser-internal": version "0.0.0" uid "" @@ -3363,6 +3375,10 @@ version "0.0.0" uid "" +"@kbn/shared-ux-button-toolbar@link:bazel-bin/packages/shared-ux/button_toolbar": + version "0.0.0" + uid "" + "@kbn/shared-ux-card-no-data@link:bazel-bin/packages/shared-ux/card/no_data": version "0.0.0" uid "" @@ -3391,10 +3407,6 @@ version "0.0.0" uid "" -"@kbn/shared-ux-button-toolbar@link:bazel-bin/packages/shared-ux/button_toolbar": - version "0.0.0" - uid "" - "@kbn/shared-ux-storybook@link:bazel-bin/packages/kbn-shared-ux-storybook": version "0.0.0" uid "" @@ -6490,6 +6502,18 @@ version "0.0.0" uid "" +"@types/kbn__core-i18n-browser-internal@link:bazel-bin/packages/core/i18n/core-i18n-browser-internal/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-i18n-browser-mocks@link:bazel-bin/packages/core/i18n/core-i18n-browser-mocks/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-i18n-browser@link:bazel-bin/packages/core/i18n/core-i18n-browser/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__core-injected-metadata-browser-internal@link:bazel-bin/packages/core/injected-metadata/core-injected-metadata-browser-internal/npm_module_types": version "0.0.0" uid "" @@ -6750,6 +6774,10 @@ version "0.0.0" uid "" +"@types/kbn__shared-ux-button-toolbar@link:bazel-bin/packages/shared-ux/button_toolbar/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__shared-ux-card-no-data@link:bazel-bin/packages/shared-ux/card/no_data/npm_module_types": version "0.0.0" uid "" @@ -6778,10 +6806,6 @@ version "0.0.0" uid "" -"@types/kbn__shared-ux-button-toolbar@link:bazel-bin/packages/shared-ux/button_toolbar/npm_module_types": - version "0.0.0" - uid "" - "@types/kbn__shared-ux-storybook@link:bazel-bin/packages/kbn-shared-ux-storybook/npm_module_types": version "0.0.0" uid "" From 9bd63de3e62c789a75fbc20356d5d70cd2ceb0ee Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Wed, 22 Jun 2022 15:00:32 +0200 Subject: [PATCH 28/61] [Discover] Fix multiple renderings of Discover embeddable (#134891) --- .../embeddable/saved_search_embeddable.tsx | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx index 0cd179768df0a..bc208aaaab0ec 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx @@ -131,12 +131,15 @@ export class SavedSearchEmbeddable this.inspectorAdapters = { requests: new RequestAdapter(), }; + this.panelTitle = savedSearch.title ?? ''; this.initializeSearchEmbeddableProps(); this.subscription = this.getUpdated$().subscribe(() => { - this.panelTitle = this.output.title || ''; - - if (this.searchProps) { + const titleChanged = this.output.title && this.panelTitle !== this.output.title; + if (titleChanged) { + this.panelTitle = this.output.title || ''; + } + if (this.searchProps && (titleChanged || this.isFetchRequired(this.searchProps))) { this.pushContainerStateParamsToProps(this.searchProps); } }); @@ -329,16 +332,24 @@ export class SavedSearchEmbeddable } } - private async pushContainerStateParamsToProps( - searchProps: SearchProps, - { forceFetch = false }: { forceFetch: boolean } = { forceFetch: false } - ) { - const isFetchRequired = + private isFetchRequired(searchProps?: SearchProps) { + if (!searchProps) { + return false; + } + return ( !onlyDisabledFiltersChanged(this.input.filters, this.prevFilters) || !isEqual(this.prevQuery, this.input.query) || !isEqual(this.prevTimeRange, this.input.timeRange) || !isEqual(searchProps.sort, this.input.sort || this.savedSearch.sort) || - this.prevSearchSessionId !== this.input.searchSessionId; + this.prevSearchSessionId !== this.input.searchSessionId + ); + } + + private async pushContainerStateParamsToProps( + searchProps: SearchProps, + { forceFetch = false }: { forceFetch: boolean } = { forceFetch: false } + ) { + const isFetchRequired = this.isFetchRequired(searchProps); // If there is column or sort data on the panel, that means the original columns or sort settings have // been overridden in a dashboard. @@ -393,7 +404,7 @@ export class SavedSearchEmbeddable } private renderReactComponent(domNode: HTMLElement, searchProps: SearchProps) { - if (!this.searchProps) { + if (!searchProps) { return; } From d74d26f523cf0882375f8b01734cffee9defd9d5 Mon Sep 17 00:00:00 2001 From: Mark Hopkin Date: Wed, 22 Jun 2022 14:16:24 +0100 Subject: [PATCH 29/61] [Fleet] fix flickering create agent policy when adding agent (#134890) --- .../fleet_server_instructions/steps/select_agent_policy.tsx | 2 +- .../agent_enrollment_flyout/agent_policy_select_create.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/select_agent_policy.tsx b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/select_agent_policy.tsx index d7f2301b663f1..24099534db80c 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/select_agent_policy.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/steps/select_agent_policy.tsx @@ -26,7 +26,7 @@ export const getSelectAgentPolicyStep = ({ }): EuiStepProps => { return { title: - eligibleFleetServerPolicies.length === 0 + eligibleFleetServerPolicies.length === 0 && !policyId ? i18n.translate('xpack.fleet.fleetServerSetup.stepCreateAgentPolicyTitle', { defaultMessage: 'Create a policy for Fleet Server', }) diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_select_create.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_select_create.tsx index 4dab3b054bc8d..35a65deffc70b 100644 --- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_select_create.tsx +++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/agent_policy_select_create.tsx @@ -79,9 +79,9 @@ export const SelectCreateAgentPolicy: React.FC = ({ ); useEffect(() => { - setShowCreatePolicy(regularAgentPolicies.length === 0); + setShowCreatePolicy(regularAgentPolicies.length === 0 && !selectedPolicyId); setNewName(incrementPolicyName(regularAgentPolicies, isFleetServerPolicy)); - }, [regularAgentPolicies, isFleetServerPolicy]); + }, [regularAgentPolicies, isFleetServerPolicy, selectedPolicyId]); const onAgentPolicyCreated = useCallback( async (policy: AgentPolicy | null, errorMessage?: JSX.Element) => { From 3d36e49dc5f5fa0f80dfa2a1145e6ad5a38665d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Fern=C3=A1ndez=20Haro?= Date: Wed, 22 Jun 2022 15:22:07 +0200 Subject: [PATCH 30/61] Upgrade `@elastic/elasticsearch-canary@8.3.0-canary.1` (#134848) --- package.json | 6 +- .../services/ml_api_service/trained_models.ts | 2 +- .../test_models/models/inference_base.ts | 8 +-- .../models/text_classification/common.ts | 4 +- .../ml/server/lib/ml_client/ml_client.ts | 2 +- .../data_frame_analytics/models_provider.ts | 1 - .../ml/server/routes/trained_models.ts | 2 +- yarn.lock | 66 +++++++++++-------- 8 files changed, 50 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index 0024da78d1f37..fa5cb47316fd3 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ }, "resolutions": { "**/@babel/runtime": "^7.17.9", - "**/@types/node": "16.11.7", + "**/@types/node": "16.11.41", "**/chokidar": "^3.4.3", "**/deepmerge": "^4.2.2", "**/fast-deep-equal": "^3.1.1", @@ -107,7 +107,7 @@ "@elastic/apm-synthtrace": "link:bazel-bin/packages/elastic-apm-synthtrace", "@elastic/charts": "46.10.2", "@elastic/datemath": "5.0.3", - "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.2.0-canary.2", + "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.3.0-canary.1", "@elastic/ems-client": "8.3.3", "@elastic/eui": "59.0.1", "@elastic/filesaver": "1.1.2", @@ -806,7 +806,7 @@ "@types/mustache": "^0.8.31", "@types/ncp": "^2.0.1", "@types/nock": "^10.0.3", - "@types/node": "16.11.7", + "@types/node": "16.11.41", "@types/node-fetch": "^2.6.0", "@types/node-forge": "^1.0.2", "@types/nodemailer": "^6.4.0", diff --git a/x-pack/plugins/ml/public/application/services/ml_api_service/trained_models.ts b/x-pack/plugins/ml/public/application/services/ml_api_service/trained_models.ts index d15c500ddb9c4..201ed34e42654 100644 --- a/x-pack/plugins/ml/public/application/services/ml_api_service/trained_models.ts +++ b/x-pack/plugins/ml/public/application/services/ml_api_service/trained_models.ts @@ -48,7 +48,7 @@ export interface InferenceStatsResponse { } export interface MlInferTrainedModelDeploymentResponse { - inference_results: estypes.MlInferTrainedModelDeploymentResponse[]; + inference_results: estypes.MlInferenceResponseResult[]; } /** diff --git a/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/models/inference_base.ts b/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/models/inference_base.ts index e3b502a10f6ce..ed1d8fdacbca4 100644 --- a/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/models/inference_base.ts +++ b/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/models/inference_base.ts @@ -74,17 +74,17 @@ export abstract class InferenceBase { protected abstract infer(): Promise; - protected getInferenceConfig(): estypes.AggregationsClassificationInferenceOptions | undefined { + protected getInferenceConfig(): estypes.MlInferenceConfigCreateContainer[keyof estypes.MlInferenceConfigCreateContainer] { return this.model.inference_config[ - this.inferenceType as keyof estypes.AggregationsInferenceConfigContainer + this.inferenceType as keyof estypes.MlInferenceConfigCreateContainer ]; } protected getNumTopClassesConfig(defaultOverride = 5) { - const options: estypes.AggregationsClassificationInferenceOptions | undefined = + const options: estypes.MlInferenceConfigCreateContainer[keyof estypes.MlInferenceConfigCreateContainer] = this.getInferenceConfig(); - if (options?.num_top_classes !== undefined && options?.num_top_classes > 0) { + if (options && 'num_top_classes' in options && (options?.num_top_classes ?? 0 > 0)) { return {}; } diff --git a/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/models/text_classification/common.ts b/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/models/text_classification/common.ts index ab136900c7d1e..6592e44800d14 100644 --- a/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/models/text_classification/common.ts +++ b/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/models/text_classification/common.ts @@ -39,9 +39,7 @@ export function processResponse( const { inference_results: [inferenceResults], } = resp; - const labels: string[] = - // @ts-expect-error inference config is wrong - model.inference_config.text_classification?.classification_labels ?? []; + const labels: string[] = model.inference_config.text_classification?.classification_labels ?? []; let formattedResponse = [ { diff --git a/x-pack/plugins/ml/server/lib/ml_client/ml_client.ts b/x-pack/plugins/ml/server/lib/ml_client/ml_client.ts index 808c77d4d6ea5..a54bad9d886fe 100644 --- a/x-pack/plugins/ml/server/lib/ml_client/ml_client.ts +++ b/x-pack/plugins/ml/server/lib/ml_client/ml_client.ts @@ -494,7 +494,7 @@ export function getMlClient( await modelIdsCheck(p); return mlClient.stopTrainedModelDeployment(...p); }, - async inferTrainedModelDeployment(...p: Parameters) { + async inferTrainedModel(...p: Parameters) { await modelIdsCheck(p); // Temporary workaround for the incorrect inferTrainedModelDeployment function in the esclient if ( diff --git a/x-pack/plugins/ml/server/models/data_frame_analytics/models_provider.ts b/x-pack/plugins/ml/server/models/data_frame_analytics/models_provider.ts index 4ee77f06eac1f..1f6bb64fd76f4 100644 --- a/x-pack/plugins/ml/server/models/data_frame_analytics/models_provider.ts +++ b/x-pack/plugins/ml/server/models/data_frame_analytics/models_provider.ts @@ -112,7 +112,6 @@ export function modelsProvider(client: IScopedClusterClient, mlClient: MlClient) */ async getNodesOverview(): Promise { // TODO set node_id to ml:true when elasticsearch client is updated. - // @ts-expect-error typo in type definition: MlGetMemoryStatsResponse.cluser_name const response = (await mlClient.getMemoryStats()) as MemoryStatsResponse; const { trained_model_stats: trainedModelStats } = await mlClient.getTrainedModelsStats({ diff --git a/x-pack/plugins/ml/server/routes/trained_models.ts b/x-pack/plugins/ml/server/routes/trained_models.ts index 849d3b04d8cef..1fcfe4e1fa05e 100644 --- a/x-pack/plugins/ml/server/routes/trained_models.ts +++ b/x-pack/plugins/ml/server/routes/trained_models.ts @@ -377,7 +377,7 @@ export function trainedModelsRoutes({ router, routeGuard }: RouteInitialization) routeGuard.fullLicenseAPIGuard(async ({ mlClient, request, response }) => { try { const { modelId } = request.params; - const body = await mlClient.inferTrainedModelDeployment({ + const body = await mlClient.inferTrainedModel({ model_id: modelId, body: { docs: request.body.docs, diff --git a/yarn.lock b/yarn.lock index f23fdcdac0674..127bfd048f48d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1476,13 +1476,13 @@ dependencies: "@elastic/ecs-helpers" "^1.1.0" -"@elastic/elasticsearch@npm:@elastic/elasticsearch-canary@8.2.0-canary.2": - version "8.2.0-canary.2" - resolved "https://registry.yarnpkg.com/@elastic/elasticsearch-canary/-/elasticsearch-canary-8.2.0-canary.2.tgz#2513926cdbfe7c070e1fa6926f7829171b27cdba" - integrity sha512-Ki2lQ3/UlOnBaf5EjNw0WmCdXiW+J020aYtdVnIuCNhPSLoNPKoM7P+MlggdfeRnENvINlStrMy4bkYF/h6Vbw== +"@elastic/elasticsearch@npm:@elastic/elasticsearch-canary@8.3.0-canary.1": + version "8.3.0-canary.1" + resolved "https://registry.yarnpkg.com/@elastic/elasticsearch-canary/-/elasticsearch-canary-8.3.0-canary.1.tgz#31dc18f724433c4135ed85fde5fd018393134552" + integrity sha512-CSNP4vTL/90VRD3MbvfBggy4VBxEgNmlHQf7mlWiPRTxo24t68PqNS+TnsfzO7fbY/nOALoX9hE8VlxRcMo0iA== dependencies: - "@elastic/transport" "^8.0.2" - tslib "^2.3.0" + "@elastic/transport" "^8.2.0" + tslib "^2.4.0" "@elastic/ems-client@8.3.3": version "8.3.3" @@ -1661,17 +1661,17 @@ ts-node "^10.5.0" typescript "^4.5.5" -"@elastic/transport@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@elastic/transport/-/transport-8.0.2.tgz#715f06c7739516867508108df30c33973ca8e81c" - integrity sha512-OlDz3WO3pKE9vSxW4wV/mn7rYCtBmSsDwxr64h/S1Uc/zrIBXb0iUsRMSkiybXugXhjwyjqG2n1Wc7jjFxrskQ== +"@elastic/transport@^8.2.0": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@elastic/transport/-/transport-8.2.0.tgz#f292cb79c918a36268dd853431e41f13544814ad" + integrity sha512-H/HmefMNQfLiBSVTmNExu2lYs5EzwipUnQB53WLr17RCTDaQX0oOLHcWpDsbKQSRhDAMPPzp5YZsZMJxuxPh7A== dependencies: - debug "^4.3.2" - hpagent "^0.1.2" + debug "^4.3.4" + hpagent "^1.0.0" ms "^2.1.3" secure-json-parse "^2.4.0" - tslib "^2.3.0" - undici "^4.14.1" + tslib "^2.4.0" + undici "^5.1.1" "@emotion/babel-plugin-jsx-pragmatic@^0.1.5": version "0.1.5" @@ -7089,10 +7089,10 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@12.20.24", "@types/node@16.11.7", "@types/node@>= 8", "@types/node@>=8.9.0", "@types/node@^10.1.0", "@types/node@^14.0.10", "@types/node@^14.14.31": - version "16.11.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42" - integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw== +"@types/node@*", "@types/node@12.20.24", "@types/node@16.11.41", "@types/node@>= 8", "@types/node@>=8.9.0", "@types/node@^10.1.0", "@types/node@^14.0.10", "@types/node@^14.14.31": + version "16.11.41" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.41.tgz#88eb485b1bfdb4c224d878b7832239536aa2f813" + integrity sha512-mqoYK2TnVjdkGk8qXAVGc/x9nSaTpSrFaGFm43BUH3IdoBV0nta6hYaGmdOvIMlbHJbUEVen3gvwpwovAZKNdQ== "@types/nodemailer@^6.4.0": version "6.4.0" @@ -12586,6 +12586,13 @@ debug@4.3.2: dependencies: ms "2.1.2" +debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -16638,10 +16645,10 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -hpagent@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-0.1.2.tgz#cab39c66d4df2d4377dbd212295d878deb9bdaa9" - integrity sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ== +hpagent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-1.0.0.tgz#c68f68b3df845687dbdc4896546713ce09cc6bee" + integrity sha512-SCleE2Uc1bM752ymxg8QXYGW0TWtAV4ZW3TqH1aOnyi6T6YW2xadCcclm5qeVjvMvfQ2RKNtZxO7uVb9CTPt1A== hsl-regex@^1.0.0: version "1.0.0" @@ -28496,7 +28503,7 @@ tsd@^0.20.0: path-exists "^4.0.0" read-pkg-up "^7.0.0" -tslib@2.3.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@~2.3.1: +tslib@2.3.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -28511,6 +28518,11 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.2.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== +tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tslib@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" @@ -28775,10 +28787,10 @@ undertaker@^1.2.1: object.reduce "^1.0.0" undertaker-registry "^1.0.0" -undici@^4.14.1: - version "4.14.1" - resolved "https://registry.yarnpkg.com/undici/-/undici-4.14.1.tgz#7633b143a8a10d6d63335e00511d071e8d52a1d9" - integrity sha512-WJ+g+XqiZcATcBaUeluCajqy4pEDcQfK1vy+Fo+bC4/mqXI9IIQD/XWHLS70fkGUT6P52Drm7IFslO651OdLPQ== +undici@^5.1.1: + version "5.5.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.5.1.tgz#baaf25844a99eaa0b22e1ef8d205bffe587c8f43" + integrity sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw== unfetch@^4.2.0: version "4.2.0" From 6c79885d2711e77d1011236ec29ae51f162007f1 Mon Sep 17 00:00:00 2001 From: Bhavya RM Date: Wed, 22 Jun 2022 09:43:52 -0400 Subject: [PATCH 31/61] Kbnarchiver migration for x-pack/test/functional/es_archives/dashboard/drilldowns (#134859) --- .../apps/dashboard_edit_panel.ts | 7 +- .../apps/dashboard/group3/drilldowns/index.ts | 7 +- .../apps/discover/value_suggestions.ts | 8 +- .../dashboard/drilldowns/data.json | 263 ---------------- .../dashboard/drilldowns/mappings.json | 205 ------------ .../dashboard_drilldowns/drilldowns.json | 297 ++++++++++++++++++ .../services/dashboard/drilldowns_manage.ts | 9 +- 7 files changed, 319 insertions(+), 477 deletions(-) delete mode 100644 x-pack/test/functional/es_archives/dashboard/drilldowns/data.json delete mode 100644 x-pack/test/functional/es_archives/dashboard/drilldowns/mappings.json create mode 100644 x-pack/test/functional/fixtures/kbn_archiver/dashboard_drilldowns/drilldowns.json diff --git a/x-pack/test/accessibility/apps/dashboard_edit_panel.ts b/x-pack/test/accessibility/apps/dashboard_edit_panel.ts index 20b72e142f5c7..56e854f448412 100644 --- a/x-pack/test/accessibility/apps/dashboard_edit_panel.ts +++ b/x-pack/test/accessibility/apps/dashboard_edit_panel.ts @@ -22,7 +22,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('Dashboard Edit Panel Accessibility', () => { before(async () => { - await esArchiver.load('x-pack/test/functional/es_archives/dashboard/drilldowns'); + await kibanaServer.savedObjects.cleanStandardList(); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/dashboard_drilldowns/drilldowns' + ); await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*' }); await PageObjects.common.navigateToApp('dashboard'); @@ -31,7 +34,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); after(async () => { - await esArchiver.unload('x-pack/test/functional/es_archives/dashboard/drilldowns'); + await kibanaServer.savedObjects.cleanStandardList(); }); it('can open menu', async () => { diff --git a/x-pack/test/functional/apps/dashboard/group3/drilldowns/index.ts b/x-pack/test/functional/apps/dashboard/group3/drilldowns/index.ts index eaa1189ab1007..a8af67665e845 100644 --- a/x-pack/test/functional/apps/dashboard/group3/drilldowns/index.ts +++ b/x-pack/test/functional/apps/dashboard/group3/drilldowns/index.ts @@ -16,12 +16,15 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); - await esArchiver.load('x-pack/test/functional/es_archives/dashboard/drilldowns'); + await kibanaServer.savedObjects.cleanStandardList(); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/dashboard_drilldowns/drilldowns' + ); await kibanaServer.uiSettings.replace({ defaultIndex: 'logstash-*' }); }); after(async () => { - await esArchiver.unload('x-pack/test/functional/es_archives/dashboard/drilldowns'); + await kibanaServer.savedObjects.cleanStandardList(); }); loadTestFile(require.resolve('./dashboard_to_dashboard_drilldown')); diff --git a/x-pack/test/functional/apps/discover/value_suggestions.ts b/x-pack/test/functional/apps/discover/value_suggestions.ts index 5afd3d53ca85b..bb5a9098bf901 100644 --- a/x-pack/test/functional/apps/discover/value_suggestions.ts +++ b/x-pack/test/functional/apps/discover/value_suggestions.ts @@ -27,16 +27,20 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('value suggestions', function describeIndexTests() { before(async function () { + await kibanaServer.savedObjects.cleanStandardList(); await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/logstash_functional'); - await esArchiver.load('x-pack/test/functional/es_archives/dashboard/drilldowns'); + + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/dashboard_drilldowns/drilldowns' + ); await kibanaServer.uiSettings.update({ 'doc_table:legacy': true, }); }); after(async () => { - await esArchiver.unload('x-pack/test/functional/es_archives/dashboard/drilldowns'); await kibanaServer.uiSettings.unset('doc_table:legacy'); + await kibanaServer.savedObjects.cleanStandardList(); }); describe('useTimeRange enabled', () => { diff --git a/x-pack/test/functional/es_archives/dashboard/drilldowns/data.json b/x-pack/test/functional/es_archives/dashboard/drilldowns/data.json deleted file mode 100644 index 220daaeb61d0e..0000000000000 --- a/x-pack/test/functional/es_archives/dashboard/drilldowns/data.json +++ /dev/null @@ -1,263 +0,0 @@ -{ - "type": "doc", - "value": { - "id": "space:default", - "index": ".kibana", - "source": { - "space": { - "description": "This is the default space!", - "name": "Default" - }, - "type": "space" - } - } -} - -{ - "type": "doc", - "value": { - "id": "visualization:Visualization☺漢字-DataTable", - "index": ".kibana", - "source": { - "type": "visualization", - "visualization": { - "description": "DataTable", - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" - }, - "title": "Visualization☺漢字 DataTable", - "uiStateJSON": "{}", - "version": 1, - "visState": "{\"title\":\"New Visualization\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"histogram\",\"schema\":\"bucket\",\"params\":{\"field\":\"bytes\",\"interval\":2000,\"extended_bounds\":{}}}],\"listeners\":{}}" - } - } - } -} - -{ - "type": "doc", - "value": { - "id": "visualization:Visualization☺-VerticalBarChart", - "index": ".kibana", - "source": { - "type": "visualization", - "visualization": { - "description": "VerticalBarChart", - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" - }, - "title": "Visualization☺ VerticalBarChart", - "uiStateJSON": "{}", - "version": 1, - "visState": "{\"title\":\"New Visualization\",\"type\":\"histogram\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"scale\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{}}}],\"listeners\":{}}" - } - } - } -} - -{ - "type": "doc", - "value": { - "id": "visualization:Visualization-TileMap", - "index": ".kibana", - "source": { - "type": "visualization", - "visualization": { - "description": "TileMap", - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" - }, - "title": "Visualization TileMap", - "uiStateJSON": "{}", - "version": 1, - "visState": "{\"title\":\"New Visualization\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatMaxZoom\":16,\"heatMinOpacity\":0.1,\"heatRadius\":25,\"heatBlur\":15,\"heatNormalizeData\":true,\"wms\":{\"enabled\":false,\"url\":\"https://basemap.nationalmap.gov/arcgis/services/USGSTopo/MapServer/WMSServer\",\"options\":{\"version\":\"1.3.0\",\"layers\":\"0\",\"format\":\"image/png\",\"transparent\":true,\"attribution\":\"Maps provided by USGS\",\"styles\":\"\"}}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.coordinates\",\"autoPrecision\":true,\"precision\":2}}],\"listeners\":{}}" - } - } - } -} - -{ - "type": "doc", - "value": { - "id": "index-pattern:logstash-*", - "index": ".kibana", - "source": { - "index-pattern": { - "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", - "timeFieldName": "@timestamp", - "title": "logstash-*" - }, - "type": "index-pattern" - } - } -} - -{ - "type": "doc", - "value": { - "id": "index-pattern:logstash*", - "index": ".kibana", - "source": { - "index-pattern": { - "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", - "timeFieldName": "@timestamp", - "title": "logstash*" - }, - "type": "index-pattern" - } - } -} - -{ - "type": "doc", - "value": { - "id": "visualization:Visualization-PieChart", - "index": ".kibana", - "source": { - "type": "visualization", - "visualization": { - "description": "PieChart", - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" - }, - "title": "Visualization PieChart", - "uiStateJSON": "{}", - "version": 1, - "visState": "{\"title\":\"New Visualization\",\"type\":\"pie\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"isDonut\":false},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"memory\",\"interval\":40000,\"extended_bounds\":{}}}],\"listeners\":{}}" - } - } - } -} - -{ - "type": "doc", - "value": { - "id": "visualization:Visualization漢字-LineChart", - "index": ".kibana", - "source": { - "type": "visualization", - "visualization": { - "description": "LineChart", - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" - }, - "title": "Visualization漢字 LineChart", - "uiStateJSON": "{}", - "version": 1, - "visState": "{\"title\":\"New Visualization\",\"type\":\"line\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"showCircles\":true,\"smoothLines\":false,\"interpolate\":\"linear\",\"scale\":\"linear\",\"drawLinesBetweenPoints\":true,\"radiusRatio\":9,\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"extension.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"row\":false}}],\"listeners\":{}}" - } - } - } -} - -{ - "type": "doc", - "value": { - "id": "visualization:Visualization-MetricChart", - "index": ".kibana", - "source": { - "type": "visualization", - "visualization": { - "description": "MetricChart", - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" - }, - "title": "Visualization MetricChart", - "uiStateJSON": "{}", - "version": 1, - "visState": "{\"title\":\"New Visualization\",\"type\":\"metric\",\"params\":{\"handleNoResults\":true,\"fontSize\":60},\"aggs\":[{\"id\":\"1\",\"type\":\"percentile_ranks\",\"schema\":\"metric\",\"params\":{\"field\":\"memory\",\"values\":[99]}}],\"listeners\":{}}" - } - } - } -} - -{ - "type": "doc", - "value": { - "id": "visualization:Visualization漢字-AreaChart", - "index": ".kibana", - "source": { - "type": "visualization", - "visualization": { - "description": "AreaChart", - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"index\":\"logstash-*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" - }, - "title": "Visualization漢字 AreaChart", - "uiStateJSON": "{}", - "version": 1, - "visState": "{\"title\":\"New Visualization\",\"type\":\"area\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"smoothLines\":false,\"scale\":\"linear\",\"interpolate\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{}}}],\"listeners\":{}}" - } - } - } -} - -{ - "type": "doc", - "value": { - "id": "dashboard:24f3f950-69d9-11ea-a14d-e341629a29e6", - "index": ".kibana", - "source": { - "dashboard": { - "description": "", - "hits": 0, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" - }, - "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", - "panelsJSON": "[{\"version\":\"7.7.0\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"e637d5f0-a7e6-4635-81ed-39f2b1aac6f4\"},\"panelIndex\":\"e637d5f0-a7e6-4635-81ed-39f2b1aac6f4\",\"embeddableConfig\":{\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"ffd3e4dc-cb1a-419f-afeb-03e8c7742bbf\",\"triggers\":[\"VALUE_CLICK_TRIGGER\",\"SELECT_RANGE_TRIGGER\"],\"action\":{\"name\":\"Go to pie chart dashboard\",\"config\":{\"dashboardId\":\"41e77910-69d9-11ea-a14d-e341629a29e6\",\"useCurrentDateRange\":true,\"useCurrentFilters\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}}},\"panelRefName\":\"panel_0\"}]", - "refreshInterval": { "pause": true, "value": 0 }, - "timeFrom": "2015-09-19T17:34:10.297Z", - "timeRestore": true, - "timeTo": "2015-09-23T00:09:17.180Z", - "title": "Dashboard With Area Chart", - "version": 1 - }, - "references": [ - { - "id": "Visualization漢字-AreaChart", - "name": "panel_0", - "type": "visualization" - } - ], - "type": "dashboard", - "updated_at": "2020-03-19T11:59:53.701Z" - } - } -} - -{ - "type": "doc", - "value": { - "id": "dashboard:41e77910-69d9-11ea-a14d-e341629a29e6", - "index": ".kibana", - "source": { - "dashboard": { - "description": "", - "hits": 0, - "kibanaSavedObjectMeta": { - "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" - }, - "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", - "panelsJSON": "[{\"version\":\"7.7.0\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"8c5df6b2-0cc9-4887-a2d9-6a9a192f3407\"},\"panelIndex\":\"8c5df6b2-0cc9-4887-a2d9-6a9a192f3407\",\"embeddableConfig\":{},\"panelRefName\":\"panel_0\"}]", - "refreshInterval": { "pause": true, "value": 0 }, - "timeFrom": "2015-09-19T17:34:10.297Z", - "timeRestore": true, - "timeTo": "2015-09-23T00:09:17.180Z", - "title": "Dashboard with Pie Chart", - "version": 1 - }, - "references": [ - { - "id": "Visualization-PieChart", - "name": "panel_0", - "type": "visualization" - } - ], - "type": "dashboard", - "updated_at": "2020-03-19T11:59:53.701Z" - } - } -} - - diff --git a/x-pack/test/functional/es_archives/dashboard/drilldowns/mappings.json b/x-pack/test/functional/es_archives/dashboard/drilldowns/mappings.json deleted file mode 100644 index 8382a490ac230..0000000000000 --- a/x-pack/test/functional/es_archives/dashboard/drilldowns/mappings.json +++ /dev/null @@ -1,205 +0,0 @@ -{ - "type": "index", - "value": { - "aliases": { - ".kibana": {} - }, - "index": ".kibana_1", - "mappings": { - "properties": { - "config": { - "dynamic": "true", - "properties": { - "buildNum": { - "type": "keyword" - } - } - }, - "dashboard": { - "dynamic": "strict", - "properties": { - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "optionsJSON": { - "type": "text" - }, - "panelsJSON": { - "type": "text" - }, - "refreshInterval": { - "properties": { - "display": { - "type": "keyword" - }, - "pause": { - "type": "boolean" - }, - "section": { - "type": "integer" - }, - "value": { - "type": "integer" - } - } - }, - "timeFrom": { - "type": "keyword" - }, - "timeRestore": { - "type": "boolean" - }, - "timeTo": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "index-pattern": { - "dynamic": "strict", - "properties": { - "fieldFormatMap": { - "type": "text" - }, - "fields": { - "type": "text" - }, - "intervalName": { - "type": "keyword" - }, - "notExpandable": { - "type": "boolean" - }, - "sourceFilters": { - "type": "text" - }, - "timeFieldName": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "search": { - "dynamic": "strict", - "properties": { - "columns": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "hits": { - "type": "integer" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "sort": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "version": { - "type": "integer" - } - } - }, - "server": { - "dynamic": "strict", - "properties": { - "uuid": { - "type": "keyword" - } - } - }, - "type": { - "type": "keyword" - }, - "url": { - "dynamic": "strict", - "properties": { - "accessCount": { - "type": "long" - }, - "accessDate": { - "type": "date" - }, - "createDate": { - "type": "date" - }, - "url": { - "fields": { - "keyword": { - "ignore_above": 2048, - "type": "keyword" - } - }, - "type": "text" - } - } - }, - "visualization": { - "dynamic": "strict", - "properties": { - "description": { - "type": "text" - }, - "kibanaSavedObjectMeta": { - "properties": { - "searchSourceJSON": { - "type": "text" - } - } - }, - "savedSearchId": { - "type": "keyword" - }, - "title": { - "type": "text" - }, - "uiStateJSON": { - "type": "text" - }, - "version": { - "type": "integer" - }, - "visState": { - "type": "text" - } - } - } - } - }, - "settings": { - "index": { - "number_of_replicas": "1", - "number_of_shards": "1" - } - } - } -} diff --git a/x-pack/test/functional/fixtures/kbn_archiver/dashboard_drilldowns/drilldowns.json b/x-pack/test/functional/fixtures/kbn_archiver/dashboard_drilldowns/drilldowns.json new file mode 100644 index 0000000000000..03dfed507d469 --- /dev/null +++ b/x-pack/test/functional/fixtures/kbn_archiver/dashboard_drilldowns/drilldowns.json @@ -0,0 +1,297 @@ +{ + "attributes": { + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "timeFieldName": "@timestamp", + "title": "logstash-*" + }, + "coreMigrationVersion": "8.4.0", + "id": "logstash-*", + "migrationVersion": { + "index-pattern": "8.0.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzE2LDJd" +} + +{ + "attributes": { + "description": "AreaChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization漢字 AreaChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"area\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"smoothLines\":false,\"scale\":\"linear\",\"interpolate\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{},\"legendSize\":\"auto\"},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "8.4.0", + "id": "Visualization漢字-AreaChart", + "migrationVersion": { + "visualization": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzIxLDJd" +} + +{ + "attributes": { + "description": "PieChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization PieChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"pie\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"isDonut\":false,\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"distinctColors\":true,\"legendDisplay\":\"show\",\"legendSize\":\"auto\"},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"memory\",\"interval\":40000,\"extended_bounds\":{}}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "8.4.0", + "id": "Visualization-PieChart", + "migrationVersion": { + "visualization": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzE4LDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.7.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"8c5df6b2-0cc9-4887-a2d9-6a9a192f3407\"},\"panelIndex\":\"8c5df6b2-0cc9-4887-a2d9-6a9a192f3407\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_8c5df6b2-0cc9-4887-a2d9-6a9a192f3407\"}]", + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "2015-09-19T17:34:10.297Z", + "timeRestore": true, + "timeTo": "2015-09-23T00:09:17.180Z", + "title": "Dashboard with Pie Chart", + "version": 1 + }, + "coreMigrationVersion": "8.4.0", + "id": "41e77910-69d9-11ea-a14d-e341629a29e6", + "migrationVersion": { + "dashboard": "8.3.0" + }, + "references": [ + { + "id": "Visualization-PieChart", + "name": "8c5df6b2-0cc9-4887-a2d9-6a9a192f3407:panel_8c5df6b2-0cc9-4887-a2d9-6a9a192f3407", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-03-19T11:59:53.701Z", + "version": "WzIzLDJd" +} + +{ + "attributes": { + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}" + }, + "optionsJSON": "{\"useMargins\":true,\"hidePanelTitles\":false}", + "panelsJSON": "[{\"version\":\"7.7.0\",\"type\":\"visualization\",\"gridData\":{\"w\":24,\"h\":15,\"x\":0,\"y\":0,\"i\":\"e637d5f0-a7e6-4635-81ed-39f2b1aac6f4\"},\"panelIndex\":\"e637d5f0-a7e6-4635-81ed-39f2b1aac6f4\",\"embeddableConfig\":{\"enhancements\":{\"dynamicActions\":{\"events\":[{\"eventId\":\"ffd3e4dc-cb1a-419f-afeb-03e8c7742bbf\",\"triggers\":[\"VALUE_CLICK_TRIGGER\",\"SELECT_RANGE_TRIGGER\"],\"action\":{\"name\":\"Go to pie chart dashboard\",\"config\":{\"useCurrentDateRange\":true,\"useCurrentFilters\":true},\"factoryId\":\"DASHBOARD_TO_DASHBOARD_DRILLDOWN\"}}]}}},\"panelRefName\":\"panel_e637d5f0-a7e6-4635-81ed-39f2b1aac6f4\"}]", + "refreshInterval": { + "pause": true, + "value": 0 + }, + "timeFrom": "2015-09-19T17:34:10.297Z", + "timeRestore": true, + "timeTo": "2015-09-23T00:09:17.180Z", + "title": "Dashboard With Area Chart", + "version": 1 + }, + "coreMigrationVersion": "8.4.0", + "id": "24f3f950-69d9-11ea-a14d-e341629a29e6", + "migrationVersion": { + "dashboard": "8.3.0" + }, + "references": [ + { + "id": "Visualization漢字-AreaChart", + "name": "e637d5f0-a7e6-4635-81ed-39f2b1aac6f4:panel_e637d5f0-a7e6-4635-81ed-39f2b1aac6f4", + "type": "visualization" + }, + { + "id": "41e77910-69d9-11ea-a14d-e341629a29e6", + "name": "e637d5f0-a7e6-4635-81ed-39f2b1aac6f4:drilldown:DASHBOARD_TO_DASHBOARD_DRILLDOWN:ffd3e4dc-cb1a-419f-afeb-03e8c7742bbf:dashboardId", + "type": "dashboard" + } + ], + "type": "dashboard", + "updated_at": "2020-03-19T11:59:53.701Z", + "version": "WzIyLDJd" +} + +{ + "attributes": { + "description": "MetricChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization MetricChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"metric\",\"params\":{\"handleNoResults\":true,\"fontSize\":60},\"aggs\":[{\"id\":\"1\",\"type\":\"percentile_ranks\",\"schema\":\"metric\",\"params\":{\"field\":\"memory\",\"values\":[99]}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "8.4.0", + "id": "Visualization-MetricChart", + "migrationVersion": { + "visualization": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzIwLDJd" +} + +{ + "attributes": { + "description": "TileMap", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization TileMap", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatMaxZoom\":16,\"heatMinOpacity\":0.1,\"heatRadius\":25,\"heatBlur\":15,\"heatNormalizeData\":true,\"wms\":{\"enabled\":false,\"url\":\"https://basemap.nationalmap.gov/arcgis/services/USGSTopo/MapServer/WMSServer\",\"options\":{\"version\":\"1.3.0\",\"layers\":\"0\",\"format\":\"image/png\",\"transparent\":true,\"attribution\":\"Maps provided by USGS\",\"styles\":\"\"}}},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"geo.coordinates\",\"autoPrecision\":true,\"precision\":2}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "8.4.0", + "id": "Visualization-TileMap", + "migrationVersion": { + "visualization": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzE1LDJd" +} + +{ + "attributes": { + "description": "VerticalBarChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization☺ VerticalBarChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"histogram\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"scale\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{},\"legendSize\":\"auto\"},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1,\"extended_bounds\":{}}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "8.4.0", + "id": "Visualization☺-VerticalBarChart", + "migrationVersion": { + "visualization": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzE0LDJd" +} + +{ + "attributes": { + "description": "DataTable", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization☺漢字 DataTable", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"showToolbar\":true},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"histogram\",\"schema\":\"bucket\",\"params\":{\"field\":\"bytes\",\"interval\":2000,\"extended_bounds\":{}}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "8.4.0", + "id": "Visualization☺漢字-DataTable", + "migrationVersion": { + "visualization": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzEzLDJd" +} + +{ + "attributes": { + "description": "LineChart", + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}" + }, + "title": "Visualization漢字 LineChart", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"title\":\"New Visualization\",\"type\":\"line\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"showCircles\":true,\"smoothLines\":false,\"interpolate\":\"linear\",\"scale\":\"linear\",\"drawLinesBetweenPoints\":true,\"radiusRatio\":9,\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{},\"row\":false,\"legendSize\":\"auto\"},\"aggs\":[{\"id\":\"1\",\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"extension.raw\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}],\"listeners\":{}}" + }, + "coreMigrationVersion": "8.4.0", + "id": "Visualization漢字-LineChart", + "migrationVersion": { + "visualization": "8.3.0" + }, + "references": [ + { + "id": "logstash-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "version": "WzE5LDJd" +} + +{ + "attributes": { + "fields": "[{\"name\":\"referer\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"agent\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"utc_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.char\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"machine.ram\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"links\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"id\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"phpmemory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"ip\",\"type\":\"ip\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"headings\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"request\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"memory\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@message.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"xss\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"extension.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@tags\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"spaces.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"@message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"bytes\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"response\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"doc_values\":false}]", + "timeFieldName": "@timestamp", + "title": "logstash*" + }, + "coreMigrationVersion": "8.4.0", + "id": "logstash*", + "migrationVersion": { + "index-pattern": "8.0.0" + }, + "references": [], + "type": "index-pattern", + "version": "WzE3LDJd" +} \ No newline at end of file diff --git a/x-pack/test/functional/services/dashboard/drilldowns_manage.ts b/x-pack/test/functional/services/dashboard/drilldowns_manage.ts index 10634ab371345..440c29bf2276e 100644 --- a/x-pack/test/functional/services/dashboard/drilldowns_manage.ts +++ b/x-pack/test/functional/services/dashboard/drilldowns_manage.ts @@ -18,21 +18,24 @@ export function DashboardDrilldownsManageProvider({ getService }: FtrProviderCon const testSubjects = getService('testSubjects'); const flyout = getService('flyout'); const comboBox = getService('comboBox'); - const esArchiver = getService('esArchiver'); const find = getService('find'); const browser = getService('browser'); + const kibanaServer = getService('kibanaServer'); return new (class DashboardDrilldownsManage { readonly DASHBOARD_WITH_PIE_CHART_NAME = 'Dashboard with Pie Chart'; readonly DASHBOARD_WITH_AREA_CHART_NAME = 'Dashboard With Area Chart'; async loadData() { log.debug('loadData'); - await esArchiver.load('x-pack/test/functional/es_archives/dashboard/drilldowns'); + await kibanaServer.savedObjects.cleanStandardList(); + await kibanaServer.importExport.load( + 'x-pack/test/functional/fixtures/kbn_archiver/dashboard_drilldowns/drilldowns' + ); } async unloadData() { log.debug('unloadData'); - await esArchiver.unload('x-pack/test/functional/es_archives/dashboard/drilldowns'); + await kibanaServer.savedObjects.cleanStandardList(); } async expectsCreateDrilldownFlyoutOpen() { From 2010a56a350c8af36d3594904bb41ef024afe29e Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Wed, 22 Jun 2022 08:54:37 -0500 Subject: [PATCH 32/61] [ci] Fix ci:build-* labels (#134862) * debugging * source utils * remove debugging --- .buildkite/scripts/build_kibana.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.buildkite/scripts/build_kibana.sh b/.buildkite/scripts/build_kibana.sh index d450e988799bc..eb7adae732d79 100755 --- a/.buildkite/scripts/build_kibana.sh +++ b/.buildkite/scripts/build_kibana.sh @@ -2,6 +2,8 @@ set -euo pipefail +source .buildkite/scripts/common/util.sh + export KBN_NP_PLUGINS_BUILT=true echo "--- Build Kibana Distribution" From f65685b2ac4ba30c568f7d8de3f7cff49395b33b Mon Sep 17 00:00:00 2001 From: Jan Monschke Date: Wed, 22 Jun 2022 16:15:08 +0200 Subject: [PATCH 33/61] [SecuritySolution] Migrate (some) resolver tests to `testing-library` (#134643) * chore: remove unused file * test: migrate to testing-library Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../resolver/test_utilities/react_wrapper.ts | 18 -------- .../view/panels/descriptive_name.test.tsx | 44 ++++++++++--------- .../view/panels/use_formatted_date.test.tsx | 31 +++++-------- 3 files changed, 35 insertions(+), 58 deletions(-) delete mode 100644 x-pack/plugins/security_solution/public/resolver/test_utilities/react_wrapper.ts diff --git a/x-pack/plugins/security_solution/public/resolver/test_utilities/react_wrapper.ts b/x-pack/plugins/security_solution/public/resolver/test_utilities/react_wrapper.ts deleted file mode 100644 index 79205a0420505..0000000000000 --- a/x-pack/plugins/security_solution/public/resolver/test_utilities/react_wrapper.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ReactWrapper } from 'enzyme'; - -/** - * Return a collection of attribute 'entries'. - * The 'entries' are attributeName-attributeValue tuples. - */ -export function attributeEntries(wrapper: ReactWrapper): Array<[string, string]> { - return Array.prototype.slice - .call(wrapper.getDOMNode().attributes) - .map(({ name, value }) => [name, value]); -} diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/descriptive_name.test.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/descriptive_name.test.tsx index 75698bf726642..cef8aa718985f 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/descriptive_name.test.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/descriptive_name.test.tsx @@ -6,46 +6,48 @@ */ import React from 'react'; +import { render, screen } from '@testing-library/react'; +import { I18nProvider } from '@kbn/i18n-react'; + import { EndpointDocGenerator } from '../../../../common/endpoint/generate_data'; import { DescriptiveName } from './descriptive_name'; import { SafeResolverEvent } from '../../../../common/endpoint/types'; -import { mount, ReactWrapper } from 'enzyme'; -import { I18nProvider } from '@kbn/i18n-react'; describe('DescriptiveName', () => { - let generator: EndpointDocGenerator; - let wrapper: (event: SafeResolverEvent) => ReactWrapper; - beforeEach(() => { - generator = new EndpointDocGenerator('seed'); - wrapper = (event: SafeResolverEvent) => - mount( - - - - ); - }); + const generator = new EndpointDocGenerator('seed'); + + function renderEvent(event: SafeResolverEvent) { + render( + + + + ); + } + it('returns the right name for a registry event', () => { const extensions = { registry: { key: `HKLM/Windows/Software/abc` } }; - const event = generator.generateEvent({ eventCategory: 'registry', extensions }); - expect(wrapper(event).text()).toEqual(`HKLM/Windows/Software/abc`); + renderEvent(generator.generateEvent({ eventCategory: 'registry', extensions })); + expect(screen.queryByText('HKLM/Windows/Software/abc')).toBeInTheDocument(); }); it('returns the right name for a network event', () => { const randomIP = `${generator.randomIP()}`; const extensions = { network: { direction: 'outbound', forwarded_ip: randomIP } }; - const event = generator.generateEvent({ eventCategory: 'network', extensions }); - expect(wrapper(event).text()).toEqual(`outbound ${randomIP}`); + renderEvent(generator.generateEvent({ eventCategory: 'network', extensions })); + expect(screen.queryByText(`outbound ${randomIP}`)).toBeInTheDocument(); }); it('returns the right name for a file event', () => { const extensions = { file: { path: 'C:\\My Documents\\business\\January\\processName' } }; - const event = generator.generateEvent({ eventCategory: 'file', extensions }); - expect(wrapper(event).text()).toEqual('C:\\My Documents\\business\\January\\processName'); + renderEvent(generator.generateEvent({ eventCategory: 'file', extensions })); + expect( + screen.queryByText('C:\\My Documents\\business\\January\\processName') + ).toBeInTheDocument(); }); it('returns the right name for a dns event', () => { const extensions = { dns: { question: { name: `${generator.randomIP()}` } } }; - const event = generator.generateEvent({ eventCategory: 'dns', extensions }); - expect(wrapper(event).text()).toEqual(extensions.dns.question.name); + renderEvent(generator.generateEvent({ eventCategory: 'dns', extensions })); + expect(screen.queryByText(extensions.dns.question.name)).toBeInTheDocument(); }); }); diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/use_formatted_date.test.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/use_formatted_date.test.tsx index 1c3f1948edc4d..b388e31444a25 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/use_formatted_date.test.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/use_formatted_date.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { mount } from 'enzyme'; +import { render, screen } from '@testing-library/react'; import React from 'react'; import { useFormattedDate } from './use_formatted_date'; @@ -16,23 +16,11 @@ import { uiSetting } from '../../mocks/ui_setting'; describe(`useFormattedDate, when the "dateFormat" UI setting is "${uiSetting( 'dateFormat' )}" and the "dateFormat:tz" setting is "${uiSetting('dateFormat:tz')}"`, () => { - let formattedDate: (date: ConstructorParameters[0] | Date | undefined) => string; - - beforeEach(async () => { - const mockCoreStart = coreMock.createStart(); - mockCoreStart.uiSettings.get.mockImplementation(uiSetting); - - function Test({ date }: { date: ConstructorParameters[0] | Date | undefined }) { - return <>{useFormattedDate(date)}; - } - - formattedDate = (date: ConstructorParameters[0] | Date | undefined): string => - mount( - - - - ).text(); - }); + function Test({ date }: { date: ConstructorParameters[0] | Date | undefined }) { + return {useFormattedDate(date)}; + } + const mockCoreStart = coreMock.createStart(); + mockCoreStart.uiSettings.get.mockImplementation(uiSetting); it.each([ ['randomString', 'an invalid string', 'Invalid Date'], @@ -51,6 +39,11 @@ describe(`useFormattedDate, when the "dateFormat" UI setting is "${uiSetting( ], [new Date(1600863932316), 'a defined Date object', 'Sep 23, 2020 @ 08:25:32.316'], ])('when the provided date is %p (%s) it should return %p', (value, _explanation, expected) => { - expect(formattedDate(value)).toBe(expected); + render( + + + + ); + expect(screen.queryByTestId('useFormattedDateTest')?.textContent).toBe(expected); }); }); From c432a22d67afab1c8a8bf5b8133c4aac1e48e162 Mon Sep 17 00:00:00 2001 From: "Christiane (Tina) Heiligers" Date: Wed, 22 Jun 2022 08:25:12 -0700 Subject: [PATCH 34/61] Move server-side config service to packages (#134794) --- package.json | 4 + packages/BUILD.bazel | 2 + .../core-base-server-internal/src}/errors.ts | 0 .../core-base-server-internal/src/index.ts | 1 + .../core-config-server-internal/BUILD.bazel | 103 ++++++++++++++++++ .../core-config-server-internal/README.md | 3 + .../jest.config.js | 13 +++ .../core-config-server-internal/package.json | 7 ++ .../deprecation/core_deprecations.test.ts | 0 .../src}/deprecation/core_deprecations.ts | 2 +- .../src}/deprecation/index.ts | 0 .../src}/ensure_valid_configuration.test.ts | 2 +- .../src}/ensure_valid_configuration.ts | 2 +- .../core-config-server-internal/src}/index.ts | 1 + .../src}/test_utils.ts | 0 .../core-config-server-internal/tsconfig.json | 17 +++ src/core/server/bootstrap.ts | 2 +- .../elasticsearch_config.test.ts | 2 +- src/core/server/server.test.mocks.ts | 2 +- src/core/server/server.ts | 5 +- src/core/server/test_utils.ts | 5 +- yarn.lock | 16 +++ 22 files changed, 181 insertions(+), 8 deletions(-) rename {src/core/server => packages/core/base/core-base-server-internal/src}/errors.ts (100%) create mode 100644 packages/core/config/core-config-server-internal/BUILD.bazel create mode 100644 packages/core/config/core-config-server-internal/README.md create mode 100644 packages/core/config/core-config-server-internal/jest.config.js create mode 100644 packages/core/config/core-config-server-internal/package.json rename {src/core/server/config => packages/core/config/core-config-server-internal/src}/deprecation/core_deprecations.test.ts (100%) rename {src/core/server/config => packages/core/config/core-config-server-internal/src}/deprecation/core_deprecations.ts (96%) rename {src/core/server/config => packages/core/config/core-config-server-internal/src}/deprecation/index.ts (100%) rename {src/core/server/config => packages/core/config/core-config-server-internal/src}/ensure_valid_configuration.test.ts (98%) rename {src/core/server/config => packages/core/config/core-config-server-internal/src}/ensure_valid_configuration.ts (95%) rename {src/core/server/config => packages/core/config/core-config-server-internal/src}/index.ts (85%) rename {src/core/server/config => packages/core/config/core-config-server-internal/src}/test_utils.ts (100%) create mode 100644 packages/core/config/core-config-server-internal/tsconfig.json diff --git a/package.json b/package.json index fa5cb47316fd3..d0446690c06a3 100644 --- a/package.json +++ b/package.json @@ -158,6 +158,8 @@ "@kbn/core-base-common-internal": "link:bazel-bin/packages/core/base/core-base-common-internal", "@kbn/core-base-server-internal": "link:bazel-bin/packages/core/base/core-base-server-internal", "@kbn/core-base-server-mocks": "link:bazel-bin/packages/core/base/core-base-server-mocks", + "@kbn/core-config-server-internal": "link:bazel-bin/packages/core/config/core-config-server-internal", + "@kbn/core-config-server-mocks": "link:bazel-bin/packages/core/config/core-config-server-mocks", "@kbn/core-doc-links-browser": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser", "@kbn/core-doc-links-browser-internal": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser-internal", "@kbn/core-doc-links-browser-mocks": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser-mocks", @@ -688,6 +690,8 @@ "@types/kbn__core-base-server-internal": "link:bazel-bin/packages/core/base/core-base-server-internal/npm_module_types", "@types/kbn__core-base-server-mocks": "link:bazel-bin/packages/core/base/core-base-server-mocks/npm_module_types", "@types/kbn__core-common-internal-base": "link:bazel-bin/packages/core/common/internal-base/npm_module_types", + "@types/kbn__core-config-server-internal": "link:bazel-bin/packages/core/config/core-config-server-internal/npm_module_types", + "@types/kbn__core-config-server-mocks": "link:bazel-bin/packages/core/config/core-config-server-mocks/npm_module_types", "@types/kbn__core-doc-links-browser": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser/npm_module_types", "@types/kbn__core-doc-links-browser-internal": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser-internal/npm_module_types", "@types/kbn__core-doc-links-browser-mocks": "link:bazel-bin/packages/core/doc-links/core-doc-links-browser-mocks/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 8701bfcd9a6bf..a0e952de7f874 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -26,6 +26,7 @@ filegroup( "//packages/core/base/core-base-common:build", "//packages/core/base/core-base-server-internal:build", "//packages/core/base/core-base-server-mocks:build", + "//packages/core/config/core-config-server-internal:build", "//packages/core/doc-links/core-doc-links-browser-internal:build", "//packages/core/doc-links/core-doc-links-browser-mocks:build", "//packages/core/doc-links/core-doc-links-browser:build", @@ -181,6 +182,7 @@ filegroup( "//packages/core/base/core-base-common:build_types", "//packages/core/base/core-base-server-internal:build_types", "//packages/core/base/core-base-server-mocks:build_types", + "//packages/core/config/core-config-server-internal:build_types", "//packages/core/doc-links/core-doc-links-browser-internal:build_types", "//packages/core/doc-links/core-doc-links-browser-mocks:build_types", "//packages/core/doc-links/core-doc-links-browser:build_types", diff --git a/src/core/server/errors.ts b/packages/core/base/core-base-server-internal/src/errors.ts similarity index 100% rename from src/core/server/errors.ts rename to packages/core/base/core-base-server-internal/src/errors.ts diff --git a/packages/core/base/core-base-server-internal/src/index.ts b/packages/core/base/core-base-server-internal/src/index.ts index 2cfa86145ce7b..ddf7a27886484 100644 --- a/packages/core/base/core-base-server-internal/src/index.ts +++ b/packages/core/base/core-base-server-internal/src/index.ts @@ -8,3 +8,4 @@ export type { CoreContext } from './core_context'; export type { CoreService, ServiceConfigDescriptor } from './services'; +export { CriticalError } from './errors'; diff --git a/packages/core/config/core-config-server-internal/BUILD.bazel b/packages/core/config/core-config-server-internal/BUILD.bazel new file mode 100644 index 0000000000000..e05a2c280a063 --- /dev/null +++ b/packages/core/config/core-config-server-internal/BUILD.bazel @@ -0,0 +1,103 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "core-config-server-internal" +PKG_REQUIRE_NAME = "@kbn/core-config-server-internal" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +RUNTIME_DEPS = [ + "//packages/elastic-safer-lodash-set", + "//packages/kbn-config", + "//packages/core/base/core-base-server-internal", + "//packages/kbn-config-mocks", +] + +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "//packages/elastic-safer-lodash-set:npm_module_types", + "//packages/kbn-config:npm_module_types", + "//packages/kbn-config-mocks:npm_module_types", + "//packages/core/base/core-base-server-internal:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/core/config/core-config-server-internal/README.md b/packages/core/config/core-config-server-internal/README.md new file mode 100644 index 0000000000000..157f5cc4727b6 --- /dev/null +++ b/packages/core/config/core-config-server-internal/README.md @@ -0,0 +1,3 @@ +# @kbn/core-config-server-internal + +This package contains the internal types and implementation for Core's server-side configuration. diff --git a/packages/core/config/core-config-server-internal/jest.config.js b/packages/core/config/core-config-server-internal/jest.config.js new file mode 100644 index 0000000000000..2ec41b98be493 --- /dev/null +++ b/packages/core/config/core-config-server-internal/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/core/config/core-config-server-internal'], +}; diff --git a/packages/core/config/core-config-server-internal/package.json b/packages/core/config/core-config-server-internal/package.json new file mode 100644 index 0000000000000..92cdc3fe27d1f --- /dev/null +++ b/packages/core/config/core-config-server-internal/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/core-config-server-internal", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/src/core/server/config/deprecation/core_deprecations.test.ts b/packages/core/config/core-config-server-internal/src/deprecation/core_deprecations.test.ts similarity index 100% rename from src/core/server/config/deprecation/core_deprecations.test.ts rename to packages/core/config/core-config-server-internal/src/deprecation/core_deprecations.test.ts diff --git a/src/core/server/config/deprecation/core_deprecations.ts b/packages/core/config/core-config-server-internal/src/deprecation/core_deprecations.ts similarity index 96% rename from src/core/server/config/deprecation/core_deprecations.ts rename to packages/core/config/core-config-server-internal/src/deprecation/core_deprecations.ts index 2c30ab490db65..237ba1f5e8493 100644 --- a/src/core/server/config/deprecation/core_deprecations.ts +++ b/packages/core/config/core-config-server-internal/src/deprecation/core_deprecations.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ConfigDeprecationProvider, ConfigDeprecation } from '@kbn/config'; +import type { ConfigDeprecationProvider, ConfigDeprecation } from '@kbn/config'; const rewriteBasePathDeprecation: ConfigDeprecation = (settings, fromPath, addDeprecation) => { if (settings.server?.basePath && !settings.server?.rewriteBasePath) { diff --git a/src/core/server/config/deprecation/index.ts b/packages/core/config/core-config-server-internal/src/deprecation/index.ts similarity index 100% rename from src/core/server/config/deprecation/index.ts rename to packages/core/config/core-config-server-internal/src/deprecation/index.ts diff --git a/src/core/server/config/ensure_valid_configuration.test.ts b/packages/core/config/core-config-server-internal/src/ensure_valid_configuration.test.ts similarity index 98% rename from src/core/server/config/ensure_valid_configuration.test.ts rename to packages/core/config/core-config-server-internal/src/ensure_valid_configuration.test.ts index 9161ffefaf5d3..c2ed9523c5050 100644 --- a/src/core/server/config/ensure_valid_configuration.test.ts +++ b/packages/core/config/core-config-server-internal/src/ensure_valid_configuration.test.ts @@ -8,7 +8,7 @@ import { configServiceMock } from '@kbn/config-mocks'; import { ensureValidConfiguration } from './ensure_valid_configuration'; -import { CriticalError } from '../errors'; +import { CriticalError } from '@kbn/core-base-server-internal'; describe('ensureValidConfiguration', () => { let configService: ReturnType; diff --git a/src/core/server/config/ensure_valid_configuration.ts b/packages/core/config/core-config-server-internal/src/ensure_valid_configuration.ts similarity index 95% rename from src/core/server/config/ensure_valid_configuration.ts rename to packages/core/config/core-config-server-internal/src/ensure_valid_configuration.ts index 040cb23e07988..ddf4573b8de22 100644 --- a/src/core/server/config/ensure_valid_configuration.ts +++ b/packages/core/config/core-config-server-internal/src/ensure_valid_configuration.ts @@ -7,7 +7,7 @@ */ import { ConfigService, ConfigValidateParameters } from '@kbn/config'; -import { CriticalError } from '../errors'; +import { CriticalError } from '@kbn/core-base-server-internal'; const ignoredPaths = ['dev.', 'elastic.apm.']; diff --git a/src/core/server/config/index.ts b/packages/core/config/core-config-server-internal/src/index.ts similarity index 85% rename from src/core/server/config/index.ts rename to packages/core/config/core-config-server-internal/src/index.ts index a873c593660af..cefac583eb249 100644 --- a/src/core/server/config/index.ts +++ b/packages/core/config/core-config-server-internal/src/index.ts @@ -8,3 +8,4 @@ export { coreDeprecationProvider } from './deprecation'; export { ensureValidConfiguration } from './ensure_valid_configuration'; +export { getDeprecationsFor, getDeprecationsForGlobalSettings } from './test_utils'; diff --git a/src/core/server/config/test_utils.ts b/packages/core/config/core-config-server-internal/src/test_utils.ts similarity index 100% rename from src/core/server/config/test_utils.ts rename to packages/core/config/core-config-server-internal/src/test_utils.ts diff --git a/packages/core/config/core-config-server-internal/tsconfig.json b/packages/core/config/core-config-server-internal/tsconfig.json new file mode 100644 index 0000000000000..97a3644c3c703 --- /dev/null +++ b/packages/core/config/core-config-server-internal/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/src/core/server/bootstrap.ts b/src/core/server/bootstrap.ts index fd08d12e60416..851b698dbcc75 100644 --- a/src/core/server/bootstrap.ts +++ b/src/core/server/bootstrap.ts @@ -8,8 +8,8 @@ import chalk from 'chalk'; import { CliArgs, Env, RawConfigService } from '@kbn/config'; +import { CriticalError } from '@kbn/core-base-server-internal'; import { Root } from './root'; -import { CriticalError } from './errors'; interface BootstrapArgs { configs: string[]; diff --git a/src/core/server/elasticsearch/elasticsearch_config.test.ts b/src/core/server/elasticsearch/elasticsearch_config.test.ts index 47453f1a80610..98fd88410adaf 100644 --- a/src/core/server/elasticsearch/elasticsearch_config.test.ts +++ b/src/core/server/elasticsearch/elasticsearch_config.test.ts @@ -13,7 +13,7 @@ import { } from './elasticsearch_config.test.mocks'; import { ElasticsearchConfig, config } from './elasticsearch_config'; -import { getDeprecationsFor } from '../config/test_utils'; +import { getDeprecationsFor } from '@kbn/core-config-server-internal'; const CONFIG_PATH = 'elasticsearch'; diff --git a/src/core/server/server.test.mocks.ts b/src/core/server/server.test.mocks.ts index ebb921a81cbba..f7eb54fac6dfc 100644 --- a/src/core/server/server.test.mocks.ts +++ b/src/core/server/server.test.mocks.ts @@ -59,7 +59,7 @@ jest.doMock('./ui_settings/ui_settings_service', () => ({ })); export const mockEnsureValidConfiguration = jest.fn(); -jest.doMock('./config/ensure_valid_configuration', () => ({ +jest.doMock('@kbn/core-config-server-internal', () => ({ ensureValidConfiguration: mockEnsureValidConfiguration, })); diff --git a/src/core/server/server.ts b/src/core/server/server.ts index da69673b4ecfb..7beb8ff86150b 100644 --- a/src/core/server/server.ts +++ b/src/core/server/server.ts @@ -17,9 +17,12 @@ import { ILoggingSystem, config as loggingConfig, } from '@kbn/core-logging-server-internal'; +import { + coreDeprecationProvider, + ensureValidConfiguration, +} from '@kbn/core-config-server-internal'; import { AnalyticsService } from '@kbn/core-analytics-server-internal'; import type { AnalyticsServiceSetup } from '@kbn/core-analytics-server'; -import { coreDeprecationProvider, ensureValidConfiguration } from './config'; import { CoreApp } from './core_app'; import { I18nService } from './i18n'; import { ElasticsearchService } from './elasticsearch'; diff --git a/src/core/server/test_utils.ts b/src/core/server/test_utils.ts index cf18defb0a960..4e2f8855209ff 100644 --- a/src/core/server/test_utils.ts +++ b/src/core/server/test_utils.ts @@ -9,4 +9,7 @@ export { createHttpServer } from './http/test_utils'; export { ServiceStatusLevelSnapshotSerializer } from './status/test_utils'; export { setupServer } from './saved_objects/routes/test_utils'; -export { getDeprecationsFor, getDeprecationsForGlobalSettings } from './config/test_utils'; +export { + getDeprecationsFor, + getDeprecationsForGlobalSettings, +} from '@kbn/core-config-server-internal'; diff --git a/yarn.lock b/yarn.lock index 127bfd048f48d..96f12f915c47e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3063,6 +3063,14 @@ version "0.0.0" uid "" +"@kbn/core-config-server-internal@link:bazel-bin/packages/core/config/core-config-server-internal": + version "0.0.0" + uid "" + +"@kbn/core-config-server-mocks@link:bazel-bin/packages/core/config/core-config-server-mocks": + version "0.0.0" + uid "" + "@kbn/core-doc-links-browser-internal@link:bazel-bin/packages/core/doc-links/core-doc-links-browser-internal": version "0.0.0" uid "" @@ -6478,6 +6486,14 @@ version "0.0.0" uid "" +"@types/kbn__core-config-server-internal@link:bazel-bin/packages/core/config/core-config-server-internal/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__core-config-server-mocks@link:bazel-bin/packages/core/config/core-config-server-mocks/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__core-doc-links-browser-internal@link:bazel-bin/packages/core/doc-links/core-doc-links-browser-internal/npm_module_types": version "0.0.0" uid "" From 145510779756a956a23b7cc41a237a0b6d54aae3 Mon Sep 17 00:00:00 2001 From: Byron Hulcher Date: Wed, 22 Jun 2022 12:05:25 -0400 Subject: [PATCH 35/61] Update paths for custom api source integrations (#134913) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../plugins/enterprise_search/server/integrations.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/enterprise_search/server/integrations.ts b/x-pack/plugins/enterprise_search/server/integrations.ts index 140e36ba15555..ec3a13f526528 100644 --- a/x-pack/plugins/enterprise_search/server/integrations.ts +++ b/x-pack/plugins/enterprise_search/server/integrations.ts @@ -175,7 +175,7 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ } ), categories: ['enterprise_search', 'file_storage'], - uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/network_drive', + uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/network_drive/custom', }, { id: 'onedrive', @@ -203,7 +203,7 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ } ), categories: ['enterprise_search', 'microsoft_365', 'communications', 'productivity'], - uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/outlook', + uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/outlook/custom', }, { id: 'salesforce', @@ -280,7 +280,7 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ } ), categories: ['enterprise_search', 'file_storage', 'microsoft_365'], - uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/sharepoint_server', + uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/share_point_server/custom', }, { id: 'slack', @@ -308,7 +308,7 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ } ), categories: ['enterprise_search', 'microsoft_365', 'communications', 'productivity'], - uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/teams', + uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/teams/custom', }, { id: 'zendesk', @@ -336,7 +336,7 @@ const workplaceSearchIntegrations: WorkplaceSearchIntegration[] = [ } ), categories: ['enterprise_search', 'communications', 'productivity'], - uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/zoom', + uiInternalPath: '/app/enterprise_search/workplace_search/sources/add/zoom/custom', }, ]; From 206de80d2c1d8508268f4ace4b7a4b3e62c36e4b Mon Sep 17 00:00:00 2001 From: Kurt Date: Wed, 22 Jun 2022 12:19:00 -0400 Subject: [PATCH 36/61] Fixed icon display on role create/edit screen where custom feature privileges have been selected (#134857) * Adding new logic for Info Icon on custom feature privileges * Incorporating feedback from PR review * changing the order of the conditions so the less expensive term will be evaluated first --- .../feature_table/feature_table.test.tsx | 340 +++++++++++++++++- .../kibana/feature_table/feature_table.tsx | 36 +- 2 files changed, 368 insertions(+), 8 deletions(-) diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.test.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.test.tsx index ffe5417616dd9..f3b63bf32b5ff 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.test.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { EuiAccordion } from '@elastic/eui'; +import { EuiAccordion, EuiIconTip } from '@elastic/eui'; import React from 'react'; import type { KibanaFeature, SubFeatureConfig } from '@kbn/features-plugin/public'; @@ -33,11 +33,14 @@ interface TestConfig { calculateDisplayedPrivileges: boolean; canCustomizeSubFeaturePrivileges: boolean; } + const setup = (config: TestConfig) => { const kibanaPrivileges = createKibanaPrivileges(config.features, { allowSubFeaturePrivileges: config.canCustomizeSubFeaturePrivileges, }); + const calculator = new PrivilegeFormCalculator(kibanaPrivileges, config.role); + const onChange = jest.fn(); const onChangeAll = jest.fn(); const wrapper = mountWithIntl( @@ -120,6 +123,7 @@ describe('FeatureTable', () => { feature: {}, }, ]); + const { displayedPrivileges } = setup({ role, features: kibanaFeatures, @@ -127,6 +131,7 @@ describe('FeatureTable', () => { calculateDisplayedPrivileges: true, canCustomizeSubFeaturePrivileges, }); + expect(displayedPrivileges).toEqual({ excluded_from_base: { primaryFeaturePrivilege: 'none', @@ -271,6 +276,7 @@ describe('FeatureTable', () => { }, }, ]); + const { displayedPrivileges } = setup({ role, features: kibanaFeatures, @@ -312,6 +318,7 @@ describe('FeatureTable', () => { feature: {}, }, ]); + const { wrapper } = setup({ role, features: kibanaFeatures, @@ -325,6 +332,7 @@ describe('FeatureTable', () => { .find(EuiAccordion) .filter(`#featurePrivilegeControls_${feature.id}`) .props(); + if (!feature.subFeatures || feature.subFeatures.length === 0) { expect(arrowDisplay).toEqual('none'); } else { @@ -941,4 +949,334 @@ describe('FeatureTable', () => { `"2 / 2 features granted"` ); }); + + describe('Info Icon Tooltip for Customized Subfeature privileges', () => { + it('should render if there are custom privileges and the accordion is toggled open then toggled closed', () => { + const role = createRole([ + { + spaces: ['foo'], + base: [], + feature: { + unit_test: ['minimal_read', 'sub-toggle-1', 'sub-toggle-2'], + }, + }, + ]); + + const feature = createFeature({ + id: 'unit_test', + name: 'Unit Test Feature', + subFeatures: [ + { + name: 'Some Sub Feature', + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'sub-toggle-1', + name: 'Sub Toggle 1', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-1'], + }, + { + id: 'sub-toggle-2', + name: 'Sub Toggle 2', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-2'], + }, + { + id: 'sub-toggle-3', + name: 'Sub Toggle 3', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-3'], + }, + ], + }, + ], + }, + ] as SubFeatureConfig[], + }); + + const { wrapper } = setup({ + role, + features: [feature], + privilegeIndex: 0, + calculateDisplayedPrivileges: false, + canCustomizeSubFeaturePrivileges: true, + }); + + const categoryExpander = findTestSubject(wrapper, 'featureCategoryButton_foo'); + categoryExpander.simulate('click'); + + const featureExpander = findTestSubject(wrapper, 'featureTableCell'); + featureExpander.simulate('click').simulate('click'); + + const { type } = wrapper.find(EuiIconTip).props(); + + expect(type).toBe('iInCircle'); + }); + + it('should render if there are custom privileges and the accordion has not been toggled (i.e. on load)', () => { + const role = createRole([ + { + spaces: ['foo'], + base: [], + feature: { + unit_test: ['minimal_read', 'sub-toggle-1', 'sub-toggle-2'], + }, + }, + ]); + + const feature = createFeature({ + id: 'unit_test', + name: 'Unit Test Feature', + subFeatures: [ + { + name: 'Some Sub Feature', + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'sub-toggle-1', + name: 'Sub Toggle 1', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-1'], + }, + { + id: 'sub-toggle-2', + name: 'Sub Toggle 2', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-2'], + }, + { + id: 'sub-toggle-3', + name: 'Sub Toggle 3', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-3'], + }, + ], + }, + ], + }, + ] as SubFeatureConfig[], + }); + + const { wrapper } = setup({ + role, + features: [feature], + privilegeIndex: 0, + calculateDisplayedPrivileges: false, + canCustomizeSubFeaturePrivileges: true, + }); + + const { type } = wrapper.find(EuiIconTip).props(); + + expect(type).toBe('iInCircle'); + }); + + it('should not render if there are custom privileges and the accordion is open', () => { + const role = createRole([ + { + spaces: ['foo'], + base: [], + feature: { + unit_test: ['minimal_read', 'sub-toggle-1', 'sub-toggle-2'], + }, + }, + ]); + + const feature = createFeature({ + id: 'unit_test', + name: 'Unit Test Feature', + subFeatures: [ + { + name: 'Some Sub Feature', + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'sub-toggle-1', + name: 'Sub Toggle 1', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-1'], + }, + { + id: 'sub-toggle-2', + name: 'Sub Toggle 2', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-2'], + }, + { + id: 'sub-toggle-3', + name: 'Sub Toggle 3', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-3'], + }, + ], + }, + ], + }, + ] as SubFeatureConfig[], + }); + + const { wrapper } = setup({ + role, + features: [feature], + privilegeIndex: 0, + calculateDisplayedPrivileges: false, + canCustomizeSubFeaturePrivileges: true, + }); + + const categoryExpander = findTestSubject(wrapper, 'featureCategoryButton_foo'); + categoryExpander.simulate('click'); + + const featureExpander = findTestSubject(wrapper, 'featureTableCell'); + featureExpander.simulate('click'); + + const { type } = wrapper.find(EuiIconTip).props(); + + expect(type).toBe('empty'); + }); + + it('should not render if there are NOT custom privileges and the accordion has not been toggled (i.e on load)', () => { + const role = createRole([ + { + spaces: ['foo'], + base: [], + feature: { + unit_test: ['all', 'sub-toggle-1', 'sub-toggle-2', 'sub-toggle-3'], + }, + }, + ]); + + const feature = createFeature({ + id: 'unit_test', + name: 'Unit Test Feature', + subFeatures: [ + { + name: 'Some Sub Feature', + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'sub-toggle-1', + name: 'Sub Toggle 1', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-1'], + }, + { + id: 'sub-toggle-2', + name: 'Sub Toggle 2', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-2'], + }, + { + id: 'sub-toggle-3', + name: 'Sub Toggle 3', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-3'], + }, + ], + }, + ], + }, + ] as SubFeatureConfig[], + }); + + const { wrapper } = setup({ + role, + features: [feature], + privilegeIndex: 0, + calculateDisplayedPrivileges: false, + canCustomizeSubFeaturePrivileges: true, + }); + + const { type } = wrapper.find(EuiIconTip).props(); + + expect(type).toBe('empty'); + }); + + it('should not render if there are NOT custom privileges and the accordion has been toggled open then toggled closed', () => { + const role = createRole([ + { + spaces: ['foo'], + base: [], + feature: { + unit_test: ['all', 'sub-toggle-1', 'sub-toggle-2', 'sub-toggle-3'], + }, + }, + ]); + + const feature = createFeature({ + id: 'unit_test', + name: 'Unit Test Feature', + subFeatures: [ + { + name: 'Some Sub Feature', + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'sub-toggle-1', + name: 'Sub Toggle 1', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-1'], + }, + { + id: 'sub-toggle-2', + name: 'Sub Toggle 2', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-2'], + }, + { + id: 'sub-toggle-3', + name: 'Sub Toggle 3', + includeIn: 'all', + savedObject: { all: [], read: [] }, + ui: ['sub-toggle-3'], + }, + ], + }, + ], + }, + ] as SubFeatureConfig[], + }); + + const { wrapper } = setup({ + role, + features: [feature], + privilegeIndex: 0, + calculateDisplayedPrivileges: false, + canCustomizeSubFeaturePrivileges: true, + }); + + const categoryExpander = findTestSubject(wrapper, 'featureCategoryButton_foo'); + categoryExpander.simulate('click'); + + const featureExpander = findTestSubject(wrapper, 'featureTableCell'); + featureExpander.simulate('click').simulate('click'); + + const { type } = wrapper.find(EuiIconTip).props(); + + expect(type).toBe('empty'); + }); + }); }); diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx index 43d23fa7a584d..666cd39dc8cd7 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx @@ -48,7 +48,11 @@ interface Props { disabled?: boolean; } -export class FeatureTable extends Component { +interface State { + expandedPrivilegeControls: Set; +} + +export class FeatureTable extends Component { public static defaultProps = { privilegeIndex: -1, showLocks: true, @@ -67,8 +71,11 @@ export class FeatureTable extends Component { if (!this.featureCategories.has(feature.category.id)) { this.featureCategories.set(feature.category.id, []); } + this.featureCategories.get(feature.category.id)!.push(feature); }); + + this.state = { expandedPrivilegeControls: new Set() }; } public render() { @@ -207,14 +214,14 @@ export class FeatureTable extends Component { const renderFeatureMarkup = ( buttonContent: EuiAccordionProps['buttonContent'], extraAction: EuiAccordionProps['extraAction'], - warningIcon: JSX.Element + infoIcon: JSX.Element ) => { const { canCustomizeSubFeaturePrivileges } = this.props; const hasSubFeaturePrivileges = feature.getSubFeaturePrivileges().length > 0; return ( - {warningIcon} + {infoIcon} { arrowDisplay={ canCustomizeSubFeaturePrivileges && hasSubFeaturePrivileges ? 'left' : 'none' } + onToggle={(isOpen: boolean) => { + if (isOpen) { + this.state.expandedPrivilegeControls.add(feature.id); + } else { + this.state.expandedPrivilegeControls.delete(feature.id); + } + + this.setState({ + expandedPrivilegeControls: this.state.expandedPrivilegeControls, + }); + }} >
{ isDisabled: this.props.disabled ?? false, }); - let warningIcon = ; + let infoIcon = ; + + const arePrivilegeControlsCollapsed = !this.state.expandedPrivilegeControls.has(feature.id); + if ( + arePrivilegeControlsCollapsed && this.props.privilegeCalculator.hasCustomizedSubFeaturePrivileges( feature.id, this.props.privilegeIndex, this.props.allSpacesSelected ) ) { - warningIcon = ( + infoIcon = ( { /> ); - return renderFeatureMarkup(buttonContent, extraAction, warningIcon); + return renderFeatureMarkup(buttonContent, extraAction, infoIcon); }; private onChange = (featureId: string) => (featurePrivilegeId: string) => { From 9c1202f16ac103101d7529747d7bfeadd0afc557 Mon Sep 17 00:00:00 2001 From: Matthias Wilhelm Date: Wed, 22 Jun 2022 18:27:34 +0200 Subject: [PATCH 37/61] [Discover] Centralize document flattening and introduce DataTableRecord (#134174) --- .../discover/public/__fixtures__/fake_row.js | 25 ---- .../{real_hits.js => real_hits.ts} | 31 ++--- .../discover/public/__mocks__/grid_context.ts | 18 ++- .../__mocks__/use_context_app_fetch.tsx | 26 ++-- .../application/context/context_app.tsx | 4 +- .../context/context_app_content.test.tsx | 4 +- .../context/context_app_content.tsx | 13 +- .../context/hooks/use_context_app_fetch.tsx | 8 +- .../application/context/services/_stubs.ts | 4 +- .../context/services/anchor.test.ts | 15 +- .../application/context/services/anchor.ts | 11 +- .../services/context.predecessors.test.ts | 78 +++++++---- .../services/context.successors.test.ts | 62 ++++++--- .../application/context/services/context.ts | 19 +-- .../context/services/context_query_state.ts | 10 +- .../context/utils/fetch_hits_in_interval.ts | 12 +- .../utils/get_es_query_search_after.ts | 27 ++-- .../layout/discover_documents.test.tsx | 11 +- .../components/layout/discover_documents.tsx | 6 +- .../layout/discover_layout.test.tsx | 4 +- .../main/components/layout/types.ts | 6 +- .../sidebar/discover_sidebar.test.tsx | 14 +- .../components/sidebar/discover_sidebar.tsx | 5 +- .../discover_sidebar_responsive.test.tsx | 14 +- .../sidebar/discover_sidebar_responsive.tsx | 7 +- .../sidebar/lib/field_calculator.js | 7 +- .../sidebar/lib/field_calculator.test.ts | 12 +- .../components/sidebar/lib/get_details.ts | 5 +- .../application/main/discover_main_app.tsx | 4 +- .../main/hooks/use_discover_state.ts | 4 +- .../main/hooks/use_saved_search.ts | 7 +- .../main/utils/calc_field_counts.test.ts | 18 +-- .../main/utils/calc_field_counts.ts | 7 +- .../application/main/utils/fetch_all.test.ts | 7 +- .../application/main/utils/fetch_all.ts | 10 +- .../application/main/utils/fetch_chart.ts | 9 +- .../application/main/utils/fetch_documents.ts | 2 +- .../discover/public/application/types.ts | 11 -- .../discover_grid/discover_grid.test.tsx | 11 +- .../discover_grid/discover_grid.tsx | 35 ++--- .../discover_grid_cell_actions.tsx | 4 +- .../discover_grid/discover_grid_context.tsx | 9 +- .../discover_grid_document_selection.test.tsx | 7 +- .../discover_grid_document_selection.tsx | 39 +++--- .../discover_grid_expand_button.tsx | 12 +- .../discover_grid_flyout.test.tsx | 28 ++-- .../discover_grid/discover_grid_flyout.tsx | 30 ++-- .../get_render_cell_value.test.tsx | 64 ++++----- .../discover_grid/get_render_cell_value.tsx | 55 ++++---- .../doc_table/components/table_row.test.tsx | 6 +- .../doc_table/components/table_row.tsx | 29 ++-- .../doc_table/doc_table_wrapper.test.tsx | 34 +++-- .../doc_table/doc_table_wrapper.tsx | 13 +- .../doc_table/utils/row_formatter.test.ts | 41 +++--- .../doc_table/utils/row_formatter.tsx | 6 +- .../embeddable/saved_search_embeddable.tsx | 10 +- .../public/embeddable/saved_search_grid.tsx | 4 +- .../public/hooks/use_es_doc_search.test.tsx | 8 +- .../public/hooks/use_es_doc_search.ts | 9 +- src/plugins/discover/public/plugin.tsx | 4 +- .../components/doc_viewer/doc_viewer.test.tsx | 5 +- .../doc_viewer/doc_viewer_tab.test.tsx | 7 +- .../components/doc_viewer/doc_viewer_tab.tsx | 5 +- .../__snapshots__/source.test.tsx.snap | 128 ------------------ .../doc_viewer_source/source.test.tsx | 9 +- .../components/doc_viewer_source/source.tsx | 2 +- .../doc_viewer_table/legacy/table.test.tsx | 106 ++++++++------- .../doc_viewer_table/legacy/table.tsx | 14 +- .../components/doc_viewer_table/table.tsx | 9 +- .../services/doc_views/doc_views_registry.ts | 4 +- .../services/doc_views/doc_views_types.ts | 6 +- src/plugins/discover/public/types.ts | 31 ++++- .../public/utils/build_data_record.ts | 43 ++++++ .../utils/convert_value_to_string.test.tsx | 29 ---- .../public/utils/convert_value_to_string.ts | 16 ++- .../utils/copy_value_to_clipboard.test.tsx | 1 - .../discover/public/utils/format_hit.test.ts | 25 +++- .../discover/public/utils/format_hit.ts | 14 +- .../discover/public/utils/get_doc_id.tsx | 17 +++ 79 files changed, 667 insertions(+), 799 deletions(-) delete mode 100644 src/plugins/discover/public/__fixtures__/fake_row.js rename src/plugins/discover/public/__fixtures__/{real_hits.js => real_hits.ts} (89%) delete mode 100644 src/plugins/discover/public/services/doc_views/components/doc_viewer_source/__snapshots__/source.test.tsx.snap create mode 100644 src/plugins/discover/public/utils/build_data_record.ts create mode 100644 src/plugins/discover/public/utils/get_doc_id.tsx diff --git a/src/plugins/discover/public/__fixtures__/fake_row.js b/src/plugins/discover/public/__fixtures__/fake_row.js deleted file mode 100644 index 8cba3d85a69c3..0000000000000 --- a/src/plugins/discover/public/__fixtures__/fake_row.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -const longString = Array(200).join('_'); - -export function getFakeRowVals(type, id, mapping) { - return mapping.reduce((collector, field) => { - collector[field.name] = `${field.name}_${type}_${id}_${longString}`; - return collector; - }, {}); -} - -export function getFakeRow(id, mapping) { - return { - _id: id, - _index: 'test', - _source: getFakeRowVals('original', id, mapping), - sort: [id], - }; -} diff --git a/src/plugins/discover/public/__fixtures__/real_hits.js b/src/plugins/discover/public/__fixtures__/real_hits.ts similarity index 89% rename from src/plugins/discover/public/__fixtures__/real_hits.js rename to src/plugins/discover/public/__fixtures__/real_hits.ts index 0286d036de090..96d084a977bd4 100644 --- a/src/plugins/discover/public/__fixtures__/real_hits.js +++ b/src/plugins/discover/public/__fixtures__/real_hits.ts @@ -5,7 +5,10 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ - +import type { DataView } from '@kbn/data-views-plugin/common'; +import { cloneDeep } from 'lodash'; +import { buildDataTableRecord } from '../utils/build_data_record'; +import type { EsHitRecord } from '../types'; /* Extensions: gif: 5 @@ -23,10 +26,9 @@ All have the same index, ids are unique */ -export default [ +export const realHits: EsHitRecord[] = [ { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '61', _score: 1, _source: { @@ -36,7 +38,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '388', _score: 1, _source: { @@ -46,7 +47,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '403', _score: 1, _source: { @@ -56,7 +56,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '415', _score: 1, _source: { @@ -66,7 +65,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '460', _score: 1, _source: { @@ -77,7 +75,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '496', _score: 1, _source: { @@ -87,7 +84,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '511', _score: 1, _source: { @@ -97,7 +93,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '701', _score: 1, _source: { @@ -107,7 +102,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '838', _score: 1, _source: { @@ -118,7 +112,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '890', _score: 1, _source: { @@ -129,7 +122,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'nginx', _id: '927', _score: 1, _source: { @@ -140,7 +132,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '1034', _score: 1, _source: { @@ -150,7 +141,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '1142', _score: 1, _source: { @@ -161,7 +151,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '1180', _score: 1, _source: { @@ -171,7 +160,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'nginx', _id: '1224', _score: 1, _source: { @@ -181,7 +169,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '1243', _score: 1, _source: { @@ -191,7 +178,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '1510', _score: 1, _source: { @@ -201,7 +187,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '1628', _score: 1, _source: { @@ -211,7 +196,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '1729', _score: 1, _source: { @@ -221,7 +205,6 @@ export default [ }, { _index: 'logstash-2014.09.09', - _type: 'apache', _id: '1945', _score: 1, _source: { @@ -230,3 +213,7 @@ export default [ }, }, ]; + +export function getDataTableRecords(dataView: DataView) { + return cloneDeep(realHits).map((hit: EsHitRecord) => buildDataTableRecord(hit, dataView)); +} diff --git a/src/plugins/discover/public/__mocks__/grid_context.ts b/src/plugins/discover/public/__mocks__/grid_context.ts index 3f760bc4a4258..7e35aaf42204c 100644 --- a/src/plugins/discover/public/__mocks__/grid_context.ts +++ b/src/plugins/discover/public/__mocks__/grid_context.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -import { flattenHit } from '@kbn/data-plugin/common'; import type { DataView } from '@kbn/data-views-plugin/public'; import { indexPatternMock } from './index_pattern'; import { dataViewComplexMock } from './data_view_complex'; @@ -15,18 +14,18 @@ import { esHitsComplex } from './es_hits_complex'; import { discoverServiceMock } from './services'; import { GridContext } from '../components/discover_grid/discover_grid_context'; import { convertValueToString } from '../utils/convert_value_to_string'; -import type { ElasticSearchHit } from '../types'; +import { buildDataTableRecord } from '../utils/build_data_record'; +import { EsHitRecord } from '../types'; -const buildGridContext = (dataView: DataView, rows: ElasticSearchHit[]): GridContext => { - const rowsFlattened = rows.map((hit) => - flattenHit(hit, dataView, { includeIgnoredValues: true }) - ); +const buildGridContext = (dataView: DataView, rows: EsHitRecord[]): GridContext => { + const usedRows = rows.map((row) => { + return buildDataTableRecord(row, dataView); + }); return { expanded: undefined, setExpanded: jest.fn(), - rows, - rowsFlattened, + rows: usedRows, onFilter: jest.fn(), indexPattern: dataView, isDarkMode: false, @@ -37,8 +36,7 @@ const buildGridContext = (dataView: DataView, rows: ElasticSearchHit[]): GridCon rowIndex, columnId, services: discoverServiceMock, - rows, - rowsFlattened, + rows: usedRows, dataView, options, }), diff --git a/src/plugins/discover/public/application/context/__mocks__/use_context_app_fetch.tsx b/src/plugins/discover/public/application/context/__mocks__/use_context_app_fetch.tsx index 1499067d2332e..be424f12d93f3 100644 --- a/src/plugins/discover/public/application/context/__mocks__/use_context_app_fetch.tsx +++ b/src/plugins/discover/public/application/context/__mocks__/use_context_app_fetch.tsx @@ -6,14 +6,20 @@ * Side Public License, v 1. */ -export const mockAnchorHit = { - _id: '123', - _index: 'the-index-pattern-id', - fields: { order_date: ['2021-06-07T18:52:17.000Z'] }, - sort: [1623091937000, 2092], - isAnchor: true, - _version: 1, -}; +import { indexPatternMock } from '../../../__mocks__/index_pattern'; +import { buildDataTableRecord } from '../../../utils/build_data_record'; + +export const mockAnchorHit = buildDataTableRecord( + { + _id: '123', + _index: 'the-index-pattern-id', + fields: { order_date: ['2021-06-07T18:52:17.000Z'] }, + sort: [1623091937000, 2092], + _version: 1, + }, + indexPatternMock, + true +); export const mockPredecessorHits = [ { @@ -37,7 +43,7 @@ export const mockPredecessorHits = [ sort: ['2021-06-07T19:10:22.000Z', 2435], _version: 1, }, -]; +].map((entry) => buildDataTableRecord(entry, indexPatternMock)); export const mockSuccessorHits = [ { @@ -61,4 +67,4 @@ export const mockSuccessorHits = [ sort: ['2021-06-07T18:47:16.000Z', 2437], _version: 1, }, -]; +].map((entry) => buildDataTableRecord(entry, indexPatternMock)); diff --git a/src/plugins/discover/public/application/context/context_app.tsx b/src/plugins/discover/public/application/context/context_app.tsx index b56364781206b..47650b64ae8cf 100644 --- a/src/plugins/discover/public/application/context/context_app.tsx +++ b/src/plugins/discover/public/application/context/context_app.tsx @@ -95,7 +95,7 @@ export const ContextApp = ({ indexPattern, anchorId }: ContextAppProps) => { fetchContextRows, fetchAllRows, fetchSurroundingRows, - fetchedState.anchor._id, + fetchedState.anchor.id, ]); const { columns, onAddColumn, onRemoveColumn, onSetColumns } = useColumns({ @@ -110,7 +110,7 @@ export const ContextApp = ({ indexPattern, anchorId }: ContextAppProps) => { const rows = useMemo( () => [ ...(fetchedState.predecessors || []), - ...(fetchedState.anchor._id ? [fetchedState.anchor] : []), + ...(fetchedState.anchor.id ? [fetchedState.anchor] : []), ...(fetchedState.successors || []), ], [fetchedState.predecessors, fetchedState.anchor, fetchedState.successors] diff --git a/src/plugins/discover/public/application/context/context_app_content.test.tsx b/src/plugins/discover/public/application/context/context_app_content.test.tsx index 9751f0d38f3d0..23a475c38b940 100644 --- a/src/plugins/discover/public/application/context/context_app_content.test.tsx +++ b/src/plugins/discover/public/application/context/context_app_content.test.tsx @@ -18,8 +18,8 @@ import { indexPatternMock } from '../../__mocks__/index_pattern'; import { DiscoverGrid } from '../../components/discover_grid/discover_grid'; import { discoverServiceMock } from '../../__mocks__/services'; import { DocTableWrapper } from '../../components/doc_table/doc_table_wrapper'; -import { EsHitRecordList } from '../types'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { buildDataTableRecord } from '../../utils/build_data_record'; describe('ContextAppContent test', () => { const mountComponent = ({ @@ -56,7 +56,7 @@ describe('ContextAppContent test', () => { anchorStatus: anchorStatus || LoadingStatus.LOADED, predecessorsStatus: LoadingStatus.LOADED, successorsStatus: LoadingStatus.LOADED, - rows: [hit] as unknown as EsHitRecordList, + rows: [buildDataTableRecord(hit, indexPatternMock)], predecessors: [], successors: [], defaultStepSize: 5, diff --git a/src/plugins/discover/public/application/context/context_app_content.tsx b/src/plugins/discover/public/application/context/context_app_content.tsx index 0c14c3bd62e34..ce9dd8af939d3 100644 --- a/src/plugins/discover/public/application/context/context_app_content.tsx +++ b/src/plugins/discover/public/application/context/context_app_content.tsx @@ -20,10 +20,9 @@ import { AppState } from './services/context_state'; import { SurrDocType } from './services/context'; import { MAX_CONTEXT_SIZE, MIN_CONTEXT_SIZE } from './services/constants'; import { DocTableContext } from '../../components/doc_table/doc_table_context'; -import { EsHitRecordList } from '../types'; -import { SortPairArr } from '../../components/doc_table/utils/get_sort'; -import { ElasticSearchHit } from '../../types'; +import type { SortPairArr } from '../../components/doc_table/utils/get_sort'; import { useDiscoverServices } from '../../hooks/use_discover_services'; +import type { DataTableRecord } from '../../types'; export interface ContextAppContentProps { columns: string[]; @@ -33,9 +32,9 @@ export interface ContextAppContentProps { indexPattern: DataView; predecessorCount: number; successorCount: number; - rows: EsHitRecordList; - predecessors: EsHitRecordList; - successors: EsHitRecordList; + rows: DataTableRecord[]; + predecessors: DataTableRecord[]; + successors: DataTableRecord[]; anchorStatus: LoadingStatus; predecessorsStatus: LoadingStatus; successorsStatus: LoadingStatus; @@ -76,7 +75,7 @@ export function ContextAppContent({ }: ContextAppContentProps) { const { uiSettings: config } = useDiscoverServices(); - const [expandedDoc, setExpandedDoc] = useState(); + const [expandedDoc, setExpandedDoc] = useState(); const isAnchorLoading = anchorStatus === LoadingStatus.LOADING || anchorStatus === LoadingStatus.UNINITIALIZED; const arePredecessorsLoading = diff --git a/src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx b/src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx index a43b8b0ca4f9d..1201526da0821 100644 --- a/src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx +++ b/src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx @@ -21,8 +21,8 @@ import { } from '../services/context_query_state'; import { AppState } from '../services/context_state'; import { getFirstSortableField } from '../utils/sorting'; -import { EsHitRecord } from '../../types'; import { useDiscoverServices } from '../../../hooks/use_discover_services'; +import type { DataTableRecord } from '../../../types'; const createError = (statusKey: string, reason: FailureReason, error?: Error) => ({ [statusKey]: { value: LoadingStatus.FAILED, error, reason }, @@ -117,7 +117,7 @@ export function useContextAppFetch({ ]); const fetchSurroundingRows = useCallback( - async (type: SurrDocType, fetchedAnchor?: EsHitRecord) => { + async (type: SurrDocType, fetchedAnchor?: DataTableRecord) => { const filters = filterManager.getFilters(); const count = @@ -133,7 +133,7 @@ export function useContextAppFetch({ const rows = await fetchSurroundingDocs( type, indexPattern, - anchor as EsHitRecord, + anchor, tieBreakerField, SortDirection.desc, count, @@ -167,7 +167,7 @@ export function useContextAppFetch({ ); const fetchContextRows = useCallback( - (anchor?: EsHitRecord) => + (anchor?: DataTableRecord) => Promise.allSettled([ fetchSurroundingRows(SurrDocType.PREDECESSORS, anchor), fetchSurroundingRows(SurrDocType.SUCCESSORS, anchor), diff --git a/src/plugins/discover/public/application/context/services/_stubs.ts b/src/plugins/discover/public/application/context/services/_stubs.ts index b37c1ecf4efbf..f2375372829bc 100644 --- a/src/plugins/discover/public/application/context/services/_stubs.ts +++ b/src/plugins/discover/public/application/context/services/_stubs.ts @@ -11,7 +11,7 @@ import moment from 'moment'; import { of } from 'rxjs'; import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { IKibanaSearchResponse } from '@kbn/data-plugin/common'; -import { EsHitRecordList } from '../../types'; +import { EsHitRecord } from '../../../types'; type SortHit = { [key in string]: number; // timeField name @@ -22,7 +22,7 @@ type SortHit = { /** * A stubbed search source with a `fetch` method that returns all of `_stubHits`. */ -export function createSearchSourceStub(hits: EsHitRecordList, timeField?: string) { +export function createSearchSourceStub(hits: EsHitRecord[], timeField?: string) { const requestResult = { id: 'Fjk5bndxTHJWU2FldVRVQ0tYR0VqOFEcRWtWNDhOdG5SUzJYcFhONVVZVTBJQToxMDMwOQ==', rawResponse: { diff --git a/src/plugins/discover/public/application/context/services/anchor.test.ts b/src/plugins/discover/public/application/context/services/anchor.test.ts index ab613fb71cc6d..0fff0193e4995 100644 --- a/src/plugins/discover/public/application/context/services/anchor.test.ts +++ b/src/plugins/discover/public/application/context/services/anchor.test.ts @@ -11,7 +11,6 @@ import { createSearchSourceStub } from './_stubs'; import { fetchAnchor, updateSearchSource } from './anchor'; import { indexPatternMock } from '../../../__mocks__/index_pattern'; import { savedSearchMock } from '../../../__mocks__/saved_search'; -import { EsHitRecordList } from '../../types'; describe('context app', function () { // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -24,7 +23,7 @@ describe('context app', function () { describe('function fetchAnchor', function () { beforeEach(() => { - searchSourceStub = createSearchSourceStub([{ _id: 'hit1' }] as unknown as EsHitRecordList); + searchSourceStub = createSearchSourceStub([{ _id: 'hit1', _index: 'test' }]); }); it('should use the `fetch$` method of the SearchSource', function () { @@ -142,7 +141,7 @@ describe('context app', function () { }); it('should reject with an error when no hits were found', function () { - searchSourceStub = createSearchSourceStub([] as unknown as EsHitRecordList); + searchSourceStub = createSearchSourceStub([]); return fetchAnchor('id', indexPattern, searchSourceStub, [ { '@timestamp': SortDirection.desc }, @@ -159,15 +158,15 @@ describe('context app', function () { it('should return the first hit after adding an anchor marker', function () { searchSourceStub = createSearchSourceStub([ - { property1: 'value1' }, - { property2: 'value2' }, - ] as unknown as EsHitRecordList); + { _id: '1', _index: 't' }, + { _id: '3', _index: 't' }, + ]); return fetchAnchor('id', indexPattern, searchSourceStub, [ { '@timestamp': SortDirection.desc }, { _doc: SortDirection.desc }, ]).then((anchorDocument) => { - expect(anchorDocument).toHaveProperty('property1', 'value1'); + expect(anchorDocument).toHaveProperty('raw._id', '1'); expect(anchorDocument).toHaveProperty('isAnchor', true); }); }); @@ -175,7 +174,7 @@ describe('context app', function () { describe('useNewFields API', () => { beforeEach(() => { - searchSourceStub = createSearchSourceStub([{ _id: 'hit1' }] as unknown as EsHitRecordList); + searchSourceStub = createSearchSourceStub([{ _id: 'hit1', _index: 't' }]); }); it('should request fields if useNewFieldsApi set', function () { diff --git a/src/plugins/discover/public/application/context/services/anchor.ts b/src/plugins/discover/public/application/context/services/anchor.ts index 28d2298513aa7..77644c8af5808 100644 --- a/src/plugins/discover/public/application/context/services/anchor.ts +++ b/src/plugins/discover/public/application/context/services/anchor.ts @@ -9,7 +9,8 @@ import { lastValueFrom } from 'rxjs'; import { i18n } from '@kbn/i18n'; import { ISearchSource, EsQuerySortValue } from '@kbn/data-plugin/public'; import { DataView } from '@kbn/data-views-plugin/public'; -import { EsHitRecord } from '../../types'; +import { DataTableRecord } from '../../../types'; +import { buildDataTableRecord } from '../../../utils/build_data_record'; export async function fetchAnchor( anchorId: string, @@ -17,7 +18,7 @@ export async function fetchAnchor( searchSource: ISearchSource, sort: EsQuerySortValue[], useNewFieldsApi: boolean = false -): Promise { +): Promise { updateSearchSource(searchSource, anchorId, sort, useNewFieldsApi, indexPattern); const { rawResponse } = await lastValueFrom(await searchSource.fetch$()); const doc = rawResponse.hits?.hits?.[0]; @@ -29,11 +30,7 @@ export async function fetchAnchor( }) ); } - - return { - ...doc, - isAnchor: true, - } as EsHitRecord; + return buildDataTableRecord(doc, indexPattern, true); } export function updateSearchSource( diff --git a/src/plugins/discover/public/application/context/services/context.predecessors.test.ts b/src/plugins/discover/public/application/context/services/context.predecessors.test.ts index d9b55303ad507..42d53dc66a878 100644 --- a/src/plugins/discover/public/application/context/services/context.predecessors.test.ts +++ b/src/plugins/discover/public/application/context/services/context.predecessors.test.ts @@ -14,7 +14,8 @@ import { Query } from '@kbn/es-query'; import { createContextSearchSourceStub } from './_stubs'; import { fetchSurroundingDocs, SurrDocType } from './context'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; -import { EsHitRecord, EsHitRecordList } from '../../types'; +import { DataTableRecord, EsHitRecord } from '../../../types'; +import { buildDataTableRecord, buildDataTableRecordList } from '../../../utils/build_data_record'; const MS_PER_DAY = 24 * 60 * 60 * 1000; const ANCHOR_TIMESTAMP = new Date(MS_PER_DAY).toJSON(); @@ -36,7 +37,7 @@ describe('context predecessors', function () { tieBreakerField: string, tieBreakerValue: number, size: number - ) => Promise; + ) => Promise; // eslint-disable-next-line @typescript-eslint/no-explicit-any let mockSearchSource: any; @@ -45,6 +46,9 @@ describe('context predecessors', function () { timeFieldName: '@timestamp', isTimeNanosBased: () => false, popularizeField: () => {}, + fields: { + getByName: jest.fn(), + }, } as unknown as DataView; describe('function fetchPredecessors', function () { @@ -59,17 +63,21 @@ describe('context predecessors', function () { } as unknown as DataPublicPluginStart; fetchPredecessors = (timeValIso, timeValNr, tieBreakerField, tieBreakerValue, size = 10) => { - const anchor = { - _source: { - [indexPattern.timeFieldName!]: timeValIso, - }, - sort: [timeValNr, tieBreakerValue], - }; + const anchor = buildDataTableRecord( + { + _source: { + [indexPattern.timeFieldName!]: timeValIso, + }, + sort: [timeValNr, tieBreakerValue], + } as EsHitRecord, + indexPattern, + true + ); return fetchSurroundingDocs( SurrDocType.PREDECESSORS, indexPattern, - anchor as EsHitRecord, + anchor, tieBreakerField, SortDirection.desc, size, @@ -89,9 +97,11 @@ describe('context predecessors', function () { ]; return fetchPredecessors(ANCHOR_TIMESTAMP_3000, MS_PER_DAY * 3000, '_doc', 0, 3).then( - (hits: EsHitRecordList) => { + (hits) => { expect(mockSearchSource.fetch$.calledOnce).toBe(true); - expect(hits).toEqual(mockSearchSource._stubHits.slice(0, 3)); + expect(hits).toEqual( + buildDataTableRecordList(mockSearchSource._stubHits.slice(0, 3), indexPattern) + ); } ); }); @@ -106,7 +116,7 @@ describe('context predecessors', function () { ]; return fetchPredecessors(ANCHOR_TIMESTAMP_3000, MS_PER_DAY * 3000, '_doc', 0, 6).then( - (hits: EsHitRecordList) => { + (hits) => { const intervals: Timestamp[] = mockSearchSource.setField.args .filter(([property]: string) => property === 'query') .map(([, { query }]: [string, { query: Query }]) => @@ -121,8 +131,9 @@ describe('context predecessors', function () { // should have ended with a half-open interval expect(Object.keys(last(intervals) ?? {})).toEqual(['format', 'gte']); expect(intervals.length).toBeGreaterThan(1); - - expect(hits).toEqual(mockSearchSource._stubHits.slice(0, 3)); + expect(hits).toEqual( + buildDataTableRecordList(mockSearchSource._stubHits.slice(0, 3), indexPattern) + ); } ); }); @@ -136,7 +147,7 @@ describe('context predecessors', function () { ]; return fetchPredecessors(ANCHOR_TIMESTAMP_1000, MS_PER_DAY * 1000, '_doc', 0, 3).then( - (hits: EsHitRecordList) => { + (hits) => { const intervals: Timestamp[] = mockSearchSource.setField.args .filter(([property]: string) => property === 'query') .map(([, { query }]: [string, { query: Query }]) => { @@ -155,17 +166,18 @@ describe('context predecessors', function () { // should have stopped before reaching MS_PER_DAY * 1700 expect(moment(last(intervals)?.lte).valueOf()).toBeLessThan(MS_PER_DAY * 1700); expect(intervals.length).toBeGreaterThan(1); - expect(hits).toEqual(mockSearchSource._stubHits.slice(-3)); + + expect(hits).toEqual( + buildDataTableRecordList(mockSearchSource._stubHits.slice(-3), indexPattern) + ); } ); }); it('should return an empty array when no hits were found', function () { - return fetchPredecessors(ANCHOR_TIMESTAMP_3, MS_PER_DAY * 3, '_doc', 0, 3).then( - (hits: EsHitRecordList) => { - expect(hits).toEqual([]); - } - ); + return fetchPredecessors(ANCHOR_TIMESTAMP_3, MS_PER_DAY * 3, '_doc', 0, 3).then((hits) => { + expect(hits).toEqual([]); + }); }); it('should configure the SearchSource to not inherit from the implicit root', function () { @@ -201,17 +213,21 @@ describe('context predecessors', function () { } as unknown as DataPublicPluginStart; fetchPredecessors = (timeValIso, timeValNr, tieBreakerField, tieBreakerValue, size = 10) => { - const anchor = { - _source: { - [indexPattern.timeFieldName!]: timeValIso, - }, - sort: [timeValNr, tieBreakerValue], - }; + const anchor = buildDataTableRecord( + { + _source: { + [indexPattern.timeFieldName!]: timeValIso, + }, + sort: [timeValNr, tieBreakerValue], + } as EsHitRecord, + indexPattern, + true + ); return fetchSurroundingDocs( SurrDocType.PREDECESSORS, indexPattern, - anchor as EsHitRecord, + anchor, tieBreakerField, SortDirection.desc, size, @@ -232,13 +248,15 @@ describe('context predecessors', function () { ]; return fetchPredecessors(ANCHOR_TIMESTAMP_3000, MS_PER_DAY * 3000, '_doc', 0, 3).then( - (hits: EsHitRecordList) => { + (hits) => { const setFieldsSpy = mockSearchSource.setField.withArgs('fields'); const removeFieldsSpy = mockSearchSource.removeField.withArgs('fieldsFromSource'); expect(mockSearchSource.fetch$.calledOnce).toBe(true); expect(removeFieldsSpy.calledOnce).toBe(true); expect(setFieldsSpy.calledOnce).toBe(true); - expect(hits).toEqual(mockSearchSource._stubHits.slice(0, 3)); + expect(hits).toEqual( + buildDataTableRecordList(mockSearchSource._stubHits.slice(0, 3), indexPattern) + ); } ); }); diff --git a/src/plugins/discover/public/application/context/services/context.successors.test.ts b/src/plugins/discover/public/application/context/services/context.successors.test.ts index c9f819c6497d9..dfc57b1859cb1 100644 --- a/src/plugins/discover/public/application/context/services/context.successors.test.ts +++ b/src/plugins/discover/public/application/context/services/context.successors.test.ts @@ -14,7 +14,8 @@ import { createContextSearchSourceStub } from './_stubs'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { Query } from '@kbn/es-query'; import { fetchSurroundingDocs, SurrDocType } from './context'; -import { EsHitRecord, EsHitRecordList } from '../../types'; +import { DataTableRecord } from '../../../types'; +import { buildDataTableRecord, buildDataTableRecordList } from '../../../utils/build_data_record'; const MS_PER_DAY = 24 * 60 * 60 * 1000; const ANCHOR_TIMESTAMP = new Date(MS_PER_DAY).toJSON(); @@ -34,7 +35,7 @@ describe('context successors', function () { tieBreakerField: string, tieBreakerValue: number, size: number - ) => Promise; + ) => Promise; let dataPluginMock: DataPublicPluginStart; // eslint-disable-next-line @typescript-eslint/no-explicit-any let mockSearchSource: any; @@ -43,6 +44,9 @@ describe('context successors', function () { timeFieldName: '@timestamp', isTimeNanosBased: () => false, popularizeField: () => {}, + fields: { + getByName: jest.fn(), + }, } as unknown as DataView; describe('function fetchSuccessors', function () { @@ -58,17 +62,23 @@ describe('context successors', function () { } as unknown as DataPublicPluginStart; fetchSuccessors = (timeValIso, timeValNr, tieBreakerField, tieBreakerValue, size) => { - const anchor = { - _source: { - [indexPattern.timeFieldName!]: timeValIso, + const anchor = buildDataTableRecord( + { + _index: 't', + _id: '1', + _source: { + [indexPattern.timeFieldName!]: timeValIso, + }, + sort: [timeValNr, tieBreakerValue], }, - sort: [timeValNr, tieBreakerValue], - }; + indexPattern, + true + ); return fetchSurroundingDocs( SurrDocType.SUCCESSORS, indexPattern, - anchor as EsHitRecord, + anchor, tieBreakerField, SortDirection.desc, size, @@ -90,7 +100,9 @@ describe('context successors', function () { return fetchSuccessors(ANCHOR_TIMESTAMP_3000, MS_PER_DAY * 3000, '_doc', 0, 3).then( (hits) => { expect(mockSearchSource.fetch$.calledOnce).toBe(true); - expect(hits).toEqual(mockSearchSource._stubHits.slice(-3)); + expect(hits).toEqual( + buildDataTableRecordList(mockSearchSource._stubHits.slice(-3), indexPattern) + ); } ); }); @@ -120,8 +132,9 @@ describe('context successors', function () { // should have ended with a half-open interval expect(Object.keys(last(intervals) ?? {})).toEqual(['format', 'lte']); expect(intervals.length).toBeGreaterThan(1); - - expect(hits).toEqual(mockSearchSource._stubHits.slice(-3)); + expect(hits).toEqual( + buildDataTableRecordList(mockSearchSource._stubHits.slice(-3), indexPattern) + ); } ); }); @@ -149,8 +162,9 @@ describe('context successors', function () { // should have stopped before reaching MS_PER_DAY * 2200 expect(moment(last(intervals)?.gte).valueOf()).toBeGreaterThan(MS_PER_DAY * 2200); expect(intervals.length).toBeGreaterThan(1); - - expect(hits).toEqual(mockSearchSource._stubHits.slice(0, 4)); + expect(hits).toEqual( + buildDataTableRecordList(mockSearchSource._stubHits.slice(0, 4), indexPattern) + ); } ); }); @@ -194,17 +208,23 @@ describe('context successors', function () { } as unknown as DataPublicPluginStart; fetchSuccessors = (timeValIso, timeValNr, tieBreakerField, tieBreakerValue, size) => { - const anchor = { - _source: { - [indexPattern.timeFieldName!]: timeValIso, + const anchor = buildDataTableRecord( + { + _id: '1', + _index: 'test', + _source: { + [indexPattern.timeFieldName!]: timeValIso, + }, + sort: [timeValNr, tieBreakerValue], }, - sort: [timeValNr, tieBreakerValue], - }; + indexPattern, + true + ); return fetchSurroundingDocs( SurrDocType.SUCCESSORS, indexPattern, - anchor as EsHitRecord, + anchor, tieBreakerField, SortDirection.desc, size, @@ -227,7 +247,9 @@ describe('context successors', function () { return fetchSuccessors(ANCHOR_TIMESTAMP_3000, MS_PER_DAY * 3000, '_doc', 0, 3).then( (hits) => { expect(mockSearchSource.fetch$.calledOnce).toBe(true); - expect(hits).toEqual(mockSearchSource._stubHits.slice(-3)); + expect(hits).toEqual( + buildDataTableRecordList(mockSearchSource._stubHits.slice(-3), indexPattern) + ); const setFieldsSpy = mockSearchSource.setField.withArgs('fields'); const removeFieldsSpy = mockSearchSource.removeField.withArgs('fieldsFromSource'); expect(removeFieldsSpy.calledOnce).toBe(true); diff --git a/src/plugins/discover/public/application/context/services/context.ts b/src/plugins/discover/public/application/context/services/context.ts index 336ca6a21cc33..c2f2b7f765f73 100644 --- a/src/plugins/discover/public/application/context/services/context.ts +++ b/src/plugins/discover/public/application/context/services/context.ts @@ -14,7 +14,7 @@ import { fetchHitsInInterval } from '../utils/fetch_hits_in_interval'; import { generateIntervals } from '../utils/generate_intervals'; import { getEsQuerySearchAfter } from '../utils/get_es_query_search_after'; import { getEsQuerySort } from '../utils/get_es_query_sort'; -import { EsHitRecord, EsHitRecordList } from '../../types'; +import { DataTableRecord } from '../../../types'; export enum SurrDocType { SUCCESSORS = 'successors', @@ -31,7 +31,7 @@ const LOOKUP_OFFSETS = [0, 1, 7, 30, 365, 10000].map((days) => days * DAY_MILLIS * * @param {SurrDocType} type - `successors` or `predecessors` * @param {DataView} indexPattern - * @param {EsHitRecord} anchor - anchor record + * @param {DataTableRecord} anchor - anchor record * @param {string} tieBreakerField - name of the tie breaker, the 2nd sort field * @param {SortDirection} sortDir - direction of sorting * @param {number} size - number of records to retrieve @@ -42,14 +42,14 @@ const LOOKUP_OFFSETS = [0, 1, 7, 30, 365, 10000].map((days) => days * DAY_MILLIS export async function fetchSurroundingDocs( type: SurrDocType, indexPattern: DataView, - anchor: EsHitRecord, + anchor: DataTableRecord, tieBreakerField: string, sortDir: SortDirection, size: number, filters: Filter[], data: DataPublicPluginStart, useNewFieldsApi?: boolean -): Promise { +): Promise { if (typeof anchor !== 'object' || anchor === null || !size) { return []; } @@ -57,13 +57,16 @@ export async function fetchSurroundingDocs( const searchSource = data.search.searchSource.createEmpty(); updateSearchSource(searchSource, indexPattern, filters, Boolean(useNewFieldsApi)); const sortDirToApply = type === SurrDocType.SUCCESSORS ? sortDir : reverseSortDir(sortDir); + const anchorRaw = anchor.raw!; - const nanos = indexPattern.isTimeNanosBased() ? extractNanos(anchor.fields[timeField][0]) : ''; + const nanos = indexPattern.isTimeNanosBased() + ? extractNanos(anchorRaw.fields?.[timeField][0]) + : ''; const timeValueMillis = - nanos !== '' ? convertIsoToMillis(anchor.fields[timeField][0]) : anchor.sort[0]; + nanos !== '' ? convertIsoToMillis(anchorRaw.fields?.[timeField][0]) : anchorRaw.sort?.[0]; const intervals = generateIntervals(LOOKUP_OFFSETS, timeValueMillis as number, type, sortDir); - let documents: EsHitRecordList = []; + let documents: DataTableRecord[] = []; for (const interval of intervals) { const remainingSize = size - documents.length; @@ -92,7 +95,7 @@ export async function fetchSurroundingDocs( searchAfter, remainingSize, nanos, - anchor._id + anchor.raw._id ); documents = diff --git a/src/plugins/discover/public/application/context/services/context_query_state.ts b/src/plugins/discover/public/application/context/services/context_query_state.ts index 3a6a4c0959ea6..611c7666b52fb 100644 --- a/src/plugins/discover/public/application/context/services/context_query_state.ts +++ b/src/plugins/discover/public/application/context/services/context_query_state.ts @@ -6,21 +6,21 @@ * Side Public License, v 1. */ -import { EsHitRecord, EsHitRecordList } from '../../types'; +import { DataTableRecord } from '../../../types'; export interface ContextFetchState { /** * Documents listed before anchor */ - predecessors: EsHitRecordList; + predecessors: DataTableRecord[]; /** * Documents after anchor */ - successors: EsHitRecordList; + successors: DataTableRecord[]; /** * Anchor document */ - anchor: EsHitRecord; + anchor: DataTableRecord; /** * Anchor fetch status */ @@ -54,7 +54,7 @@ export interface LoadingStatusEntry { } export const getInitialContextQueryState = (): ContextFetchState => ({ - anchor: {} as EsHitRecord, + anchor: {} as DataTableRecord, predecessors: [], successors: [], anchorStatus: { value: LoadingStatus.UNINITIALIZED }, diff --git a/src/plugins/discover/public/application/context/utils/fetch_hits_in_interval.ts b/src/plugins/discover/public/application/context/utils/fetch_hits_in_interval.ts index 3547127c1ab8c..cd805a5e4f1a6 100644 --- a/src/plugins/discover/public/application/context/utils/fetch_hits_in_interval.ts +++ b/src/plugins/discover/public/application/context/utils/fetch_hits_in_interval.ts @@ -7,10 +7,11 @@ */ import { lastValueFrom } from 'rxjs'; import { ISearchSource, EsQuerySortValue, SortDirection } from '@kbn/data-plugin/public'; +import { EsQuerySearchAfter } from '@kbn/data-plugin/common'; +import { buildDataTableRecord } from '../../../utils/build_data_record'; import { convertTimeValueToIso } from './date_conversion'; import { IntervalValue } from './generate_intervals'; -import { EsQuerySearchAfter } from './get_es_query_search_after'; -import { EsHitRecord, EsHitRecordList } from '../../types'; +import type { DataTableRecord } from '../../../types'; interface RangeQuery { format: string; @@ -35,7 +36,7 @@ export async function fetchHitsInInterval( maxCount: number, nanosValue: string, anchorId: string -): Promise { +): Promise { const range: RangeQuery = { format: 'strict_date_optional_time', }; @@ -77,7 +78,8 @@ export async function fetchHitsInInterval( .fetch$(); const { rawResponse } = await lastValueFrom(fetch$); + const dataView = searchSource.getField('index'); + const records = rawResponse.hits?.hits.map((hit) => buildDataTableRecord(hit, dataView!)); - // TODO: There's a difference in the definition of SearchResponse and EsHitRecord - return (rawResponse.hits?.hits as unknown as EsHitRecord[]) || []; + return records ?? []; } diff --git a/src/plugins/discover/public/application/context/utils/get_es_query_search_after.ts b/src/plugins/discover/public/application/context/utils/get_es_query_search_after.ts index 85a68376fe43b..bfec54c61e856 100644 --- a/src/plugins/discover/public/application/context/utils/get_es_query_search_after.ts +++ b/src/plugins/discover/public/application/context/utils/get_es_query_search_after.ts @@ -5,11 +5,9 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ - +import type { EsQuerySearchAfter } from '@kbn/data-plugin/common'; import { SurrDocType } from '../services/context'; -import { EsHitRecord, EsHitRecordList } from '../../types'; - -export type EsQuerySearchAfter = [string | number, string | number]; +import type { DataTableRecord } from '../../../types'; /** * Get the searchAfter query value for elasticsearch @@ -19,9 +17,9 @@ export type EsQuerySearchAfter = [string | number, string | number]; */ export function getEsQuerySearchAfter( type: SurrDocType, - documents: EsHitRecordList, + documents: DataTableRecord[], timeFieldName: string, - anchor: EsHitRecord, + anchor: DataTableRecord, nanoSeconds: string, useNewFieldsApi?: boolean ): EsQuerySearchAfter { @@ -30,23 +28,24 @@ export function getEsQuerySearchAfter( const afterTimeRecIdx = type === SurrDocType.SUCCESSORS && documents.length ? documents.length - 1 : 0; const afterTimeDoc = documents[afterTimeRecIdx]; - let afterTimeValue = afterTimeDoc.sort[0] as string | number; + const afterTimeDocRaw = afterTimeDoc.raw; + let afterTimeValue = afterTimeDocRaw.sort?.[0] as string | number; if (nanoSeconds) { afterTimeValue = useNewFieldsApi - ? afterTimeDoc.fields[timeFieldName][0] - : afterTimeDoc._source?.[timeFieldName]; + ? afterTimeDocRaw.fields?.[timeFieldName][0] + : afterTimeDocRaw._source?.[timeFieldName]; } - return [afterTimeValue, afterTimeDoc.sort[1] as string | number]; + return [afterTimeValue, afterTimeDoc.raw.sort?.[1] as string | number]; } // if data_nanos adapt timestamp value for sorting, since numeric value was rounded by browser // ES search_after also works when number is provided as string const searchAfter = new Array(2) as EsQuerySearchAfter; - searchAfter[0] = anchor.sort[0] as string | number; + searchAfter[0] = anchor.raw.sort?.[0] as string | number; if (nanoSeconds) { searchAfter[0] = useNewFieldsApi - ? anchor.fields[timeFieldName][0] - : anchor._source?.[timeFieldName]; + ? anchor.raw.fields?.[timeFieldName][0] + : anchor.raw._source?.[timeFieldName]; } - searchAfter[1] = anchor.sort[1] as string | number; + searchAfter[1] = anchor.raw.sort?.[1] as string | number; return searchAfter; } diff --git a/src/plugins/discover/public/application/main/components/layout/discover_documents.test.tsx b/src/plugins/discover/public/application/main/components/layout/discover_documents.test.tsx index 01d5aae129a72..b76b6d6a1ce07 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_documents.test.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_documents.test.tsx @@ -18,12 +18,13 @@ import { discoverServiceMock } from '../../../../__mocks__/services'; import { FetchStatus } from '../../../types'; import { DiscoverDocuments } from './discover_documents'; import { indexPatternMock } from '../../../../__mocks__/index_pattern'; -import { ElasticSearchHit } from '../../../../types'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { buildDataTableRecord } from '../../../../utils/build_data_record'; +import { EsHitRecord } from '../../../../types'; setHeaderActionMenuMounter(jest.fn()); -function mountComponent(fetchStatus: FetchStatus, hits: ElasticSearchHit[]) { +function mountComponent(fetchStatus: FetchStatus, hits: EsHitRecord[]) { const services = discoverServiceMock; services.data.query.timefilter.timefilter.getTime = () => { return { from: '2020-05-14T11:05:13.590', to: '2020-05-14T11:20:13.590' }; @@ -31,7 +32,7 @@ function mountComponent(fetchStatus: FetchStatus, hits: ElasticSearchHit[]) { const documents$ = new BehaviorSubject({ fetchStatus, - result: hits, + result: hits.map((hit) => buildDataTableRecord(hit, indexPatternMock)), }) as DataDocuments$; const props = { @@ -62,13 +63,13 @@ describe('Discover documents layout', () => { }); test('render complete when loading but documents were already fetched', () => { - const component = mountComponent(FetchStatus.LOADING, esHits as ElasticSearchHit[]); + const component = mountComponent(FetchStatus.LOADING, esHits); expect(component.find('.dscDocuments__loading').exists()).toBeFalsy(); expect(component.find('.dscTable').exists()).toBeTruthy(); }); test('render complete', () => { - const component = mountComponent(FetchStatus.COMPLETE, esHits as ElasticSearchHit[]); + const component = mountComponent(FetchStatus.COMPLETE, esHits); expect(component.find('.dscDocuments__loading').exists()).toBeFalsy(); expect(component.find('.dscTable').exists()).toBeTruthy(); }); diff --git a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx index 530118cb8f1c9..3dbf313fcc7c7 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx @@ -32,10 +32,10 @@ import { AppState, GetStateReturn } from '../../services/discover_state'; import { useDataState } from '../../hooks/use_data_state'; import { DocTableInfinite } from '../../../../components/doc_table/doc_table_infinite'; import { SortPairArr } from '../../../../components/doc_table/utils/get_sort'; -import { ElasticSearchHit } from '../../../../types'; import { DocumentExplorerCallout } from '../document_explorer_callout'; import { DocumentExplorerUpdateCallout } from '../document_explorer_callout/document_explorer_update_callout'; import { DiscoverTourProvider } from '../../../../components/discover_tour'; +import { DataTableRecord } from '../../../../types'; const DocTableInfiniteMemoized = React.memo(DocTableInfinite); const DataGridMemoized = React.memo(DiscoverGrid); @@ -51,12 +51,12 @@ function DiscoverDocumentsComponent({ stateContainer, }: { documents$: DataDocuments$; - expandedDoc?: ElasticSearchHit; + expandedDoc?: DataTableRecord; indexPattern: DataView; navigateTo: (url: string) => void; onAddFilter: DocViewFilterFn; savedSearch: SavedSearch; - setExpandedDoc: (doc?: ElasticSearchHit) => void; + setExpandedDoc: (doc?: DataTableRecord) => void; state: AppState; stateContainer: GetStateReturn; }) { diff --git a/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx b/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx index 1025270dab355..4aff6e2a78070 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_layout.test.tsx @@ -32,10 +32,10 @@ import { FetchStatus } from '../../../types'; import { RequestAdapter } from '@kbn/inspector-plugin'; import { Chart } from '../chart/point_series'; import { DiscoverSidebar } from '../sidebar/discover_sidebar'; -import { ElasticSearchHit } from '../../../../types'; import { LocalStorageMock } from '../../../../__mocks__/local_storage_mock'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { DiscoverServices } from '../../../../build_services'; +import { buildDataTableRecord } from '../../../../utils/build_data_record'; setHeaderActionMenuMounter(jest.fn()); @@ -66,7 +66,7 @@ function mountComponent( const documents$ = new BehaviorSubject({ fetchStatus: FetchStatus.COMPLETE, - result: esHits as ElasticSearchHit[], + result: esHits.map((esHit) => buildDataTableRecord(esHit, indexPattern)), }) as DataDocuments$; const availableFields$ = new BehaviorSubject({ diff --git a/src/plugins/discover/public/application/main/components/layout/types.ts b/src/plugins/discover/public/application/main/components/layout/types.ts index e7bcfb3bc3971..f381f87c7389d 100644 --- a/src/plugins/discover/public/application/main/components/layout/types.ts +++ b/src/plugins/discover/public/application/main/components/layout/types.ts @@ -11,10 +11,10 @@ import type { SavedObject } from '@kbn/data-plugin/public'; import type { DataView, DataViewAttributes } from '@kbn/data-views-plugin/public'; import { ISearchSource } from '@kbn/data-plugin/public'; import { RequestAdapter } from '@kbn/inspector-plugin'; +import { DataTableRecord } from '../../../../types'; import { AppState, GetStateReturn } from '../../services/discover_state'; import { DataRefetch$, SavedSearchData } from '../../hooks/use_saved_search'; import { SavedSearch } from '../../../../services/saved_searches'; -import { ElasticSearchHit } from '../../../../types'; export interface DiscoverLayoutProps { indexPattern: DataView; @@ -24,8 +24,8 @@ export interface DiscoverLayoutProps { onChangeIndexPattern: (id: string) => void; onUpdateQuery: (payload: { dateRange: TimeRange; query?: Query }, isUpdate?: boolean) => void; resetSavedSearch: () => void; - expandedDoc?: ElasticSearchHit; - setExpandedDoc: (doc?: ElasticSearchHit) => void; + expandedDoc?: DataTableRecord; + setExpandedDoc: (doc?: DataTableRecord) => void; savedSearch: SavedSearch; savedSearchData$: SavedSearchData; savedSearchRefetch$: DataRefetch$; diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.test.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.test.tsx index 34cfde26ff32c..2bbd2e579f4aa 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.test.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.test.tsx @@ -5,18 +5,13 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ - -import { cloneDeep, each } from 'lodash'; import { ReactWrapper } from 'enzyme'; import { findTestSubject } from '@elastic/eui/lib/test'; import { Action } from '@kbn/ui-actions-plugin/public'; -// @ts-expect-error -import realHits from '../../../../__fixtures__/real_hits'; - +import { getDataTableRecords } from '../../../../__fixtures__/real_hits'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import React from 'react'; import { DiscoverSidebarProps } from './discover_sidebar'; -import { flattenHit } from '@kbn/data-plugin/public'; import { DataViewAttributes } from '@kbn/data-views-plugin/public'; import { SavedObject } from '@kbn/core/types'; import { getDefaultFieldFilter } from './lib/field_filter'; @@ -24,7 +19,6 @@ import { DiscoverSidebarComponent as DiscoverSidebar } from './discover_sidebar' import { discoverServiceMock as mockDiscoverServices } from '../../../../__mocks__/services'; import { stubLogstashIndexPattern } from '@kbn/data-plugin/common/stubs'; import { VIEW_MODE } from '../../../../components/view_mode_toggle'; -import { ElasticSearchHit } from '../../../../types'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { BehaviorSubject } from 'rxjs'; import { FetchStatus } from '../../../types'; @@ -42,9 +36,7 @@ jest.mock('../../../../kibana_services', () => ({ function getCompProps(): DiscoverSidebarProps { const indexPattern = stubLogstashIndexPattern; - const hits = each(cloneDeep(realHits), (hit) => - flattenHit(hit, indexPattern) - ) as unknown as ElasticSearchHit[]; + const hits = getDataTableRecords(indexPattern); const indexPatternList = [ { id: '0', attributes: { title: 'b' } } as SavedObject, @@ -55,7 +47,7 @@ function getCompProps(): DiscoverSidebarProps { const fieldCounts: Record = {}; for (const hit of hits) { - for (const key of Object.keys(flattenHit(hit, indexPattern))) { + for (const key of Object.keys(hit.flattened)) { fieldCounts[key] = (fieldCounts[key] || 0) + 1; } } diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx index 0141aead76eff..5ce3ad6cd147d 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar.tsx @@ -40,7 +40,7 @@ import { getIndexPatternFieldList } from './lib/get_index_pattern_field_list'; import { DiscoverSidebarResponsiveProps } from './discover_sidebar_responsive'; import { VIEW_MODE } from '../../../../components/view_mode_toggle'; import { DISCOVER_TOUR_STEP_ANCHOR_IDS } from '../../../../components/discover_tour'; -import { ElasticSearchHit } from '../../../../types'; +import type { DataTableRecord } from '../../../../types'; /** * Default number of available fields displayed and added on scroll @@ -88,7 +88,7 @@ export interface DiscoverSidebarProps extends Omit ({ function getCompProps(): DiscoverSidebarResponsiveProps { const indexPattern = stubLogstashIndexPattern; - const hits = each(cloneDeep(realHits), (hit) => - flattenHit(hit, indexPattern) - ) as unknown as ElasticSearchHit[]; + const hits = getDataTableRecords(indexPattern); const indexPatternList = [ { id: '0', attributes: { title: 'b' } } as SavedObject, @@ -90,7 +84,7 @@ function getCompProps(): DiscoverSidebarResponsiveProps { ]; for (const hit of hits) { - for (const key of Object.keys(flattenHit(hit, indexPattern))) { + for (const key of Object.keys(hit.flattened)) { mockfieldCounts[key] = (mockfieldCounts[key] || 0) + 1; } } @@ -99,7 +93,7 @@ function getCompProps(): DiscoverSidebarResponsiveProps { columns: ['extension'], documents$: new BehaviorSubject({ fetchStatus: FetchStatus.COMPLETE, - result: hits as ElasticSearchHit[], + result: hits, }) as DataDocuments$, availableFields$: new BehaviorSubject({ fetchStatus: FetchStatus.COMPLETE, diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx index c6d8d05a23ad8..e4134184306fa 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_sidebar_responsive.tsx @@ -123,7 +123,10 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) */ const fieldCounts = useRef | null>(null); if (fieldCounts.current === null) { - fieldCounts.current = calcFieldCounts(props.documents$.getValue().result, selectedIndexPattern); + fieldCounts.current = calcFieldCounts( + props.documents$.getValue().result!, + selectedIndexPattern + ); } const [documentState, setDocumentState] = useState(props.documents$.getValue()); @@ -266,7 +269,7 @@ export function DiscoverSidebarResponsive(props: DiscoverSidebarResponsiveProps) flattenHit(hit, dataView)); + hits = getDataTableRecords(dataView); }); it('Should return an array of values for _source fields', function () { @@ -153,7 +149,7 @@ describe('fieldCalculator', function () { let params: { hits: any; field: any; count: number; dataView: DataView }; beforeEach(function () { params = { - hits: cloneDeep(realHits), + hits: getDataTableRecords(dataView), field: dataView.fields.getByName('extension'), count: 3, dataView, diff --git a/src/plugins/discover/public/application/main/components/sidebar/lib/get_details.ts b/src/plugins/discover/public/application/main/components/sidebar/lib/get_details.ts index 78e752494c43d..99ab866a53491 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/lib/get_details.ts +++ b/src/plugins/discover/public/application/main/components/sidebar/lib/get_details.ts @@ -9,11 +9,11 @@ import { DataView, DataViewField } from '@kbn/data-views-plugin/public'; // @ts-expect-error import { fieldCalculator } from './field_calculator'; -import { ElasticSearchHit } from '../../../../../types'; +import { DataTableRecord } from '../../../../../types'; export function getDetails( field: DataViewField, - hits: ElasticSearchHit[] | undefined, + hits: DataTableRecord[] | undefined, columns: string[], indexPattern?: DataView ) { @@ -24,7 +24,6 @@ export function getDetails( ...fieldCalculator.getFieldValueCounts({ hits, field, - indexPattern, count: 5, grouped: false, }), diff --git a/src/plugins/discover/public/application/main/discover_main_app.tsx b/src/plugins/discover/public/application/main/discover_main_app.tsx index ae477719af119..6025c27a0c433 100644 --- a/src/plugins/discover/public/application/main/discover_main_app.tsx +++ b/src/plugins/discover/public/application/main/discover_main_app.tsx @@ -15,8 +15,8 @@ import { addHelpMenuToAppChrome } from '../../components/help_menu/help_menu_uti import { useDiscoverState } from './hooks/use_discover_state'; import { useUrl } from './hooks/use_url'; import { SavedSearch } from '../../services/saved_searches'; -import { ElasticSearchHit } from '../../types'; import { useDiscoverServices } from '../../hooks/use_discover_services'; +import { DataTableRecord } from '../../types'; const DiscoverLayoutMemoized = React.memo(DiscoverLayout); @@ -36,7 +36,7 @@ export function DiscoverMainApp(props: DiscoverMainProps) { const services = useDiscoverServices(); const { chrome, docLinks, uiSettings: config, data } = services; const history = useHistory(); - const [expandedDoc, setExpandedDoc] = useState(undefined); + const [expandedDoc, setExpandedDoc] = useState(undefined); const navigateTo = useCallback( (path: string) => { history.push(path); diff --git a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts index ab481f2f67a50..2d82e12824f04 100644 --- a/src/plugins/discover/public/application/main/hooks/use_discover_state.ts +++ b/src/plugins/discover/public/application/main/hooks/use_discover_state.ts @@ -24,7 +24,7 @@ import { useSearchSession } from './use_search_session'; import { FetchStatus } from '../../types'; import { getSwitchIndexPatternAppState } from '../utils/get_switch_index_pattern_app_state'; import { SortPairArr } from '../../../components/doc_table/utils/get_sort'; -import { ElasticSearchHit } from '../../../types'; +import { DataTableRecord } from '../../../types'; export function useDiscoverState({ services, @@ -35,7 +35,7 @@ export function useDiscoverState({ services: DiscoverServices; savedSearch: SavedSearch; history: History; - setExpandedDoc: (doc?: ElasticSearchHit) => void; + setExpandedDoc: (doc?: DataTableRecord) => void; }) { const { uiSettings: config, data, filterManager, indexPatterns, storage } = services; const useNewFieldsApi = useMemo(() => !config.get(SEARCH_FIELDS_FROM_SOURCE), [config]); diff --git a/src/plugins/discover/public/application/main/hooks/use_saved_search.ts b/src/plugins/discover/public/application/main/hooks/use_saved_search.ts index d4d6b869c7ee7..0cfa1b2e97579 100644 --- a/src/plugins/discover/public/application/main/hooks/use_saved_search.ts +++ b/src/plugins/discover/public/application/main/hooks/use_saved_search.ts @@ -7,9 +7,9 @@ */ import { useCallback, useEffect, useMemo, useRef } from 'react'; import { BehaviorSubject, Subject } from 'rxjs'; +import type { AutoRefreshDoneFn } from '@kbn/data-plugin/public'; import { ISearchSource } from '@kbn/data-plugin/public'; import { RequestAdapter } from '@kbn/inspector-plugin/public'; -import type { AutoRefreshDoneFn } from '@kbn/data-plugin/public'; import { DiscoverServices } from '../../../build_services'; import { DiscoverSearchSessionManager } from '../services/discover_search_session'; import { GetStateReturn } from '../services/discover_state'; @@ -17,13 +17,12 @@ import { validateTimeRange } from '../utils/validate_time_range'; import { Chart } from '../components/chart/point_series'; import { useSingleton } from './use_singleton'; import { FetchStatus } from '../../types'; - import { fetchAll } from '../utils/fetch_all'; import { useBehaviorSubject } from './use_behavior_subject'; import { sendResetMsg } from './use_saved_search_messages'; import { getFetch$ } from '../utils/get_fetch_observable'; -import { ElasticSearchHit } from '../../../types'; import { SavedSearch } from '../../../services/saved_searches'; +import type { DataTableRecord } from '../../../types'; export interface SavedSearchData { main$: DataMain$; @@ -66,7 +65,7 @@ export interface DataMainMsg extends DataMsg { } export interface DataDocumentsMsg extends DataMsg { - result?: ElasticSearchHit[]; + result?: DataTableRecord[]; } export interface DataTotalHitsMsg extends DataMsg { diff --git a/src/plugins/discover/public/application/main/utils/calc_field_counts.test.ts b/src/plugins/discover/public/application/main/utils/calc_field_counts.test.ts index 2ed564194bd25..1534dbf6aad4d 100644 --- a/src/plugins/discover/public/application/main/utils/calc_field_counts.test.ts +++ b/src/plugins/discover/public/application/main/utils/calc_field_counts.test.ts @@ -8,19 +8,17 @@ import { calcFieldCounts } from './calc_field_counts'; import { indexPatternMock } from '../../../__mocks__/index_pattern'; -import { ElasticSearchHit } from '../../../types'; +import { buildDataTableRecord } from '../../../utils/build_data_record'; describe('calcFieldCounts', () => { test('returns valid field count data', async () => { const rows = [ - { _id: 1, _source: { message: 'test1', bytes: 20 } }, - { _id: 2, _source: { name: 'test2', extension: 'jpg' } }, - ] as unknown as ElasticSearchHit[]; + { _id: '1', _index: 'test', _source: { message: 'test1', bytes: 20 } }, + { _id: '2', _index: 'test', _source: { name: 'test2', extension: 'jpg' } }, + ].map((row) => buildDataTableRecord(row)); const result = calcFieldCounts(rows, indexPatternMock); expect(result).toMatchInlineSnapshot(` Object { - "_index": 2, - "_score": 2, "bytes": 1, "extension": 1, "message": 1, @@ -30,14 +28,12 @@ describe('calcFieldCounts', () => { }); test('updates field count data', async () => { const rows = [ - { _id: 1, _source: { message: 'test1', bytes: 20 } }, - { _id: 2, _source: { name: 'test2', extension: 'jpg' } }, - ] as unknown as ElasticSearchHit[]; + { _id: '1', _index: 'test', _source: { message: 'test1', bytes: 20 } }, + { _id: '2', _index: 'test', _source: { name: 'test2', extension: 'jpg' } }, + ].map((row) => buildDataTableRecord(row)); const result = calcFieldCounts(rows, indexPatternMock); expect(result).toMatchInlineSnapshot(` Object { - "_index": 2, - "_score": 2, "bytes": 1, "extension": 1, "message": 1, diff --git a/src/plugins/discover/public/application/main/utils/calc_field_counts.ts b/src/plugins/discover/public/application/main/utils/calc_field_counts.ts index cf2b5d7a880b3..5112625ba12b9 100644 --- a/src/plugins/discover/public/application/main/utils/calc_field_counts.ts +++ b/src/plugins/discover/public/application/main/utils/calc_field_counts.ts @@ -6,20 +6,19 @@ * Side Public License, v 1. */ import { DataView } from '@kbn/data-views-plugin/public'; -import { flattenHit } from '@kbn/data-plugin/public'; -import { ElasticSearchHit } from '../../../types'; +import { DataTableRecord } from '../../../types'; /** * This function is calculating stats of the available fields, for usage in sidebar and sharing * Note that this values aren't displayed, but used for internal calculations */ -export function calcFieldCounts(rows?: ElasticSearchHit[], indexPattern?: DataView) { +export function calcFieldCounts(rows?: DataTableRecord[], indexPattern?: DataView) { const counts: Record = {}; if (!rows || !indexPattern) { return {}; } for (const hit of rows) { - const fields = Object.keys(flattenHit(hit, indexPattern, { includeIgnoredValues: true })); + const fields = Object.keys(hit.flattened); for (const fieldName of fields) { counts[fieldName] = (counts[fieldName] || 0) + 1; } diff --git a/src/plugins/discover/public/application/main/utils/fetch_all.test.ts b/src/plugins/discover/public/application/main/utils/fetch_all.test.ts index d372f921f9976..e33d931c571da 100644 --- a/src/plugins/discover/public/application/main/utils/fetch_all.test.ts +++ b/src/plugins/discover/public/application/main/utils/fetch_all.test.ts @@ -27,6 +27,8 @@ import { import { fetchDocuments } from './fetch_documents'; import { fetchChart } from './fetch_chart'; import { fetchTotalHits } from './fetch_total_hits'; +import { indexPatternMock } from '../../../__mocks__/index_pattern'; +import { buildDataTableRecord } from '../../../utils/build_data_record'; jest.mock('./fetch_documents', () => ({ fetchDocuments: jest.fn().mockResolvedValue([]), @@ -119,7 +121,10 @@ describe('test fetchAll', () => { expect(await collect()).toEqual([ { fetchStatus: FetchStatus.UNINITIALIZED }, { fetchStatus: FetchStatus.LOADING }, - { fetchStatus: FetchStatus.COMPLETE, result: hits }, + { + fetchStatus: FetchStatus.COMPLETE, + result: hits.map((hit) => buildDataTableRecord(hit, indexPatternMock)), + }, ]); }); diff --git a/src/plugins/discover/public/application/main/utils/fetch_all.ts b/src/plugins/discover/public/application/main/utils/fetch_all.ts index 1d5d4646445a5..655027dddbf1e 100644 --- a/src/plugins/discover/public/application/main/utils/fetch_all.ts +++ b/src/plugins/discover/public/application/main/utils/fetch_all.ts @@ -5,11 +5,11 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { ISearchSource } from '@kbn/data-plugin/public'; +import { DataPublicPluginStart, ISearchSource } from '@kbn/data-plugin/public'; import { Adapters } from '@kbn/inspector-plugin'; -import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { ReduxLikeStateContainer } from '@kbn/kibana-utils-plugin/common'; import { DataViewType } from '@kbn/data-views-plugin/public'; +import { buildDataTableRecord } from '../../../utils/build_data_record'; import { sendCompleteMsg, sendErrorMsg, @@ -45,6 +45,7 @@ export interface FetchDeps { services: DiscoverServices; useNewFieldsApi: boolean; } + /** * This function starts fetching all required queries in Discover. This will be the query to load the individual * documents, and depending on whether a chart is shown either the aggregation query to load the chart data @@ -139,10 +140,13 @@ export function fetchAll( result: docs.length, }); } + const dataView = searchSource.getField('index')!; + + const resultDocs = docs.map((doc) => buildDataTableRecord(doc, dataView)); dataSubjects.documents$.next({ fetchStatus: FetchStatus.COMPLETE, - result: docs, + result: resultDocs, }); checkHitCount(docs.length); diff --git a/src/plugins/discover/public/application/main/utils/fetch_chart.ts b/src/plugins/discover/public/application/main/utils/fetch_chart.ts index 5117bffe5c9b8..da1a071a18d4b 100644 --- a/src/plugins/discover/public/application/main/utils/fetch_chart.ts +++ b/src/plugins/discover/public/application/main/utils/fetch_chart.ts @@ -28,14 +28,7 @@ interface Result { export function fetchChart( searchSource: ISearchSource, - { - abortController, - appStateContainer, - data, - inspectorAdapters, - searchSessionId, - savedSearch, - }: FetchDeps + { abortController, appStateContainer, data, inspectorAdapters, searchSessionId }: FetchDeps ): Promise { const interval = appStateContainer.getState().interval ?? 'auto'; const chartAggConfigs = updateSearchSource(searchSource, interval, data); diff --git a/src/plugins/discover/public/application/main/utils/fetch_documents.ts b/src/plugins/discover/public/application/main/utils/fetch_documents.ts index d652f544a8f70..e09875d11deb6 100644 --- a/src/plugins/discover/public/application/main/utils/fetch_documents.ts +++ b/src/plugins/discover/public/application/main/utils/fetch_documents.ts @@ -18,7 +18,7 @@ import { FetchDeps } from './fetch_all'; */ export const fetchDocuments = ( searchSource: ISearchSource, - { abortController, inspectorAdapters, searchSessionId, services, savedSearch }: FetchDeps + { abortController, inspectorAdapters, searchSessionId, services }: FetchDeps ) => { searchSource.setField('size', services.uiSettings.get(SAMPLE_SIZE_SETTING)); searchSource.setField('trackTotalHits', false); diff --git a/src/plugins/discover/public/application/types.ts b/src/plugins/discover/public/application/types.ts index f04f3bf77c2f9..798e0f350cc5f 100644 --- a/src/plugins/discover/public/application/types.ts +++ b/src/plugins/discover/public/application/types.ts @@ -5,7 +5,6 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; export enum FetchStatus { UNINITIALIZED = 'uninitialized', @@ -14,13 +13,3 @@ export enum FetchStatus { COMPLETE = 'complete', ERROR = 'error', } - -export type EsHitRecord = Required< - Pick -> & { - _source?: Record; - _score?: number; - // note that this a special property for Discover Context, to determine the anchor record - isAnchor?: boolean; -}; -export type EsHitRecordList = EsHitRecord[]; diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid.test.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid.test.tsx index c5ac7335b69c2..876ffadfed433 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid.test.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid.test.tsx @@ -14,10 +14,11 @@ import { esHits } from '../../__mocks__/es_hits'; import { indexPatternMock } from '../../__mocks__/index_pattern'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import { DiscoverGrid, DiscoverGridProps } from './discover_grid'; -import { getDocId } from './discover_grid_document_selection'; -import { ElasticSearchHit } from '../../types'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { discoverServiceMock } from '../../__mocks__/services'; +import { buildDataTableRecord } from '../../utils/build_data_record'; +import { getDocId } from '../../utils/get_doc_id'; +import { EsHitRecord } from '../../types'; function getProps() { return { @@ -32,7 +33,7 @@ function getProps() { onResize: jest.fn(), onSetColumns: jest.fn(), onSort: jest.fn(), - rows: esHits, + rows: esHits.map((hit) => buildDataTableRecord(hit, indexPatternMock)), sampleSize: 30, searchDescription: '', searchTitle: '', @@ -74,7 +75,7 @@ function getDisplayedDocNr(component: ReactWrapper) { async function toggleDocSelection( component: ReactWrapper, - document: ElasticSearchHit + document: EsHitRecord ) { act(() => { const docId = getDocId(document); @@ -146,7 +147,7 @@ describe('DiscoverGrid', () => { bytes: 50, }, }, - ], + ].map((row) => buildDataTableRecord(row, indexPatternMock)), }); expect(getDisplayedDocNr(component)).toBe(1); expect(getSelectedDocNr(component)).toBe(0); diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid.tsx index 48fd2ba656746..5b60a92110320 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid.tsx @@ -23,7 +23,6 @@ import { EuiLink, } from '@elastic/eui'; import type { DataView } from '@kbn/data-views-plugin/public'; -import { flattenHit } from '@kbn/data-plugin/public'; import { DocViewFilterFn } from '../../services/doc_views/doc_views_types'; import { getSchemaDetectors } from './discover_grid_schema'; import { DiscoverGridFlyout } from './discover_grid_flyout'; @@ -48,10 +47,10 @@ import { MAX_DOC_FIELDS_DISPLAYED, SHOW_MULTIFIELDS, } from '../../../common'; -import { DiscoverGridDocumentToolbarBtn, getDocId } from './discover_grid_document_selection'; +import { DiscoverGridDocumentToolbarBtn } from './discover_grid_document_selection'; import { SortPairArr } from '../doc_table/utils/get_sort'; import { getFieldsToShow } from '../../utils/get_fields_to_show'; -import type { ElasticSearchHit, ValueToStringConverter } from '../../types'; +import type { DataTableRecord, ValueToStringConverter } from '../../types'; import { useRowHeightsOptions } from '../../hooks/use_row_heights_options'; import { useDiscoverServices } from '../../hooks/use_discover_services'; import { convertValueToString } from '../../utils/convert_value_to_string'; @@ -77,7 +76,7 @@ export interface DiscoverGridProps { /** * If set, the given document is displayed in a flyout */ - expandedDoc?: ElasticSearchHit; + expandedDoc?: DataTableRecord; /** * The used index pattern */ @@ -114,7 +113,7 @@ export interface DiscoverGridProps { /** * Array of documents provided by Elasticsearch */ - rows?: ElasticSearchHit[]; + rows?: DataTableRecord[]; /** * The max size of the documents returned by Elasticsearch */ @@ -122,7 +121,7 @@ export interface DiscoverGridProps { /** * Function to set the expanded document, which is displayed in a flyout */ - setExpandedDoc: (doc?: ElasticSearchHit) => void; + setExpandedDoc: (doc?: DataTableRecord) => void; /** * Grid display settings persisted in Elasticsearch (e.g. column width) */ @@ -211,7 +210,7 @@ export const DiscoverGrid = ({ if (!selectedDocs.length || !rows?.length) { return []; } - const idMap = rows.reduce((map, row) => map.set(getDocId(row), true), new Map()); + const idMap = rows.reduce((map, row) => map.set(row.id, true), new Map()); // filter out selected docs that are no longer part of the current data const result = selectedDocs.filter((docId) => idMap.get(docId)); if (result.length === 0 && isFilterActive) { @@ -227,7 +226,7 @@ export const DiscoverGrid = ({ if (!isFilterActive || usedSelectedDocs.length === 0) { return rows; } - const rowsFiltered = rows.filter((row) => usedSelectedDocs.includes(getDocId(row))); + const rowsFiltered = rows.filter((row) => usedSelectedDocs.includes(row.id)); if (!rowsFiltered.length) { // in case the selected docs are no longer part of the sample of 500, show all docs return rows; @@ -235,25 +234,18 @@ export const DiscoverGrid = ({ return rowsFiltered; }, [rows, usedSelectedDocs, isFilterActive]); - const displayedRowsFlattened = useMemo(() => { - return displayedRows.map((hit) => { - return flattenHit(hit, indexPattern, { includeIgnoredValues: true }); - }); - }, [displayedRows, indexPattern]); - const valueToStringConverter: ValueToStringConverter = useCallback( (rowIndex, columnId, options) => { return convertValueToString({ rowIndex, rows: displayedRows, - rowsFlattened: displayedRowsFlattened, dataView: indexPattern, columnId, services, options, }); }, - [displayedRows, displayedRowsFlattened, indexPattern, services] + [displayedRows, indexPattern, services] ); /** @@ -314,20 +306,12 @@ export const DiscoverGrid = ({ getRenderCellValueFn( indexPattern, displayedRows, - displayedRowsFlattened, useNewFieldsApi, fieldsToShow, services.uiSettings.get(MAX_DOC_FIELDS_DISPLAYED), () => dataGridRef.current?.closeCellPopover() ), - [ - indexPattern, - displayedRowsFlattened, - displayedRows, - useNewFieldsApi, - fieldsToShow, - services.uiSettings, - ] + [indexPattern, displayedRows, useNewFieldsApi, fieldsToShow, services.uiSettings] ); /** @@ -473,7 +457,6 @@ export const DiscoverGrid = ({ expanded: expandedDoc, setExpanded: setExpandedDoc, rows: displayedRows, - rowsFlattened: displayedRowsFlattened, onFilter, indexPattern, isDarkMode: services.uiSettings.get('theme:darkMode'), diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid_cell_actions.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid_cell_actions.tsx index f7497dd5d459d..055967d6440a2 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid_cell_actions.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid_cell_actions.tsx @@ -20,8 +20,8 @@ function onFilterCell( columnId: EuiDataGridColumnCellActionProps['columnId'], mode: '+' | '-' ) { - const row = context.rowsFlattened[rowIndex]; - const value = String(row[columnId]); + const row = context.rows[rowIndex]; + const value = String(row.flattened[columnId]); const field = context.indexPattern.fields.getByName(columnId); if (value && field) { diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid_context.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid_context.tsx index ca2a0ee5839cb..0761e4c40376e 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid_context.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid_context.tsx @@ -9,13 +9,12 @@ import React from 'react'; import type { DataView } from '@kbn/data-views-plugin/public'; import type { DocViewFilterFn } from '../../services/doc_views/doc_views_types'; -import type { ElasticSearchHit, HitsFlattened, ValueToStringConverter } from '../../types'; +import type { DataTableRecord, ValueToStringConverter } from '../../types'; export interface GridContext { - expanded?: ElasticSearchHit; - setExpanded: (hit?: ElasticSearchHit) => void; - rows: ElasticSearchHit[]; - rowsFlattened: HitsFlattened; + expanded?: DataTableRecord | undefined; + setExpanded: (hit?: DataTableRecord) => void; + rows: DataTableRecord[]; onFilter: DocViewFilterFn; indexPattern: DataView; isDarkMode: boolean; diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid_document_selection.test.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid_document_selection.test.tsx index 5ca7b84789e91..96bc9082d9e0f 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid_document_selection.test.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid_document_selection.test.tsx @@ -8,13 +8,10 @@ import React from 'react'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import { findTestSubject } from '@elastic/eui/lib/test'; -import { - DiscoverGridDocumentToolbarBtn, - getDocId, - SelectButton, -} from './discover_grid_document_selection'; +import { DiscoverGridDocumentToolbarBtn, SelectButton } from './discover_grid_document_selection'; import { discoverGridContextMock } from '../../__mocks__/grid_context'; import { DiscoverGridContext } from './discover_grid_context'; +import { getDocId } from '../../utils/get_doc_id'; describe('document selection', () => { describe('getDocId', () => { diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid_document_selection.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid_document_selection.tsx index efe8784028cbf..c17ff66ac0806 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid_document_selection.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid_document_selection.tsx @@ -5,37 +5,28 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import React, { useCallback, useState, useContext, useMemo, useEffect } from 'react'; +import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react'; import classNames from 'classnames'; import { EuiButtonEmpty, + EuiCheckbox, EuiContextMenuItem, EuiContextMenuPanel, EuiCopy, - EuiPopover, - EuiCheckbox, EuiDataGridCellValueElementProps, + EuiPopover, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { euiLightVars as themeLight, euiDarkVars as themeDark } from '@kbn/ui-theme'; +import { euiDarkVars as themeDark, euiLightVars as themeLight } from '@kbn/ui-theme'; import { i18n } from '@kbn/i18n'; import { DiscoverGridContext } from './discover_grid_context'; -import { ElasticSearchHit } from '../../types'; +import type { DataTableRecord } from '../../types'; -/** - * Returning a generated id of a given ES document, since `_id` can be the same - * when using different indices and shard routing - */ -export const getDocId = (doc: ElasticSearchHit & { _routing?: string }) => { - const routing = doc._routing ? doc._routing : ''; - return [doc._index, doc._id, routing].join('::'); -}; export const SelectButton = ({ rowIndex, setCellProps }: EuiDataGridCellValueElementProps) => { const { selectedDocs, expanded, rows, isDarkMode, setSelectedDocs } = useContext(DiscoverGridContext); const doc = useMemo(() => rows[rowIndex], [rows, rowIndex]); - const id = useMemo(() => getDocId(doc), [doc]); - const checked = useMemo(() => selectedDocs.includes(id), [selectedDocs, id]); + const checked = useMemo(() => selectedDocs.includes(doc.id), [selectedDocs, doc.id]); const toggleDocumentSelectionLabel = i18n.translate('discover.grid.selectDoc', { defaultMessage: `Select document '{rowNumber}'`, @@ -43,7 +34,7 @@ export const SelectButton = ({ rowIndex, setCellProps }: EuiDataGridCellValueEle }); useEffect(() => { - if (expanded && doc && expanded._id === doc._id && expanded._index === doc._index) { + if (expanded && doc && expanded.id === doc.id) { setCellProps({ style: { backgroundColor: isDarkMode ? themeDark.euiColorHighlight : themeLight.euiColorHighlight, @@ -56,16 +47,16 @@ export const SelectButton = ({ rowIndex, setCellProps }: EuiDataGridCellValueEle return ( { if (checked) { - const newSelection = selectedDocs.filter((docId) => docId !== id); + const newSelection = selectedDocs.filter((docId) => docId !== doc.id); setSelectedDocs(newSelection); } else { - setSelectedDocs([...selectedDocs, id]); + setSelectedDocs([...selectedDocs, doc.id]); } }} /> @@ -80,7 +71,7 @@ export function DiscoverGridDocumentToolbarBtn({ setSelectedDocs, }: { isFilterActive: boolean; - rows: ElasticSearchHit[]; + rows: DataTableRecord[]; selectedDocs: string[]; setIsFilterActive: (value: boolean) => void; setSelectedDocs: (value: string[]) => void; @@ -121,7 +112,11 @@ export function DiscoverGridDocumentToolbarBtn({ key="copyJsonWrapper" data-test-subj="dscGridCopySelectedDocumentsJSON" textToCopy={ - rows ? JSON.stringify(rows.filter((row) => selectedDocs.includes(getDocId(row)))) : '' + rows + ? JSON.stringify( + rows.filter((row) => selectedDocs.includes(row.id)).map((row) => row.raw) + ) + : '' } > {(copy) => ( diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid_expand_button.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid_expand_button.tsx index 3a506c063c177..e00e722f9c2e9 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid_expand_button.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid_expand_button.tsx @@ -11,7 +11,6 @@ import { EuiButtonIcon, EuiDataGridCellValueElementProps, EuiToolTip } from '@el import { euiLightVars as themeLight, euiDarkVars as themeDark } from '@kbn/ui-theme'; import { i18n } from '@kbn/i18n'; import { DiscoverGridContext } from './discover_grid_context'; -import { EsHitRecord } from '../../application/types'; import { DISCOVER_TOUR_STEP_ANCHOR_IDS } from '../discover_tour'; /** @@ -21,16 +20,11 @@ export const ExpandButton = ({ rowIndex, setCellProps }: EuiDataGridCellValueEle const { expanded, setExpanded, rows, isDarkMode } = useContext(DiscoverGridContext); const current = rows[rowIndex]; useEffect(() => { - if ((current as EsHitRecord).isAnchor) { + if (current.isAnchor) { setCellProps({ className: 'dscDocsGrid__cell--highlight', }); - } else if ( - expanded && - current && - expanded._id === current._id && - expanded._index === current._index - ) { + } else if (expanded && current && expanded.id === current.id) { setCellProps({ style: { backgroundColor: isDarkMode ? themeDark.euiColorHighlight : themeLight.euiColorHighlight, @@ -46,7 +40,7 @@ export const ExpandButton = ({ rowIndex, setCellProps }: EuiDataGridCellValueEle defaultMessage: 'Toggle dialog with details', }); - const testSubj = (current as EsHitRecord).isAnchor + const testSubj = current.isAnchor ? 'docTableExpandToggleColumnAnchor' : 'docTableExpandToggleColumn'; diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid_flyout.test.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid_flyout.test.tsx index 6452349bbdc77..5b4d4d3109e19 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid_flyout.test.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid_flyout.test.tsx @@ -19,7 +19,8 @@ import { setDocViewsRegistry } from '../../kibana_services'; import { indexPatternWithTimefieldMock } from '../../__mocks__/index_pattern_with_timefield'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/public'; -import type { ElasticSearchHit } from '../../types'; +import type { DataTableRecord, EsHitRecord } from '../../types'; +import { buildDataTableRecord } from '../../utils/build_data_record'; describe('Discover flyout', function () { setDocViewsRegistry(new DocViewsRegistry()); @@ -30,7 +31,7 @@ describe('Discover flyout', function () { hitIndex, }: { indexPattern?: DataView; - hits?: ElasticSearchHit[]; + hits?: DataTableRecord[]; hitIndex?: number; }) => { const onClose = jest.fn(); @@ -40,11 +41,20 @@ describe('Discover flyout', function () { history: () => ({ location: {} }), } as unknown as DiscoverServices; + const hit = buildDataTableRecord( + hitIndex ? esHits[hitIndex] : (esHits[0] as EsHitRecord), + indexPatternMock + ); + const props = { columns: ['date'], indexPattern: indexPattern || indexPatternMock, - hit: hitIndex ? esHits[hitIndex] : esHits[0], - hits: hits || esHits, + hit, + hits: + hits || + esHits.map((entry: EsHitRecord) => + buildDataTableRecord(entry, indexPattern || indexPatternMock) + ), onAddColumn: jest.fn(), onClose, onFilter: jest.fn(), @@ -116,7 +126,7 @@ describe('Discover flyout', function () { _type: '_doc', _source: { date: '2020-20-01T12:12:12.124', name: 'test2', extension: 'jpg' }, }, - ]; + ].map((hit) => buildDataTableRecord(hit, indexPatternMock)); const { component } = mountComponent({ hits }); const docNav = findTestSubject(component, 'dscDocNavigation'); expect(docNav.length).toBeFalsy(); @@ -127,7 +137,7 @@ describe('Discover flyout', function () { const { component, props } = mountComponent({}); findTestSubject(component, 'pagination-button-next').simulate('click'); // we selected 1, so we'd expect 2 - expect(props.setExpandedDoc.mock.calls[0][0]._id).toBe('2'); + expect(props.setExpandedDoc.mock.calls[0][0].raw._id).toBe('2'); }); it('doesnt allow you to navigate to the previous doc, if expanded doc is the first', async () => { @@ -149,16 +159,16 @@ describe('Discover flyout', function () { const { component, props } = mountComponent({ hitIndex: esHits.length - 1 }); findTestSubject(component, 'pagination-button-previous').simulate('click'); expect(props.setExpandedDoc).toHaveBeenCalledTimes(1); - expect(props.setExpandedDoc.mock.calls[0][0]._id).toBe('4'); + expect(props.setExpandedDoc.mock.calls[0][0].raw._id).toBe('4'); }); it('allows navigating with arrow keys through documents', () => { const { component, props } = mountComponent({}); findTestSubject(component, 'docTableDetailsFlyout').simulate('keydown', { key: 'ArrowRight' }); - expect(props.setExpandedDoc).toHaveBeenCalledWith(expect.objectContaining({ _id: '2' })); + expect(props.setExpandedDoc).toHaveBeenCalledWith(expect.objectContaining({ id: 'i::2::' })); component.setProps({ ...props, hit: props.hits[1] }); findTestSubject(component, 'docTableDetailsFlyout').simulate('keydown', { key: 'ArrowLeft' }); - expect(props.setExpandedDoc).toHaveBeenCalledWith(expect.objectContaining({ _id: '1' })); + expect(props.setExpandedDoc).toHaveBeenCalledWith(expect.objectContaining({ id: 'i::1::' })); }); it('should not navigate with keypresses when already at the border of documents', () => { diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid_flyout.tsx b/src/plugins/discover/public/components/discover_grid/discover_grid_flyout.tsx index a34e6da654699..c2165fc27ee2a 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid_flyout.tsx +++ b/src/plugins/discover/public/components/discover_grid/discover_grid_flyout.tsx @@ -28,31 +28,24 @@ import { import { DocViewer } from '../../services/doc_views/components/doc_viewer/doc_viewer'; import { DocViewFilterFn } from '../../services/doc_views/doc_views_types'; import { useNavigationProps } from '../../hooks/use_navigation_props'; -import { ElasticSearchHit } from '../../types'; import { useDiscoverServices } from '../../hooks/use_discover_services'; +import type { DataTableRecord } from '../../types'; export interface DiscoverGridFlyoutProps { columns: string[]; - hit: ElasticSearchHit; - hits?: ElasticSearchHit[]; + hit: DataTableRecord; + hits?: DataTableRecord[]; indexPattern: DataView; onAddColumn: (column: string) => void; onClose: () => void; onFilter: DocViewFilterFn; onRemoveColumn: (column: string) => void; - setExpandedDoc: (doc: ElasticSearchHit) => void; + setExpandedDoc: (doc: DataTableRecord) => void; } -type ElasticSearchHitWithRouting = ElasticSearchHit & { _routing?: string }; - -function getDocFingerprintId(doc: ElasticSearchHitWithRouting) { - const routing = doc._routing || ''; - return [doc._index, doc._id, routing].join('||'); -} - -function getIndexByDocId(hits: ElasticSearchHit[], id: string) { +function getIndexByDocId(hits: DataTableRecord[], id: string) { return hits.findIndex((h) => { - return getDocFingerprintId(h) === id; + return h.id === id; }); } /** @@ -71,13 +64,10 @@ export function DiscoverGridFlyout({ }: DiscoverGridFlyoutProps) { const services = useDiscoverServices(); // Get actual hit with updated highlighted searches - const actualHit = useMemo( - () => hits?.find(({ _id, _index }) => hit._index === _index && _id === hit?._id) || hit, - [hit, hits] - ); + const actualHit = useMemo(() => hits?.find(({ id }) => id === hit?.id) || hit, [hit, hits]); const pageCount = useMemo(() => (hits ? hits.length : 0), [hits]); const activePage = useMemo(() => { - const id = getDocFingerprintId(hit); + const id = hit.id; if (!hits || pageCount <= 1) { return -1; } @@ -107,8 +97,8 @@ export function DiscoverGridFlyout({ const { singleDocProps, surrDocsProps } = useNavigationProps({ indexPatternId: indexPattern.id!, - rowIndex: hit._index, - rowId: hit._id, + rowIndex: hit.raw._index, + rowId: hit.raw._id, filterManager: services.filterManager, addBasePath: services.addBasePath, columns, diff --git a/src/plugins/discover/public/components/discover_grid/get_render_cell_value.test.tsx b/src/plugins/discover/public/components/discover_grid/get_render_cell_value.test.tsx index c706892c9f706..b797c8a969831 100644 --- a/src/plugins/discover/public/components/discover_grid/get_render_cell_value.test.tsx +++ b/src/plugins/discover/public/components/discover_grid/get_render_cell_value.test.tsx @@ -12,9 +12,9 @@ import { findTestSubject } from '@elastic/eui/lib/test'; import { mountWithIntl } from '@kbn/test-jest-helpers'; import { getRenderCellValueFn } from './get_render_cell_value'; import { indexPatternMock } from '../../__mocks__/index_pattern'; -import { flattenHit } from '@kbn/data-plugin/public'; -import { ElasticSearchHit } from '../../types'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { buildDataTableRecord } from '../../utils/build_data_record'; +import { EsHitRecord } from '../../types'; const mockServices = { uiSettings: { @@ -33,7 +33,7 @@ jest.mock('../../hooks/use_discover_services', () => { }; }); -const rowsSource: ElasticSearchHit[] = [ +const rowsSource: EsHitRecord[] = [ { _id: '1', _index: 'test', @@ -45,7 +45,7 @@ const rowsSource: ElasticSearchHit[] = [ }, ]; -const rowsFields: ElasticSearchHit[] = [ +const rowsFields: EsHitRecord[] = [ { _id: '1', _index: 'test', @@ -58,7 +58,7 @@ const rowsFields: ElasticSearchHit[] = [ }, ]; -const rowsFieldsWithTopLevelObject: ElasticSearchHit[] = [ +const rowsFieldsWithTopLevelObject: EsHitRecord[] = [ { _id: '1', _index: 'test', @@ -71,16 +71,13 @@ const rowsFieldsWithTopLevelObject: ElasticSearchHit[] = [ }, ]; -const flatten = (hit: ElasticSearchHit): Record => { - return flattenHit(hit, indexPatternMock); -}; +const build = (hit: EsHitRecord) => buildDataTableRecord(hit, indexPatternMock); describe('Discover grid cell rendering', function () { it('renders bytes column correctly', () => { const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsSource, - rowsSource.map(flatten), + rowsSource.map(build), false, [], 100, @@ -105,8 +102,7 @@ describe('Discover grid cell rendering', function () { it('renders bytes column correctly using _source when details is true', () => { const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsSource, - rowsSource.map(flatten), + rowsSource.map(build), false, [], 100, @@ -132,8 +128,7 @@ describe('Discover grid cell rendering', function () { const closePopoverMockFn = jest.fn(); const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsFields, - rowsFields.map(flatten), + rowsFields.map(build), false, [], 100, @@ -160,8 +155,7 @@ describe('Discover grid cell rendering', function () { it('renders _source column correctly', () => { const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsSource, - rowsSource.map(flatten), + rowsSource.map(build), false, ['extension', 'bytes'], 100, @@ -235,8 +229,7 @@ describe('Discover grid cell rendering', function () { it('renders _source column correctly when isDetails is set to true', () => { const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsSource, - rowsSource.map(flatten), + rowsSource.map(build), false, [], 100, @@ -309,8 +302,7 @@ describe('Discover grid cell rendering', function () { it('renders fields-based column correctly', () => { const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsFields, - rowsFields.map(flatten), + rowsFields.map(build), true, ['extension', 'bytes'], 100, @@ -388,8 +380,7 @@ describe('Discover grid cell rendering', function () { it('limits amount of rendered items', () => { const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsFields, - rowsFields.map(flatten), + rowsFields.map(build), true, ['extension', 'bytes'], // this is the number of rendered items @@ -468,8 +459,7 @@ describe('Discover grid cell rendering', function () { it('renders fields-based column correctly when isDetails is set to true', () => { const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsFields, - rowsFields.map(flatten), + rowsFields.map(build), true, [], 100, @@ -547,8 +537,7 @@ describe('Discover grid cell rendering', function () { it('collect object fields and renders them like _source', () => { const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsFieldsWithTopLevelObject, - rowsFieldsWithTopLevelObject.map(flatten), + rowsFieldsWithTopLevelObject.map(build), true, ['object.value', 'extension', 'bytes'], 100, @@ -590,8 +579,7 @@ describe('Discover grid cell rendering', function () { (indexPatternMock.getFieldByName as jest.Mock).mockReturnValueOnce(undefined); const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsFieldsWithTopLevelObject, - rowsFieldsWithTopLevelObject.map(flatten), + rowsFieldsWithTopLevelObject.map(build), true, ['extension', 'bytes', 'object.value'], 100, @@ -633,8 +621,7 @@ describe('Discover grid cell rendering', function () { const closePopoverMockFn = jest.fn(); const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsFieldsWithTopLevelObject, - rowsFieldsWithTopLevelObject.map(flatten), + rowsFieldsWithTopLevelObject.map(build), true, [], 100, @@ -699,8 +686,7 @@ describe('Discover grid cell rendering', function () { const closePopoverMockFn = jest.fn(); const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsFieldsWithTopLevelObject, - rowsFieldsWithTopLevelObject.map(flatten), + rowsFieldsWithTopLevelObject.map(build), true, [], 100, @@ -728,8 +714,7 @@ describe('Discover grid cell rendering', function () { (indexPatternMock.getFieldByName as jest.Mock).mockReturnValueOnce(undefined); const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsFieldsWithTopLevelObject, - rowsFieldsWithTopLevelObject.map(flatten), + rowsFieldsWithTopLevelObject.map(build), true, [], 100, @@ -763,8 +748,7 @@ describe('Discover grid cell rendering', function () { it('renders correctly when invalid row is given', () => { const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsSource, - rowsSource.map(flatten), + rowsSource.map(build), false, [], 100, @@ -789,8 +773,7 @@ describe('Discover grid cell rendering', function () { it('renders correctly when invalid column is given', () => { const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsSource, - rowsSource.map(flatten), + rowsSource.map(build), false, [], 100, @@ -814,7 +797,7 @@ describe('Discover grid cell rendering', function () { it('renders unmapped fields correctly', () => { (indexPatternMock.getFieldByName as jest.Mock).mockReturnValueOnce(undefined); - const rowsFieldsUnmapped: ElasticSearchHit[] = [ + const rowsFieldsUnmapped: EsHitRecord[] = [ { _id: '1', _index: 'test', @@ -828,8 +811,7 @@ describe('Discover grid cell rendering', function () { ]; const DiscoverGridCellValue = getRenderCellValueFn( indexPatternMock, - rowsFieldsUnmapped, - rowsFieldsUnmapped.map(flatten), + rowsFieldsUnmapped.map(build), true, ['unmapped'], 100, diff --git a/src/plugins/discover/public/components/discover_grid/get_render_cell_value.tsx b/src/plugins/discover/public/components/discover_grid/get_render_cell_value.tsx index b129b57dbec9c..5636e31efff5c 100644 --- a/src/plugins/discover/public/components/discover_grid/get_render_cell_value.tsx +++ b/src/plugins/discover/public/components/discover_grid/get_render_cell_value.tsx @@ -24,10 +24,9 @@ import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import { DiscoverGridContext } from './discover_grid_context'; import { JsonCodeEditor } from '../json_code_editor/json_code_editor'; import { defaultMonacoEditorWidth } from './constants'; -import { EsHitRecord } from '../../application/types'; import { formatFieldValue } from '../../utils/format_value'; import { formatHit } from '../../utils/format_hit'; -import { ElasticSearchHit, HitsFlattened } from '../../types'; +import { DataTableRecord, EsHitRecord } from '../../types'; import { useDiscoverServices } from '../../hooks/use_discover_services'; import { MAX_DOC_FIELDS_DISPLAYED } from '../../../common'; @@ -36,8 +35,7 @@ const CELL_CLASS = 'dscDiscoverGrid__cellValue'; export const getRenderCellValueFn = ( dataView: DataView, - rows: ElasticSearchHit[] | undefined, - rowsFlattened: HitsFlattened, + rows: DataTableRecord[] | undefined, useNewFieldsApi: boolean, fieldsToShow: string[], maxDocFieldsDisplayed: number, @@ -49,24 +47,16 @@ export const getRenderCellValueFn = const maxEntries = useMemo(() => uiSettings.get(MAX_DOC_FIELDS_DISPLAYED), [uiSettings]); const row = rows ? rows[rowIndex] : undefined; - const rowFlattened = rowsFlattened - ? (rowsFlattened[rowIndex] as Record) - : undefined; const field = dataView.fields.getByName(columnId); const ctx = useContext(DiscoverGridContext); useEffect(() => { - if ((row as EsHitRecord).isAnchor) { + if (row?.isAnchor) { setCellProps({ className: 'dscDocsGrid__cell--highlight', }); - } else if ( - ctx.expanded && - row && - ctx.expanded._id === row._id && - ctx.expanded._index === row._index - ) { + } else if (ctx.expanded && row && ctx.expanded.id === row.id) { setCellProps({ style: { backgroundColor: ctx.isDarkMode @@ -79,7 +69,7 @@ export const getRenderCellValueFn = } }, [ctx, row, setCellProps]); - if (typeof row === 'undefined' || typeof rowFlattened === 'undefined') { + if (typeof row === 'undefined') { return -; } @@ -90,14 +80,13 @@ export const getRenderCellValueFn = const useTopLevelObjectColumns = Boolean( useNewFieldsApi && !field && - row?.fields && - !(row.fields as Record)[columnId] + row?.raw.fields && + !(row.raw.fields as Record)[columnId] ); if (isDetails) { return renderPopoverContent({ - rowRaw: row, - rowFlattened, + row, field, columnId, dataView, @@ -109,7 +98,7 @@ export const getRenderCellValueFn = if (field?.type === '_source' || useTopLevelObjectColumns) { const pairs = useTopLevelObjectColumns - ? getTopLevelObjectPairs(row, columnId, dataView, fieldsToShow).slice( + ? getTopLevelObjectPairs(row.raw, columnId, dataView, fieldsToShow).slice( 0, maxDocFieldsDisplayed ) @@ -140,7 +129,7 @@ export const getRenderCellValueFn = // formatFieldValue guarantees sanitized values // eslint-disable-next-line react/no-danger dangerouslySetInnerHTML={{ - __html: formatFieldValue(rowFlattened[columnId], row, fieldFormats, dataView, field), + __html: formatFieldValue(row.flattened[columnId], row.raw, fieldFormats, dataView, field), }} /> ); @@ -158,10 +147,10 @@ function getInnerColumns(fields: Record, columnId: string) { ); } -function getJSON(columnId: string, rowRaw: ElasticSearchHit, useTopLevelObjectColumns: boolean) { +function getJSON(columnId: string, row: DataTableRecord, useTopLevelObjectColumns: boolean) { const json = useTopLevelObjectColumns - ? getInnerColumns(rowRaw.fields as Record, columnId) - : rowRaw; + ? getInnerColumns(row.raw.fields as Record, columnId) + : row.raw; return json as Record; } @@ -169,8 +158,7 @@ function getJSON(columnId: string, rowRaw: ElasticSearchHit, useTopLevelObjectCo * Helper function for the cell popover */ function renderPopoverContent({ - rowRaw, - rowFlattened, + row, field, columnId, dataView, @@ -178,8 +166,7 @@ function renderPopoverContent({ fieldFormats, closePopover, }: { - rowRaw: ElasticSearchHit; - rowFlattened: Record; + row: DataTableRecord; field: DataViewField | undefined; columnId: string; dataView: DataView; @@ -209,7 +196,7 @@ function renderPopoverContent({ @@ -226,7 +213,13 @@ function renderPopoverContent({ // formatFieldValue guarantees sanitized values // eslint-disable-next-line react/no-danger dangerouslySetInnerHTML={{ - __html: formatFieldValue(rowFlattened[columnId], rowRaw, fieldFormats, dataView, field), + __html: formatFieldValue( + row.flattened[columnId], + row.raw, + fieldFormats, + dataView, + field + ), }} /> @@ -239,7 +232,7 @@ function renderPopoverContent({ * this is used for legacy stuff like displaying products of our ecommerce dataset */ function getTopLevelObjectPairs( - row: ElasticSearchHit, + row: EsHitRecord, columnId: string, dataView: DataView, fieldsToShow: string[] diff --git a/src/plugins/discover/public/components/doc_table/components/table_row.test.tsx b/src/plugins/discover/public/components/doc_table/components/table_row.test.tsx index 03a12428569f7..1101c01784e84 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_row.test.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_row.test.tsx @@ -17,6 +17,8 @@ import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { discoverServiceMock } from '../../../__mocks__/services'; import { DOC_HIDE_TIME_COLUMN_SETTING, MAX_DOC_FIELDS_DISPLAYED } from '../../../../common'; +import { buildDataTableRecord } from '../../../utils/build_data_record'; +import { EsHitRecord } from '../../../types'; jest.mock('../utils/row_formatter', () => { const originalModule = jest.requireActual('../utils/row_formatter'); @@ -64,7 +66,7 @@ const mockHit = { }, ], _source: { message: 'mock_message', bytes: 20 }, -}; +} as unknown as EsHitRecord; const mockFilterManager = createFilterManagerMock(); @@ -74,7 +76,7 @@ describe('Doc table row component', () => { columns: ['_source'], filter: mockInlineFilter, indexPattern: indexPatternWithTimefieldMock, - row: mockHit, + row: buildDataTableRecord(mockHit, indexPatternWithTimefieldMock), useNewFieldsApi: true, filterManager: mockFilterManager, addBasePath: (path: string) => path, diff --git a/src/plugins/discover/public/components/doc_table/components/table_row.tsx b/src/plugins/discover/public/components/doc_table/components/table_row.tsx index e08843006020a..898cb25417403 100644 --- a/src/plugins/discover/public/components/doc_table/components/table_row.tsx +++ b/src/plugins/discover/public/components/doc_table/components/table_row.tsx @@ -10,7 +10,6 @@ import React, { Fragment, useCallback, useMemo, useState } from 'react'; import classNames from 'classnames'; import { i18n } from '@kbn/i18n'; import { EuiButtonEmpty, EuiIcon } from '@elastic/eui'; -import { flattenHit } from '@kbn/data-plugin/public'; import { DataView } from '@kbn/data-views-plugin/public'; import { formatFieldValue } from '../../../utils/format_value'; import { DocViewer } from '../../../services/doc_views/components/doc_viewer'; @@ -18,19 +17,19 @@ import { TableCell } from './table_row/table_cell'; import { formatRow, formatTopLevelObject } from '../utils/row_formatter'; import { useNavigationProps } from '../../../hooks/use_navigation_props'; import { DocViewFilterFn } from '../../../services/doc_views/doc_views_types'; -import { ElasticSearchHit } from '../../../types'; +import { DataTableRecord, EsHitRecord } from '../../../types'; import { TableRowDetails } from './table_row_details'; import { useDiscoverServices } from '../../../hooks/use_discover_services'; import { DOC_HIDE_TIME_COLUMN_SETTING, MAX_DOC_FIELDS_DISPLAYED } from '../../../../common'; -export type DocTableRow = ElasticSearchHit & { +export type DocTableRow = EsHitRecord & { isAnchor?: boolean; }; export interface TableRowProps { columns: string[]; filter: DocViewFilterFn; - row: DocTableRow; + row: DataTableRecord; indexPattern: DataView; useNewFieldsApi: boolean; fieldsToShow: string[]; @@ -62,10 +61,6 @@ export const TableRow = ({ }); const anchorDocTableRowSubj = row.isAnchor ? ' docTableAnchorRow' : ''; - const flattenedRow = useMemo( - () => flattenHit(row, indexPattern, { includeIgnoredValues: true }), - [indexPattern, row] - ); const mapping = useMemo(() => indexPattern.fields.getByName, [indexPattern]); // toggle display of the rows details, a full list of the fields from each row @@ -82,8 +77,8 @@ export const TableRow = ({ } const formattedField = formatFieldValue( - flattenedRow[fieldName], - row, + row.flattened[fieldName], + row.raw, fieldFormats, indexPattern, mapping(fieldName) @@ -98,15 +93,15 @@ export const TableRow = ({ const inlineFilter = useCallback( (column: string, type: '+' | '-') => { const field = indexPattern.fields.getByName(column); - filter(field!, flattenedRow[column], type); + filter(field!, row.flattened, type); }, - [filter, flattenedRow, indexPattern.fields] + [filter, indexPattern.fields, row.flattened] ); const { singleDocProps, surrDocsProps } = useNavigationProps({ indexPatternId: indexPattern.id!, - rowIndex: row._index, - rowId: row._id, + rowIndex: row.raw._index, + rowId: row.raw._id, filterManager, addBasePath, columns, @@ -161,9 +156,9 @@ export const TableRow = ({ ); } else { columns.forEach(function (column: string) { - if (useNewFieldsApi && !mapping(column) && row.fields && !row.fields[column]) { + if (useNewFieldsApi && !mapping(column) && row.raw.fields && !row.raw.fields[column]) { const innerColumns = Object.fromEntries( - Object.entries(row.fields).filter(([key]) => { + Object.entries(row.raw.fields).filter(([key]) => { return key.indexOf(`${column}.`) === 0; }) ); @@ -185,7 +180,7 @@ export const TableRow = ({ // We should improve this and show a helpful tooltip why the filter buttons are not // there/disabled when there are ignored values. const isFilterable = Boolean( - mapping(column)?.filterable && filter && !row._ignored?.includes(column) + mapping(column)?.filterable && filter && !row.raw._ignored?.includes(column) ); rowCells.push( { - const mountComponent = (rows?: DocTableRow[]) => { + const mountComponent = (rows?: EsHitRecord[]) => { const props = { columns: ['_source'], indexPattern: indexPatternMock, - rows: rows || [ - { - _index: 'mock_index', - _id: '1', - _score: 1, - fields: [ - { - timestamp: '2020-20-01T12:12:12.123', - }, - ], - _source: { message: 'mock_message', bytes: 20 }, - }, - ], + rows: ( + rows || [ + { + _index: 'mock_index', + _id: '1', + _score: 1, + fields: [ + { + timestamp: '2020-20-01T12:12:12.123', + }, + ], + _source: { message: 'mock_message', bytes: 20 }, + } as EsHitRecord, + ] + ).map((row) => buildDataTableRecord(row, indexPatternMock)), + sort: [['order_date', 'desc']], isLoading: false, searchDescription: '', diff --git a/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx b/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx index 3562337961417..e226c859fb0a1 100644 --- a/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx +++ b/src/plugins/discover/public/components/doc_table/doc_table_wrapper.tsx @@ -13,16 +13,17 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { TableHeader } from './components/table_header/table_header'; import { SHOW_MULTIFIELDS } from '../../../common'; import { SortOrder } from './components/table_header/helpers'; -import { DocTableRow, TableRow } from './components/table_row'; +import { TableRow } from './components/table_row'; import { DocViewFilterFn } from '../../services/doc_views/doc_views_types'; import { getFieldsToShow } from '../../utils/get_fields_to_show'; import { useDiscoverServices } from '../../hooks/use_discover_services'; +import type { DataTableRecord } from '../../types'; export interface DocTableProps { /** * Rows of classic table */ - rows: DocTableRow[]; + rows: DataTableRecord[]; /** * Columns of classic table */ @@ -79,8 +80,8 @@ export interface DocTableProps { export interface DocTableRenderProps { columnLength: number; - rows: DocTableRow[]; - renderRows: (row: DocTableRow[]) => JSX.Element[]; + rows: DataTableRecord[]; + renderRows: (row: DataTableRecord[]) => JSX.Element[]; renderHeader: () => JSX.Element; onSkipBottomButtonClick: () => void; } @@ -155,10 +156,10 @@ export const DocTableWrapper = forwardRef( ); const renderRows = useCallback( - (rowsToRender: DocTableRow[]) => { + (rowsToRender: DataTableRecord[]) => { return rowsToRender.map((current) => ( { - const hit = { - _id: 'a', - _index: 'foo', - _type: 'doc', - _score: 1, - _source: { - foo: 'bar', - number: 42, - hello: '

World

', - also: 'with "quotes" or \'single quotes\'', - }, - }; let services: DiscoverServices; const createIndexPattern = () => { @@ -45,6 +34,18 @@ describe('Row formatter', () => { }; const indexPattern = createIndexPattern(); + const rawHit = { + _id: 'a', + _index: 'foo', + _score: 1, + _source: { + foo: 'bar', + number: 42, + hello: '

World

', + also: 'with "quotes" or \'single quotes\'', + }, + }; + const hit = buildDataTableRecord(rawHit, indexPattern); const fieldsToShow = indexPattern.fields.getAll().map((fld) => fld.name); @@ -138,15 +139,13 @@ describe('Row formatter', () => { }); it('formats document with highlighted fields first', () => { - expect( - formatRow( - { ...hit, highlight: { number: ['42'] } }, - indexPattern, - fieldsToShow, - 100, - services.fieldFormats - ) - ).toMatchInlineSnapshot(` + const highLightHit = buildDataTableRecord( + { ...rawHit, highlight: { number: ['42'] } }, + indexPattern + ); + + expect(formatRow(highLightHit, indexPattern, fieldsToShow, 100, services.fieldFormats)) + .toMatchInlineSnapshot(` { }; export const formatRow = ( - hit: estypes.SearchHit, + hit: DataTableRecord, indexPattern: DataView, fieldsToShow: string[], maxEntries: number, @@ -65,7 +65,7 @@ export const formatTopLevelObject = ( const displayKey = fields.getByName ? fields.getByName(key)?.displayName : undefined; const formatter = field ? indexPattern.getFormatterForField(field) - : { convert: (v: unknown, ...rest: unknown[]) => String(v) }; + : { convert: (v: unknown, ..._: unknown[]) => String(v) }; if (!values.map) return; const formatted = values .map((val: unknown) => diff --git a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx index bc208aaaab0ec..cc6557e50e668 100644 --- a/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx @@ -27,6 +27,8 @@ import { ISearchSource } from '@kbn/data-plugin/public'; import { DataView, DataViewField } from '@kbn/data-views-plugin/public'; import { UiActionsStart } from '@kbn/ui-actions-plugin/public'; import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { buildDataTableRecord } from '../utils/build_data_record'; +import { DataTableRecord } from '../types'; import { ISearchEmbeddable, SearchInput, SearchOutput } from './types'; import { SavedSearch } from '../services/saved_searches'; import { SEARCH_EMBEDDABLE_TYPE } from './constants'; @@ -50,7 +52,6 @@ import { SortOrder } from '../components/doc_table/components/table_header/helpe import { VIEW_MODE } from '../components/view_mode_toggle'; import { updateSearchSource } from './utils/update_search_source'; import { FieldStatisticsTable } from '../application/main/components/field_stats_table'; -import { ElasticSearchHit } from '../types'; export type SearchProps = Partial & Partial & { @@ -59,9 +60,8 @@ export type SearchProps = Partial & sharedItemTitle?: string; inspectorAdapters?: Adapters; services: DiscoverServices; - filter?: (field: DataViewField, value: string[], operator: string) => void; - hits?: ElasticSearchHit[]; + hits?: DataTableRecord[]; totalHitCount?: number; onMoveColumn?: (column: string, index: number) => void; onUpdateRowHeight?: (rowHeight?: number) => void; @@ -210,7 +210,9 @@ export class SavedSearchEmbeddable ); this.updateOutput({ loading: false, error: undefined }); - this.searchProps!.rows = resp.hits.hits; + this.searchProps!.rows = resp.hits.hits.map((hit) => + buildDataTableRecord(hit, this.searchProps!.indexPattern) + ); this.searchProps!.totalHitCount = resp.hits.total as number; this.searchProps!.isLoading = false; } catch (error) { diff --git a/src/plugins/discover/public/embeddable/saved_search_grid.tsx b/src/plugins/discover/public/embeddable/saved_search_grid.tsx index ff72ed378aff3..7c567dc75dfa3 100644 --- a/src/plugins/discover/public/embeddable/saved_search_grid.tsx +++ b/src/plugins/discover/public/embeddable/saved_search_grid.tsx @@ -7,9 +7,9 @@ */ import React, { useState, memo } from 'react'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import { DataTableRecord } from '../types'; import { DiscoverGrid, DiscoverGridProps } from '../components/discover_grid/discover_grid'; import { TotalDocuments } from '../application/main/components/total_documents/total_documents'; -import { ElasticSearchHit } from '../types'; export interface DiscoverGridEmbeddableProps extends DiscoverGridProps { totalHitCount: number; @@ -18,7 +18,7 @@ export interface DiscoverGridEmbeddableProps extends DiscoverGridProps { export const DataGridMemoized = memo(DiscoverGrid); export function DiscoverGridEmbeddable(props: DiscoverGridEmbeddableProps) { - const [expandedDoc, setExpandedDoc] = useState(undefined); + const [expandedDoc, setExpandedDoc] = useState(undefined); return ( helper / hook', () => { getComputedFields: () => [], }; - const record = { test: 1 }; + const record = { _id: '1', _index: 't', test: 1 }; const props = { id: '1', @@ -233,6 +234,9 @@ describe('Test of helper / hook', () => { await hook.waitForNextUpdate(); }); - expect(hook.result.current.slice(0, 2)).toEqual([ElasticRequestState.Found, record]); + expect(hook.result.current.slice(0, 2)).toEqual([ + ElasticRequestState.Found, + buildDataTableRecord(record), + ]); }); }); diff --git a/src/plugins/discover/public/hooks/use_es_doc_search.ts b/src/plugins/discover/public/hooks/use_es_doc_search.ts index 84e759962de04..06c50af8e3889 100644 --- a/src/plugins/discover/public/hooks/use_es_doc_search.ts +++ b/src/plugins/discover/public/hooks/use_es_doc_search.ts @@ -10,10 +10,11 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { lastValueFrom } from 'rxjs'; import { DataView } from '@kbn/data-views-plugin/public'; +import { buildDataTableRecord } from '../utils/build_data_record'; +import { DataTableRecord } from '../types'; import { DocProps } from '../application/doc/components/doc'; import { ElasticRequestState } from '../application/doc/types'; import { SEARCH_FIELDS_FROM_SOURCE } from '../../common'; -import { ElasticSearchHit } from '../types'; import { useDiscoverServices } from './use_discover_services'; type RequestBody = Pick; @@ -26,9 +27,9 @@ export function useEsDocSearch({ index, indexPattern, requestSource, -}: DocProps): [ElasticRequestState, ElasticSearchHit | null, () => void] { +}: DocProps): [ElasticRequestState, DataTableRecord | null, () => void] { const [status, setStatus] = useState(ElasticRequestState.Loading); - const [hit, setHit] = useState(null); + const [hit, setHit] = useState(null); const { data, uiSettings } = useDiscoverServices(); const useNewFieldsApi = useMemo(() => !uiSettings.get(SEARCH_FIELDS_FROM_SOURCE), [uiSettings]); @@ -48,7 +49,7 @@ export function useEsDocSearch({ if (hits?.hits?.[0]) { setStatus(ElasticRequestState.Found); - setHit(hits.hits[0]); + setHit(buildDataTableRecord(hits.hits[0], indexPattern)); } else { setStatus(ElasticRequestState.NotFound); } diff --git a/src/plugins/discover/public/plugin.tsx b/src/plugins/discover/public/plugin.tsx index 24da9869238b0..e9eaba11d048c 100644 --- a/src/plugins/discover/public/plugin.tsx +++ b/src/plugins/discover/public/plugin.tsx @@ -241,8 +241,8 @@ export class DiscoverPlugin } > diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer.test.tsx b/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer.test.tsx index 6d0018f695a33..41d483cb667c8 100644 --- a/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer.test.tsx +++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer.test.tsx @@ -12,6 +12,7 @@ import { DocViewer } from './doc_viewer'; import { findTestSubject } from '@elastic/eui/lib/test'; import { getDocViewsRegistry } from '../../../../kibana_services'; import { DocViewRenderProps } from '../../doc_views_types'; +import { buildDataTableRecord } from '../../../../utils/build_data_record'; jest.mock('../../../../kibana_services', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -75,7 +76,9 @@ test('Render with 1 tab displaying error message', () => { component: SomeComponent, }); - const renderProps = { hit: {} } as DocViewRenderProps; + const renderProps = { + hit: buildDataTableRecord({ _index: 't', _id: '1' }), + } as DocViewRenderProps; const errorMsg = 'Catch me if you can!'; const wrapper = mount(); diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer_tab.test.tsx b/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer_tab.test.tsx index 1d5b1d4577652..af0bda4b67713 100644 --- a/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer_tab.test.tsx +++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer_tab.test.tsx @@ -10,17 +10,18 @@ import React from 'react'; import { shallow } from 'enzyme'; import { DocViewerTab } from './doc_viewer_tab'; import { indexPatternMock } from '../../../../__mocks__/index_pattern'; -import { ElasticSearchHit } from '../../../../types'; +import { buildDataTableRecord } from '../../../../utils/build_data_record'; describe('DocViewerTab', () => { test('changing columns triggers an update', () => { + const hit = buildDataTableRecord({ _index: 'test', _id: '1' }, indexPatternMock); const props = { title: 'test', component: jest.fn(), id: 1, render: jest.fn(), renderProps: { - hit: {} as ElasticSearchHit, + hit, columns: ['test'], indexPattern: indexPatternMock, }, @@ -31,7 +32,7 @@ describe('DocViewerTab', () => { const nextProps = { ...props, renderProps: { - hit: {} as ElasticSearchHit, + hit, columns: ['test2'], indexPattern: indexPatternMock, }, diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer_tab.tsx b/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer_tab.tsx index 0ad3187e1cf4f..837ee910176b9 100644 --- a/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer_tab.tsx +++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer/doc_viewer_tab.tsx @@ -42,9 +42,8 @@ export class DocViewerTab extends React.Component { shouldComponentUpdate(nextProps: Props, nextState: State) { return ( - nextProps.renderProps.hit._id !== this.props.renderProps.hit._id || - nextProps.renderProps.hit._index !== this.props.renderProps.hit._index || - !isEqual(nextProps.renderProps.hit.highlight, this.props.renderProps.hit.highlight) || + nextProps.renderProps.hit.id !== this.props.renderProps.hit.id || + !isEqual(nextProps.renderProps.hit.raw.highlight, this.props.renderProps.hit.raw.highlight) || nextProps.id !== this.props.id || !isEqual(nextProps.renderProps.columns, this.props.renderProps.columns) || nextState.hasError diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/__snapshots__/source.test.tsx.snap b/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/__snapshots__/source.test.tsx.snap deleted file mode 100644 index c639e60dd9a7c..0000000000000 --- a/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/__snapshots__/source.test.tsx.snap +++ /dev/null @@ -1,128 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Source Viewer component renders error state 1`] = ` -
-
-
- -
-
-
-

- An Error Occurred -

-
-
-
- Could not fetch data at this time. Refresh the tab to try again. -
- -
-
-
-
-
-
-`; - -exports[`Source Viewer component renders json code editor 1`] = ` -
-
-
-
- - - -
-
-
-
-
-
-`; - -exports[`Source Viewer component renders loading state 1`] = ` -
- -
- Loading JSON -
-
-`; diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.test.tsx b/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.test.tsx index 2f08caa4f6817..f51ddd13f1afe 100644 --- a/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.test.tsx +++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.test.tsx @@ -15,6 +15,7 @@ import * as useUiSettingHook from '@kbn/kibana-react-plugin/public/ui_settings/u import { EuiButton, EuiEmptyPrompt, EuiLoadingSpinner } from '@elastic/eui'; import { JsonCodeEditorCommon } from '../../../../components/json_code_editor/json_code_editor_common'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { buildDataTableRecord } from '../../../../utils/build_data_record'; const mockIndexPattern = { getComputedFields: () => [], @@ -51,7 +52,6 @@ describe('Source Viewer component', () => { /> ); - expect(comp.children().render()).toMatchSnapshot(); const loadingIndicator = comp.find(EuiLoadingSpinner); expect(loadingIndicator).not.toBe(null); }); @@ -70,7 +70,6 @@ describe('Source Viewer component', () => { /> ); - expect(comp.children().render()).toMatchSnapshot(); const errorPrompt = comp.find(EuiEmptyPrompt); expect(errorPrompt.length).toBe(1); const refreshButton = comp.find(EuiButton); @@ -78,9 +77,8 @@ describe('Source Viewer component', () => { }); test('renders json code editor', () => { - const mockHit = { + const mockHit = buildDataTableRecord({ _index: 'logstash-2014.09.09', - _type: 'doc', _id: 'id123', _score: 1, _source: { @@ -95,7 +93,7 @@ describe('Source Viewer component', () => { scripted: 123, _underscore: 123, }, - } as never; + }); jest.spyOn(hooks, 'useEsDocSearch').mockImplementation(() => [2, mockHit, () => {}]); jest.spyOn(useUiSettingHook, 'useUiSetting').mockImplementation(() => { return false; @@ -111,7 +109,6 @@ describe('Source Viewer component', () => { /> ); - expect(comp.children().render()).toMatchSnapshot(); const jsonCodeEditor = comp.find(JsonCodeEditorCommon); expect(jsonCodeEditor).not.toBe(null); }); diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.tsx b/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.tsx index cbc14c9382e1c..ade467df853b0 100644 --- a/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.tsx +++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer_source/source.tsx @@ -56,7 +56,7 @@ export const DocViewerSource = ({ useEffect(() => { if (reqState === ElasticRequestState.Found && hit) { - setJsonValue(JSON.stringify(hit, undefined, 2)); + setJsonValue(JSON.stringify(hit.raw, undefined, 2)); } }, [reqState, hit]); diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.test.tsx b/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.test.tsx index 0e75ab7d7800d..053af6643eb79 100644 --- a/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.test.tsx +++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.test.tsx @@ -12,9 +12,9 @@ import { findTestSubject } from '@elastic/eui/lib/test'; import { DocViewerLegacyTable } from './table'; import { DataView } from '@kbn/data-views-plugin/public'; import { DocViewRenderProps } from '../../../doc_views_types'; -import { ElasticSearchHit } from '../../../../../types'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; import { DiscoverServices } from '../../../../../build_services'; +import { buildDataTableRecord } from '../../../../../utils/build_data_record'; const services = { uiSettings: { @@ -85,14 +85,14 @@ describe('DocViewTable at Discover', () => { // At Discover's main view, all buttons are rendered // check for existence of action buttons and warnings - const hit = { - _index: 'logstash-2014.09.09', - _type: 'doc', - _id: 'id123', - _score: 1, - _source: { - message: - 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \ + const hit = buildDataTableRecord( + { + _index: 'logstash-2014.09.09', + _id: 'id123', + _score: 1, + _source: { + message: + 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \ Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus \ et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, \ ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. \ @@ -100,17 +100,19 @@ describe('DocViewTable at Discover', () => { rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. \ Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. \ Phasellus ullamcorper ipsum rutrum nunc. Nunc nonummy metus. Vestibulum volutpat pretium libero. Cras id dui. Aenean ut', - extension: 'html', - not_mapped: 'yes', - bytes: 100, - objectArray: [{ foo: true }], - relatedContent: { - test: 1, + extension: 'html', + not_mapped: 'yes', + bytes: 100, + objectArray: [{ foo: true }], + relatedContent: { + test: 1, + }, + scripted: 123, + _underscore: 123, }, - scripted: 123, - _underscore: 123, }, - } as ElasticSearchHit; + indexPattern + ); const props = { hit, @@ -194,14 +196,14 @@ describe('DocViewTable at Discover', () => { describe('DocViewTable at Discover Context', () => { // here no toggleColumnButtons are rendered - const hit = { - _index: 'logstash-2014.09.09', - _type: 'doc', - _id: 'id123', - _score: 1, - _source: { - message: - 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \ + const hit = buildDataTableRecord( + { + _index: 'logstash-2014.09.09', + _id: 'id123', + _score: 1, + _source: { + message: + 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \ Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus \ et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, \ ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. \ @@ -209,8 +211,10 @@ describe('DocViewTable at Discover Context', () => { rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. \ Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. \ Phasellus ullamcorper ipsum rutrum nunc. Nunc nonummy metus. Vestibulum volutpat pretium libero. Cras id dui. Aenean ut', + }, }, - } as ElasticSearchHit; + indexPattern + ); const props = { hit, columns: ['extension'], @@ -246,16 +250,18 @@ describe('DocViewTable at Discover Context', () => { }); describe('DocViewTable at Discover Doc', () => { - const hit = { - _index: 'logstash-2014.09.09', - _score: 1, - _type: 'doc', - _id: 'id123', - _source: { - extension: 'html', - not_mapped: 'yes', + const hit = buildDataTableRecord( + { + _index: 'logstash-2014.09.09', + _score: 1, + _id: 'id123', + _source: { + extension: 'html', + not_mapped: 'yes', + }, }, - }; + indexPattern + ); // here no action buttons are rendered const props = { hit, @@ -370,20 +376,22 @@ describe('DocViewTable at Discover Doc with Fields API', () => { return indexPatterneCommerce.fields.getAll().find((field) => field.name === name); }; - const fieldsHit = { - _index: 'logstash-2014.09.09', - _type: 'doc', - _id: 'id123', - _score: 1.0, - fields: { - category: "Women's Clothing", - 'category.keyword': "Women's Clothing", - customer_first_name: 'Betty', - 'customer_first_name.keyword': 'Betty', - 'customer_first_name.nickname': 'Betsy', - 'city.raw': 'Los Angeles', + const fieldsHit = buildDataTableRecord( + { + _index: 'logstash-2014.09.09', + _id: 'id123', + _score: 1.0, + fields: { + category: "Women's Clothing", + 'category.keyword': "Women's Clothing", + customer_first_name: 'Betty', + 'customer_first_name.keyword': 'Betty', + 'customer_first_name.nickname': 'Betsy', + 'city.raw': 'Los Angeles', + }, }, - }; + indexPattern + ); const props = { hit: fieldsHit, columns: ['Document'], diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.tsx b/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.tsx index 152a5451e7760..ad4345a79b166 100644 --- a/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.tsx +++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/legacy/table.tsx @@ -9,7 +9,6 @@ import '../table.scss'; import React, { useCallback, useMemo } from 'react'; import { EuiInMemoryTable } from '@elastic/eui'; -import { flattenHit } from '@kbn/data-plugin/public'; import { getTypeForFieldIcon } from '../../../../../utils/get_type_for_field_icon'; import { useDiscoverServices } from '../../../../../hooks/use_discover_services'; import { SHOW_MULTIFIELDS } from '../../../../../../common'; @@ -57,10 +56,9 @@ export const DocViewerLegacyTable = ({ }; }, []); - const flattened = flattenHit(hit, dataView, { source: true, includeIgnoredValues: true }); - const fieldsToShow = getFieldsToShow(Object.keys(flattened), dataView, showMultiFields); + const fieldsToShow = getFieldsToShow(Object.keys(hit.flattened), dataView, showMultiFields); - const items: FieldRecordLegacy[] = Object.keys(flattened) + const items: FieldRecordLegacy[] = Object.keys(hit.flattened) .filter((fieldName) => { return fieldsToShow.includes(fieldName); }) @@ -79,13 +77,13 @@ export const DocViewerLegacyTable = ({ : fieldMapping ? getTypeForFieldIcon(fieldMapping) : undefined; - const ignored = getIgnoredReason(fieldMapping ?? field, hit._ignored); + const ignored = getIgnoredReason(fieldMapping ?? field, hit.raw._ignored); return { action: { onToggleColumn, onFilter: filter, isActive: !!columns?.includes(field), - flattenedField: flattened[field], + flattenedField: hit.flattened[field], }, field: { field, @@ -96,8 +94,8 @@ export const DocViewerLegacyTable = ({ }, value: { formattedValue: formatFieldValue( - flattened[field], - hit, + hit.flattened[field], + hit.raw, fieldFormats, dataView, fieldMapping diff --git a/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/table.tsx b/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/table.tsx index 48a869c86d3e8..7e61918aa7ae8 100644 --- a/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/table.tsx +++ b/src/plugins/discover/public/services/doc_views/components/doc_viewer_table/table.tsx @@ -28,7 +28,6 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { debounce } from 'lodash'; import { Storage } from '@kbn/kibana-utils-plugin/public'; -import { flattenHit } from '@kbn/data-plugin/public'; import { getTypeForFieldIcon } from '../../../../utils/get_type_for_field_icon'; import { useDiscoverServices } from '../../../../hooks/use_discover_services'; import { usePager } from '../../../../hooks/use_pager'; @@ -119,7 +118,7 @@ export const DocViewerTable = ({ getPinnedFields(currentDataViewId, storage) ); - const flattened = flattenHit(hit, dataView, { source: true, includeIgnoredValues: true }); + const flattened = hit.flattened; const fieldsToShow = getFieldsToShow(Object.keys(flattened), dataView, showMultiFields); const searchPlaceholder = i18n.translate('discover.docView.table.searchPlaceHolder', { @@ -164,7 +163,7 @@ export const DocViewerTable = ({ ? getTypeForFieldIcon(fieldMapping) : undefined; - const ignored = getIgnoredReason(fieldMapping ?? field, hit._ignored); + const ignored = getIgnoredReason(fieldMapping ?? field, hit.raw._ignored); return { action: { @@ -184,8 +183,8 @@ export const DocViewerTable = ({ }, value: { formattedValue: formatFieldValue( - flattened[field], - hit, + hit.flattened[field], + hit.raw, fieldFormats, dataView, fieldMapping diff --git a/src/plugins/discover/public/services/doc_views/doc_views_registry.ts b/src/plugins/discover/public/services/doc_views/doc_views_registry.ts index 8ee8741d73d3f..d6bf89c5fef70 100644 --- a/src/plugins/discover/public/services/doc_views/doc_views_registry.ts +++ b/src/plugins/discover/public/services/doc_views/doc_views_registry.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { ElasticSearchHit } from '../../types'; import { DocView, DocViewInput, DocViewInputFn } from './doc_views_types'; +import { DataTableRecord } from '../../types'; export class DocViewsRegistry { private docViews: DocView[] = []; @@ -25,7 +25,7 @@ export class DocViewsRegistry { /** * Returns a sorted array of doc_views for rendering tabs */ - getDocViewsSorted(hit: ElasticSearchHit) { + getDocViewsSorted(hit: DataTableRecord) { return this.docViews .filter((docView) => docView.shouldShow(hit)) .sort((a, b) => (Number(a.order) > Number(b.order) ? 1 : -1)); diff --git a/src/plugins/discover/public/services/doc_views/doc_views_types.ts b/src/plugins/discover/public/services/doc_views/doc_views_types.ts index 171b29a86bb05..ca05bce452f91 100644 --- a/src/plugins/discover/public/services/doc_views/doc_views_types.ts +++ b/src/plugins/discover/public/services/doc_views/doc_views_types.ts @@ -7,7 +7,7 @@ */ import { DataView, DataViewField } from '@kbn/data-views-plugin/public'; -import { ElasticSearchHit } from '../../types'; +import { DataTableRecord } from '../../types'; import { IgnoredReason } from '../../utils/get_ignored_reason'; export interface FieldMapping { @@ -26,7 +26,7 @@ export type DocViewFilterFn = ( ) => void; export interface DocViewRenderProps { - hit: ElasticSearchHit; + hit: DataTableRecord; indexPattern: DataView; columns?: string[]; filter?: DocViewFilterFn; @@ -41,7 +41,7 @@ export type DocViewRenderFn = ( export interface BaseDocViewInput { order: number; - shouldShow?: (hit: ElasticSearchHit) => boolean; + shouldShow?: (hit: DataTableRecord) => boolean; title: string; } diff --git a/src/plugins/discover/public/types.ts b/src/plugins/discover/public/types.ts index fa8582337349d..f96edccb5f9bf 100644 --- a/src/plugins/discover/public/types.ts +++ b/src/plugins/discover/public/types.ts @@ -6,14 +6,35 @@ * Side Public License, v 1. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; - -export type ElasticSearchHit = estypes.SearchHit; - -export type HitsFlattened = Array>; +import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; export type ValueToStringConverter = ( rowIndex: number, columnId: string, options?: { disableMultiline?: boolean } ) => { formattedString: string; withFormula: boolean }; + +export interface EsHitRecord extends Omit { + _source?: Record; +} +/** + * This is the record/row of data provided to our Data Table + */ +export interface DataTableRecord { + /** + * A unique id generated by index, id and routing of a record + */ + id: string; + /** + * The document returned by Elasticsearch for search queries + */ + raw: EsHitRecord; + /** + * A flattened version of the ES doc or data provided by SQL, aggregations ... + */ + flattened: Record; + /** + * Determines that the given doc is the anchor doc when rendering view surrounding docs + */ + isAnchor?: boolean; +} diff --git a/src/plugins/discover/public/utils/build_data_record.ts b/src/plugins/discover/public/utils/build_data_record.ts new file mode 100644 index 0000000000000..2691fddfb66a9 --- /dev/null +++ b/src/plugins/discover/public/utils/build_data_record.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { DataView } from '@kbn/data-views-plugin/common'; +import { flattenHit } from '@kbn/data-plugin/common'; +import { getDocId } from './get_doc_id'; +import type { DataTableRecord, EsHitRecord } from '../types'; + +/** + * Build a record for data table, explorer + classic one + * @param doc the document returned from Elasticsearch + * @param dataView this current data view + * @param isAnchor determines if the given doc is the anchor doc when viewing surrounding documents + */ +export function buildDataTableRecord( + doc: EsHitRecord, + dataView?: DataView, + isAnchor?: boolean +): DataTableRecord { + return { + id: getDocId(doc), + raw: doc, + flattened: flattenHit(doc, dataView, { includeIgnoredValues: true }), + isAnchor, + }; +} + +/** + * Helper to build multiple DataTableRecords at once, saved a bit of testing code lines + * @param docs Array of documents returned from Elasticsearch + * @param dataView this current data view + */ +export function buildDataTableRecordList( + docs: EsHitRecord[], + dataView?: DataView +): DataTableRecord[] { + return docs.map((doc) => buildDataTableRecord(doc, dataView)); +} diff --git a/src/plugins/discover/public/utils/convert_value_to_string.test.tsx b/src/plugins/discover/public/utils/convert_value_to_string.test.tsx index e77d664851a23..64042c190feba 100644 --- a/src/plugins/discover/public/utils/convert_value_to_string.test.tsx +++ b/src/plugins/discover/public/utils/convert_value_to_string.test.tsx @@ -14,7 +14,6 @@ describe('convertValueToString', () => { it('should convert a keyword value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'keyword_key', @@ -30,7 +29,6 @@ describe('convertValueToString', () => { it('should convert a text value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'text_message', @@ -46,7 +44,6 @@ describe('convertValueToString', () => { it('should convert a multiline text value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'text_message', @@ -63,7 +60,6 @@ describe('convertValueToString', () => { it('should convert a number value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'number_price', @@ -79,7 +75,6 @@ describe('convertValueToString', () => { it('should convert a date value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'date', @@ -95,7 +90,6 @@ describe('convertValueToString', () => { it('should convert a date nanos value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'date_nanos', @@ -111,7 +105,6 @@ describe('convertValueToString', () => { it('should convert a boolean value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'bool_enabled', @@ -127,7 +120,6 @@ describe('convertValueToString', () => { it('should convert a binary value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'binary_blob', @@ -143,7 +135,6 @@ describe('convertValueToString', () => { it('should convert an object value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'object_user.first', @@ -159,7 +150,6 @@ describe('convertValueToString', () => { it('should convert a nested value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'nested_user', @@ -177,7 +167,6 @@ describe('convertValueToString', () => { it('should convert a flattened value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'flattened_labels', @@ -193,7 +182,6 @@ describe('convertValueToString', () => { it('should convert a range value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'range_time_frame', @@ -211,7 +199,6 @@ describe('convertValueToString', () => { it('should convert a rank features value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'rank_features', @@ -227,7 +214,6 @@ describe('convertValueToString', () => { it('should convert a histogram value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'histogram', @@ -243,7 +229,6 @@ describe('convertValueToString', () => { it('should convert a IP value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'ip_addr', @@ -259,7 +244,6 @@ describe('convertValueToString', () => { it('should convert a version value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'version', @@ -275,7 +259,6 @@ describe('convertValueToString', () => { it('should convert a vector value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'vector', @@ -291,7 +274,6 @@ describe('convertValueToString', () => { it('should convert a geo point value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'geo_point', @@ -307,7 +289,6 @@ describe('convertValueToString', () => { it('should convert a geo point object value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'geo_point', @@ -323,7 +304,6 @@ describe('convertValueToString', () => { it('should convert an array value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'array_tags', @@ -339,7 +319,6 @@ describe('convertValueToString', () => { it('should convert a shape value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'geometry', @@ -357,7 +336,6 @@ describe('convertValueToString', () => { it('should convert a runtime value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'runtime_number', @@ -373,7 +351,6 @@ describe('convertValueToString', () => { it('should convert a scripted value to text', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'scripted_string', @@ -389,7 +366,6 @@ describe('convertValueToString', () => { it('should return an empty string and not fail', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'unknown', @@ -405,7 +381,6 @@ describe('convertValueToString', () => { it('should return an empty string when rowIndex is out of range', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'unknown', @@ -421,7 +396,6 @@ describe('convertValueToString', () => { it('should return _source value', () => { const result = convertValueToString({ rows: discoverGridContextMock.rows, - rowsFlattened: discoverGridContextMock.rowsFlattened, dataView: discoverGridContextMock.indexPattern, services: discoverServiceMock, columnId: '_source', @@ -445,7 +419,6 @@ describe('convertValueToString', () => { it('should return a formatted _source value', () => { const result = convertValueToString({ rows: discoverGridContextMock.rows, - rowsFlattened: discoverGridContextMock.rowsFlattened, dataView: discoverGridContextMock.indexPattern, services: discoverServiceMock, columnId: '_source', @@ -463,7 +436,6 @@ describe('convertValueToString', () => { it('should escape formula', () => { const result = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'array_tags', @@ -478,7 +450,6 @@ describe('convertValueToString', () => { const result2 = convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, columnId: 'scripted_string', diff --git a/src/plugins/discover/public/utils/convert_value_to_string.ts b/src/plugins/discover/public/utils/convert_value_to_string.ts index 0f00725a69fb2..7c00bc0988cce 100644 --- a/src/plugins/discover/public/utils/convert_value_to_string.ts +++ b/src/plugins/discover/public/utils/convert_value_to_string.ts @@ -9,8 +9,8 @@ import { DataView } from '@kbn/data-views-plugin/public'; import { cellHasFormulas, createEscapeValue } from '@kbn/data-plugin/common'; import { formatFieldValue } from './format_value'; -import { ElasticSearchHit, HitsFlattened } from '../types'; import { DiscoverServices } from '../build_services'; +import { DataTableRecord } from '../types'; interface ConvertedResult { formattedString: string; @@ -20,15 +20,13 @@ interface ConvertedResult { export const convertValueToString = ({ rowIndex, rows, - rowsFlattened, columnId, dataView, services, options, }: { rowIndex: number; - rows: ElasticSearchHit[]; - rowsFlattened: HitsFlattened; + rows: DataTableRecord[]; columnId: string; dataView: DataView; services: DiscoverServices; @@ -37,7 +35,13 @@ export const convertValueToString = ({ }; }): ConvertedResult => { const { fieldFormats } = services; - const rowFlattened = rowsFlattened[rowIndex]; + if (!rows[rowIndex]) { + return { + formattedString: '', + withFormula: false, + }; + } + const rowFlattened = rows[rowIndex].flattened; const value = rowFlattened?.[columnId]; const field = dataView.fields.getByName(columnId); const valuesArray = Array.isArray(value) ? value : [value]; @@ -56,7 +60,7 @@ export const convertValueToString = ({ .map((subValue) => { const formattedValue = formatFieldValue( subValue, - rows[rowIndex], + rows[rowIndex].raw, fieldFormats, dataView, field, diff --git a/src/plugins/discover/public/utils/copy_value_to_clipboard.test.tsx b/src/plugins/discover/public/utils/copy_value_to_clipboard.test.tsx index 3f3beed866eca..842d8147aece1 100644 --- a/src/plugins/discover/public/utils/copy_value_to_clipboard.test.tsx +++ b/src/plugins/discover/public/utils/copy_value_to_clipboard.test.tsx @@ -23,7 +23,6 @@ describe('copyValueToClipboard', () => { const valueToStringConverter: ValueToStringConverter = (rowIndex, columnId, options) => convertValueToString({ rows: discoverGridContextComplexMock.rows, - rowsFlattened: discoverGridContextComplexMock.rowsFlattened, dataView: discoverGridContextComplexMock.indexPattern, services: discoverServiceMock, rowIndex, diff --git a/src/plugins/discover/public/utils/format_hit.test.ts b/src/plugins/discover/public/utils/format_hit.test.ts index 601d88cdedc96..c273a565ff645 100644 --- a/src/plugins/discover/public/utils/format_hit.test.ts +++ b/src/plugins/discover/public/utils/format_hit.test.ts @@ -6,13 +6,15 @@ * Side Public License, v 1. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { indexPatternMock as dataViewMock } from '../__mocks__/index_pattern'; import { formatHit } from './format_hit'; import { discoverServiceMock } from '../__mocks__/services'; +import { DataTableRecord, EsHitRecord } from '../types'; +import { buildDataTableRecord } from './build_data_record'; describe('formatHit', () => { - let hit: estypes.SearchHit; + let row: DataTableRecord; + let hit: EsHitRecord; beforeEach(() => { hit = { _id: '1', @@ -24,6 +26,7 @@ describe('formatHit', () => { bytes: [123], }, }; + row = buildDataTableRecord(hit, dataViewMock); (dataViewMock.getFormatterForField as jest.Mock).mockReturnValue({ convert: (value: unknown) => `formatted:${value}`, }); @@ -35,7 +38,7 @@ describe('formatHit', () => { it('formats a document as expected', () => { const formatted = formatHit( - hit, + row, dataViewMock, ['message', 'extension', 'object.value'], 220, @@ -51,8 +54,16 @@ describe('formatHit', () => { }); it('orders highlighted fields first', () => { + const highlightHit = buildDataTableRecord( + { + ...hit, + highlight: { message: ['%%'] }, + }, + dataViewMock + ); + const formatted = formatHit( - { ...hit, highlight: { message: ['%%'] } }, + highlightHit, dataViewMock, ['message', 'extension', 'object.value'], 220, @@ -69,7 +80,7 @@ describe('formatHit', () => { it('only limits count of pairs based on advanced setting', () => { const formatted = formatHit( - hit, + row, dataViewMock, ['message', 'extension', 'object.value'], 2, @@ -84,7 +95,7 @@ describe('formatHit', () => { it('should not include fields not mentioned in fieldsToShow', () => { const formatted = formatHit( - hit, + row, dataViewMock, ['message', 'object.value'], 220, @@ -100,7 +111,7 @@ describe('formatHit', () => { it('should filter fields based on their real name not displayName', () => { const formatted = formatHit( - hit, + row, dataViewMock, ['bytes'], 220, diff --git a/src/plugins/discover/public/utils/format_hit.ts b/src/plugins/discover/public/utils/format_hit.ts index 6af6a8aa61210..4e3c6160109c6 100644 --- a/src/plugins/discover/public/utils/format_hit.ts +++ b/src/plugins/discover/public/utils/format_hit.ts @@ -9,8 +9,8 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { i18n } from '@kbn/i18n'; import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; -import { flattenHit } from '@kbn/data-plugin/public'; import { DataView } from '@kbn/data-views-plugin/public'; +import { DataTableRecord } from '../types'; import { formatFieldValue } from './format_value'; const formattedHitCache = new WeakMap(); @@ -26,20 +26,20 @@ type FormattedHit = Array; * @param fieldsToShow A list of fields that should be included in the document summary. */ export function formatHit( - hit: estypes.SearchHit, + hit: DataTableRecord, dataView: DataView, fieldsToShow: string[], maxEntries: number, fieldFormats: FieldFormatsStart ): FormattedHit { - const cached = formattedHitCache.get(hit); + const cached = formattedHitCache.get(hit.raw); if (cached) { return cached; } - const highlights = hit.highlight ?? {}; + const highlights = hit.raw.highlight ?? {}; // Flatten the object using the flattenHit implementation we use across Discover for flattening documents. - const flattened = flattenHit(hit, dataView, { includeIgnoredValues: true, source: true }); + const flattened = hit.flattened; const highlightPairs: Array<[fieldName: string, formattedValue: string]> = []; const sourcePairs: Array<[fieldName: string, formattedValue: string]> = []; @@ -54,7 +54,7 @@ export function formatHit( // Format the raw value using the regular field formatters for that field const formattedValue = formatFieldValue( val, - hit, + hit.raw, fieldFormats, dataView, dataView.fields.getByName(key) @@ -85,6 +85,6 @@ export function formatHit( '', ] as const, ]; - formattedHitCache.set(hit, formatted); + formattedHitCache.set(hit.raw, formatted); return formatted; } diff --git a/src/plugins/discover/public/utils/get_doc_id.tsx b/src/plugins/discover/public/utils/get_doc_id.tsx new file mode 100644 index 0000000000000..5b6b638d3b562 --- /dev/null +++ b/src/plugins/discover/public/utils/get_doc_id.tsx @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { EsHitRecord } from '../types'; +/** + * Returning a generated id of a given ES document, since `_id` can be the same + * when using different indices and shard routing + */ +export const getDocId = (doc: EsHitRecord & { _routing?: string }) => { + const routing = doc._routing ? doc._routing : ''; + return [doc._index, doc._id, routing].join('::'); +}; From bcc17e178b0fbf48cee57c6d7d6e0088a2cc5e53 Mon Sep 17 00:00:00 2001 From: Shivindera Singh Date: Wed, 22 Jun 2022 18:35:02 +0200 Subject: [PATCH 38/61] update docs for hasData service (#134899) * update docs for hasData service * fix typo * change wording from primitive to managed --- dev_docs/key_concepts/data_views.mdx | 7 +++++++ dev_docs/tutorials/data_views.mdx | 8 ++++++++ src/plugins/data_views/README.mdx | 4 ++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/dev_docs/key_concepts/data_views.mdx b/dev_docs/key_concepts/data_views.mdx index c514af21c0cf7..6a0c2a701fae2 100644 --- a/dev_docs/key_concepts/data_views.mdx +++ b/dev_docs/key_concepts/data_views.mdx @@ -27,3 +27,10 @@ Users can create data views via [Data view management](https://www.elastic.co/gu Additionally, they can be created through the data view API. Data views also allow formatters and custom labels to be defined for fields. + +### Services + +**hasData:** A standardized way to check the empty state for indices and data views. +- `hasESData: () => Promise; // Check to see if ES data exists` +- `hasDataView: () => Promise; // Check to see if any data view exists (managed or user created)` +- `hasUserDataView: () => Promise; // Check to see if user created data views exists` diff --git a/dev_docs/tutorials/data_views.mdx b/dev_docs/tutorials/data_views.mdx index 76c4bff8e51e3..eda4b34ac2fd4 100644 --- a/dev_docs/tutorials/data_views.mdx +++ b/dev_docs/tutorials/data_views.mdx @@ -84,3 +84,11 @@ await data.indexPatterns.delete(dataViewId); ### Data view HTTP API Rest-like HTTP CRUD+ API - [docs](https://www.elastic.co/guide/en/kibana/master/data-views-api.html) + + +### Services + +#### **hasData:** A standardized way to check the empty state for indices and data views. +- `hasESData: () => Promise; // Check to see if ES data exists` +- `hasDataView: () => Promise; // Check to see if any data view exists (managed or user created)` +- `hasUserDataView: () => Promise; // Check to see if user created data views exists` diff --git a/src/plugins/data_views/README.mdx b/src/plugins/data_views/README.mdx index f4aa08da8b8ab..2d7bf08d78586 100644 --- a/src/plugins/data_views/README.mdx +++ b/src/plugins/data_views/README.mdx @@ -20,5 +20,5 @@ and field lists across the various Kibana apps. Its typically used in conjunctio **hasData:** A standardized way to check the empty state for indices and data views. - `hasESData: () => Promise; // Check to see if ES data exists` -- `hasDataView: () => Promise; // Check to see if any data view exists (primitive or user created)` -- `hasUserDataView: () => Promise; // Check to see if user created data views exists` +- `hasDataView: () => Promise; // Check to see if any data view exists (managed or user created)` +- `hasUserDataView: () => Promise; // Check to see if user created data views exists` From 770a2cf6fcbc183f0357bef6ae426f6139419901 Mon Sep 17 00:00:00 2001 From: spalger Date: Wed, 22 Jun 2022 12:50:15 -0500 Subject: [PATCH 39/61] skip flaky jest suite (#134924) --- .../sections/rules_list/components/rules_list.test.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx index fc8ad1bb31c09..76e9ca38cd079 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx @@ -398,7 +398,8 @@ describe('Update Api Key', () => { }); }); -describe('rules_list component empty', () => { +// FLAKY: https://github.com/elastic/kibana/issues/134924 +describe.skip('rules_list component empty', () => { let wrapper: ReactWrapper; async function setup() { loadRules.mockResolvedValue({ From 429c14991a9a53e37841812b3b688d4cbc1edfa4 Mon Sep 17 00:00:00 2001 From: spalger Date: Wed, 22 Jun 2022 12:51:52 -0500 Subject: [PATCH 40/61] skip flaky jest suite (#134923) (#134922) --- .../sections/rules_list/components/rules_list.test.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx index 76e9ca38cd079..88e6006a601e7 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.test.tsx @@ -312,7 +312,10 @@ const mockedRulesData = [ beforeEach(() => { (getIsExperimentalFeatureEnabled as jest.Mock).mockImplementation(() => false); }); -describe('Update Api Key', () => { + +// FLAKY: https://github.com/elastic/kibana/issues/134922 +// FLAKY: https://github.com/elastic/kibana/issues/134923 +describe.skip('Update Api Key', () => { const addSuccess = jest.fn(); const addError = jest.fn(); From 60e7f1dcd120c5512506050611d99c3455cbd912 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Wed, 22 Jun 2022 20:39:18 +0200 Subject: [PATCH 41/61] Rename `viewer_user` to `viewer` (#134294) --- packages/kbn-test/src/index.ts | 2 + .../src/kbn_client/kbn_client_requester.ts | 3 +- .../kbn_client/kbn_client_requester_error.ts | 21 +++ x-pack/plugins/apm/dev_docs/local_setup.md | 4 +- .../integration/power_user/no_data_screen.ts | 4 +- .../apm/ftr_e2e/cypress/support/commands.ts | 4 +- .../plugins/apm/scripts/create_apm_users.js | 4 +- .../create_apm_users/create_apm_users.ts | 4 +- .../e2e/journeys/data_view_permissions.ts | 2 +- .../monitor_management_enablement.journey.ts | 2 +- .../read_only_user/monitor_management.ts | 2 +- .../synthetics/e2e/page_objects/login.tsx | 2 +- .../ux/e2e/journeys/core_web_vitals.ts | 2 +- .../ux/e2e/journeys/url_ux_query.journey.ts | 2 +- .../ux/e2e/journeys/ux_js_errors.journey.ts | 2 +- .../common/authentication.ts | 144 ++++++++++++------ .../test/apm_api_integration/common/config.ts | 122 ++++++++++----- .../settings/agent_keys/agent_keys.spec.ts | 4 +- 18 files changed, 225 insertions(+), 105 deletions(-) create mode 100644 packages/kbn-test/src/kbn_client/kbn_client_requester_error.ts diff --git a/packages/kbn-test/src/index.ts b/packages/kbn-test/src/index.ts index c9f0e67c558f1..ea4cfb0cd0fba 100644 --- a/packages/kbn-test/src/index.ts +++ b/packages/kbn-test/src/index.ts @@ -15,6 +15,8 @@ import { // @ts-ignore not typed yet } from './functional_tests/cli'; +export { KbnClientRequesterError } from './kbn_client/kbn_client_requester_error'; + // @internal export { runTestsCli, processRunTestsCliOptions, startServersCli, processStartServersCliOptions }; diff --git a/packages/kbn-test/src/kbn_client/kbn_client_requester.ts b/packages/kbn-test/src/kbn_client/kbn_client_requester.ts index a57515474faf9..36a007c1c0d1c 100644 --- a/packages/kbn-test/src/kbn_client/kbn_client_requester.ts +++ b/packages/kbn-test/src/kbn_client/kbn_client_requester.ts @@ -13,6 +13,7 @@ import Qs from 'querystring'; import Axios, { AxiosResponse, ResponseType } from 'axios'; import { isAxiosRequestError, isAxiosResponseError } from '@kbn/dev-utils'; import { ToolingLog } from '@kbn/tooling-log'; +import { KbnClientRequesterError } from './kbn_client_requester_error'; const isConcliftOnGetError = (error: any) => { return ( @@ -166,7 +167,7 @@ export class KbnClientRequester { continue; } - throw new Error(`${errorMessage} -- and ran out of retries`); + throw new KbnClientRequesterError(`${errorMessage} -- and ran out of retries`, error); } } } diff --git a/packages/kbn-test/src/kbn_client/kbn_client_requester_error.ts b/packages/kbn-test/src/kbn_client/kbn_client_requester_error.ts new file mode 100644 index 0000000000000..d338b24cd16ad --- /dev/null +++ b/packages/kbn-test/src/kbn_client/kbn_client_requester_error.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { AxiosError } from 'axios'; + +export class KbnClientRequesterError extends Error { + axiosError?: AxiosError; + constructor(message: string, error: unknown) { + super(message); + this.name = 'KbnClientRequesterError'; + + if (error instanceof AxiosError) { + this.axiosError = error; + } + } +} diff --git a/x-pack/plugins/apm/dev_docs/local_setup.md b/x-pack/plugins/apm/dev_docs/local_setup.md index 42aaf686dac5b..24a8db44a3cce 100644 --- a/x-pack/plugins/apm/dev_docs/local_setup.md +++ b/x-pack/plugins/apm/dev_docs/local_setup.md @@ -90,8 +90,8 @@ node x-pack/plugins/apm/scripts/create_apm_users.js --username admin --password This will create: -- **viewer_user**: User with `viewer` role (read-only) -- **editor_user**: User with `editor` role (read/write) +- **viewer**: User with `viewer` role (read-only) +- **editor**: User with `editor` role (read/write) # Debugging Elasticsearch queries diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/integration/power_user/no_data_screen.ts b/x-pack/plugins/apm/ftr_e2e/cypress/integration/power_user/no_data_screen.ts index 65591bf991ab8..c7f33301a5dfc 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/integration/power_user/no_data_screen.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/integration/power_user/no_data_screen.ts @@ -29,7 +29,7 @@ describe('No data screen', () => { headers: { 'kbn-xsrf': true, }, - auth: { user: 'editor_user', pass: 'changeme' }, + auth: { user: 'editor', pass: 'changeme' }, }); }); @@ -57,7 +57,7 @@ describe('No data screen', () => { metric: '', }, headers: { 'kbn-xsrf': true }, - auth: { user: 'editor_user', pass: 'changeme' }, + auth: { user: 'editor', pass: 'changeme' }, }); }); }); diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/support/commands.ts b/x-pack/plugins/apm/ftr_e2e/cypress/support/commands.ts index bf0be24353847..94c1f44cbcffc 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/support/commands.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/support/commands.ts @@ -11,11 +11,11 @@ import moment from 'moment'; import { AXE_CONFIG, AXE_OPTIONS } from '@kbn/axe-config'; Cypress.Commands.add('loginAsViewerUser', () => { - cy.loginAs({ username: 'viewer_user', password: 'changeme' }); + cy.loginAs({ username: 'viewer', password: 'changeme' }); }); Cypress.Commands.add('loginAsEditorUser', () => { - cy.loginAs({ username: 'editor_user', password: 'changeme' }); + cy.loginAs({ username: 'editor', password: 'changeme' }); }); Cypress.Commands.add( diff --git a/x-pack/plugins/apm/scripts/create_apm_users.js b/x-pack/plugins/apm/scripts/create_apm_users.js index 37a70c70ef3b0..8cef6ebb6c7ae 100644 --- a/x-pack/plugins/apm/scripts/create_apm_users.js +++ b/x-pack/plugins/apm/scripts/create_apm_users.js @@ -7,8 +7,8 @@ /* * This script will create two users - * - editor_user - * - viewer_user + * - editor + * - viewer * * Usage: node create-apm-users.js ******************************/ diff --git a/x-pack/plugins/apm/scripts/create_apm_users/create_apm_users.ts b/x-pack/plugins/apm/scripts/create_apm_users/create_apm_users.ts index f7d0ea2e78ed8..7532392c9a8b4 100644 --- a/x-pack/plugins/apm/scripts/create_apm_users/create_apm_users.ts +++ b/x-pack/plugins/apm/scripts/create_apm_users/create_apm_users.ts @@ -42,8 +42,8 @@ export async function createApmUsers({ // user definitions const users = [ - { username: 'viewer_user', roles: ['viewer'] }, - { username: 'editor_user', roles: ['editor'] }, + { username: 'viewer', roles: ['viewer'] }, + { username: 'editor', roles: ['editor'] }, ]; // create users diff --git a/x-pack/plugins/synthetics/e2e/journeys/data_view_permissions.ts b/x-pack/plugins/synthetics/e2e/journeys/data_view_permissions.ts index 10e027f249104..b265da7a3f0d6 100644 --- a/x-pack/plugins/synthetics/e2e/journeys/data_view_permissions.ts +++ b/x-pack/plugins/synthetics/e2e/journeys/data_view_permissions.ts @@ -38,7 +38,7 @@ journey('DataViewPermissions', async ({ page, params }) => { await page.goto(`${baseUrl}?${queryParams}`, { waitUntil: 'networkidle', }); - await login.loginToKibana('viewer_user', 'changeme'); + await login.loginToKibana('viewer', 'changeme'); }); step('Click explore data button', async () => { diff --git a/x-pack/plugins/synthetics/e2e/journeys/monitor_management_enablement.journey.ts b/x-pack/plugins/synthetics/e2e/journeys/monitor_management_enablement.journey.ts index b7308ece8af21..5d22fe8491579 100644 --- a/x-pack/plugins/synthetics/e2e/journeys/monitor_management_enablement.journey.ts +++ b/x-pack/plugins/synthetics/e2e/journeys/monitor_management_enablement.journey.ts @@ -57,7 +57,7 @@ journey( }); step('login to Kibana', async () => { - await uptime.loginToKibana('editor_user', 'changeme'); + await uptime.loginToKibana('editor', 'changeme'); const invalid = await page.locator( `text=Username or password is incorrect. Please try again.` ); diff --git a/x-pack/plugins/synthetics/e2e/journeys/read_only_user/monitor_management.ts b/x-pack/plugins/synthetics/e2e/journeys/read_only_user/monitor_management.ts index 33698961951da..677983ca9260b 100644 --- a/x-pack/plugins/synthetics/e2e/journeys/read_only_user/monitor_management.ts +++ b/x-pack/plugins/synthetics/e2e/journeys/read_only_user/monitor_management.ts @@ -23,7 +23,7 @@ journey( }); step('login to Kibana', async () => { - await uptime.loginToKibana('viewer_user', 'changeme'); + await uptime.loginToKibana('viewer', 'changeme'); }); step('Adding monitor is disabled', async () => { diff --git a/x-pack/plugins/synthetics/e2e/page_objects/login.tsx b/x-pack/plugins/synthetics/e2e/page_objects/login.tsx index ae52bb45ddb84..ee0fe0f596b98 100644 --- a/x-pack/plugins/synthetics/e2e/page_objects/login.tsx +++ b/x-pack/plugins/synthetics/e2e/page_objects/login.tsx @@ -24,7 +24,7 @@ export function loginPageProvider({ await page.waitForTimeout(5 * 1000); } }, - async loginToKibana(usernameT?: string, passwordT?: string) { + async loginToKibana(usernameT?: 'editor' | 'viewer', passwordT?: string) { if (isRemote) { await page.click('text="Log in with Elasticsearch"'); } diff --git a/x-pack/plugins/ux/e2e/journeys/core_web_vitals.ts b/x-pack/plugins/ux/e2e/journeys/core_web_vitals.ts index 4138027a6b356..afbec5c055cf1 100644 --- a/x-pack/plugins/ux/e2e/journeys/core_web_vitals.ts +++ b/x-pack/plugins/ux/e2e/journeys/core_web_vitals.ts @@ -29,7 +29,7 @@ journey('Core Web Vitals', async ({ page, params }) => { }); await loginToKibana({ page, - user: { username: 'viewer_user', password: 'changeme' }, + user: { username: 'viewer', password: 'changeme' }, }); }); diff --git a/x-pack/plugins/ux/e2e/journeys/url_ux_query.journey.ts b/x-pack/plugins/ux/e2e/journeys/url_ux_query.journey.ts index f5e8fd19a9557..1762cd22a1186 100644 --- a/x-pack/plugins/ux/e2e/journeys/url_ux_query.journey.ts +++ b/x-pack/plugins/ux/e2e/journeys/url_ux_query.journey.ts @@ -29,7 +29,7 @@ journey('UX URL Query', async ({ page, params }) => { }); await loginToKibana({ page, - user: { username: 'viewer_user', password: 'changeme' }, + user: { username: 'viewer', password: 'changeme' }, }); }); diff --git a/x-pack/plugins/ux/e2e/journeys/ux_js_errors.journey.ts b/x-pack/plugins/ux/e2e/journeys/ux_js_errors.journey.ts index eb61a6e446013..8e124d8a5e4b7 100644 --- a/x-pack/plugins/ux/e2e/journeys/ux_js_errors.journey.ts +++ b/x-pack/plugins/ux/e2e/journeys/ux_js_errors.journey.ts @@ -34,7 +34,7 @@ journey('UX JsErrors', async ({ page, params }) => { }); await loginToKibana({ page, - user: { username: 'viewer_user', password: 'changeme' }, + user: { username: 'viewer', password: 'changeme' }, }); }); diff --git a/x-pack/test/apm_api_integration/common/authentication.ts b/x-pack/test/apm_api_integration/common/authentication.ts index 288f483c8c005..28dffac7f80ca 100644 --- a/x-pack/test/apm_api_integration/common/authentication.ts +++ b/x-pack/test/apm_api_integration/common/authentication.ts @@ -7,25 +7,33 @@ import { Client } from '@elastic/elasticsearch'; import { PrivilegeType } from '@kbn/apm-plugin/common/privilege_type'; +import { ToolingLog } from '@kbn/tooling-log'; +import { omit } from 'lodash'; +import { KbnClientRequesterError } from '@kbn/test'; +import { AxiosError } from 'axios'; import { SecurityServiceProvider } from '../../../../test/common/services/security'; type SecurityService = Awaited>; -export enum ApmUser { +export enum ApmUsername { noAccessUser = 'no_access_user', - viewerUser = 'viewer_user', - editorUser = 'editor_user', + viewerUser = 'viewer', + editorUser = 'editor', apmAnnotationsWriteUser = 'apm_annotations_write_user', apmReadUserWithoutMlAccess = 'apm_read_user_without_ml_access', apmManageOwnAgentKeys = 'apm_manage_own_agent_keys', apmManageOwnAndCreateAgentKeys = 'apm_manage_own_and_create_agent_keys', } -const roles = { - [ApmUser.noAccessUser]: {}, - [ApmUser.viewerUser]: {}, - [ApmUser.editorUser]: {}, - [ApmUser.apmReadUserWithoutMlAccess]: { +export enum ApmCustomRolename { + apmReadUserWithoutMlAccess = 'apm_read_user_without_ml_access', + apmAnnotationsWriteUser = 'apm_annotations_write_user', + apmManageOwnAgentKeys = 'apm_manage_own_agent_keys', + apmManageOwnAndCreateAgentKeys = 'apm_manage_own_and_create_agent_keys', +} + +const customRoles = { + [ApmCustomRolename.apmReadUserWithoutMlAccess]: { elasticsearch: { cluster: [], indices: [ @@ -43,7 +51,7 @@ const roles = { }, ], }, - [ApmUser.apmAnnotationsWriteUser]: { + [ApmCustomRolename.apmAnnotationsWriteUser]: { elasticsearch: { cluster: [], indices: [ @@ -61,12 +69,12 @@ const roles = { ], }, }, - [ApmUser.apmManageOwnAgentKeys]: { + [ApmCustomRolename.apmManageOwnAgentKeys]: { elasticsearch: { cluster: ['manage_own_api_key'], }, }, - [ApmUser.apmManageOwnAndCreateAgentKeys]: { + [ApmCustomRolename.apmManageOwnAndCreateAgentKeys]: { applications: [ { application: 'apm', @@ -77,55 +85,101 @@ const roles = { }, }; -const users = { - [ApmUser.noAccessUser]: { - roles: [], - }, - [ApmUser.viewerUser]: { - roles: ['viewer'], +const users: Record< + ApmUsername, + { builtInRoleNames?: string[]; customRoleNames?: ApmCustomRolename[] } +> = { + [ApmUsername.noAccessUser]: {}, + [ApmUsername.viewerUser]: { + builtInRoleNames: ['viewer'], }, - [ApmUser.editorUser]: { - roles: ['editor'], + [ApmUsername.editorUser]: { + builtInRoleNames: ['editor'], }, - [ApmUser.apmReadUserWithoutMlAccess]: { - roles: [ApmUser.apmReadUserWithoutMlAccess], + [ApmUsername.apmReadUserWithoutMlAccess]: { + customRoleNames: [ApmCustomRolename.apmReadUserWithoutMlAccess], }, - [ApmUser.apmAnnotationsWriteUser]: { - roles: ['editor', ApmUser.apmAnnotationsWriteUser], + [ApmUsername.apmAnnotationsWriteUser]: { + builtInRoleNames: ['editor'], + customRoleNames: [ApmCustomRolename.apmAnnotationsWriteUser], }, - [ApmUser.apmManageOwnAgentKeys]: { - roles: ['editor', ApmUser.apmManageOwnAgentKeys], + [ApmUsername.apmManageOwnAgentKeys]: { + builtInRoleNames: ['editor'], + customRoleNames: [ApmCustomRolename.apmManageOwnAgentKeys], }, - [ApmUser.apmManageOwnAndCreateAgentKeys]: { - roles: ['editor', ApmUser.apmManageOwnAgentKeys, ApmUser.apmManageOwnAndCreateAgentKeys], + [ApmUsername.apmManageOwnAndCreateAgentKeys]: { + builtInRoleNames: ['editor'], + customRoleNames: [ + ApmCustomRolename.apmManageOwnAgentKeys, + ApmCustomRolename.apmManageOwnAndCreateAgentKeys, + ], }, }; -export async function createApmUser(security: SecurityService, apmUser: ApmUser, es: Client) { - const role = roles[apmUser]; - const user = users[apmUser]; +function logErrorResponse(logger: ToolingLog, e: Error) { + if (e instanceof KbnClientRequesterError) { + logger.error(`KbnClientRequesterError: ${JSON.stringify(e.axiosError?.response?.data)}`); + } else if (e instanceof AxiosError) { + logger.error(`AxiosError: ${JSON.stringify(e.response?.data)}`); + } else { + logger.error(`Unknown error: ${e.constructor.name}`); + } +} + +export async function createApmUser({ + username, + security, + es, + logger, +}: { + username: ApmUsername; + security: SecurityService; + es: Client; + logger: ToolingLog; +}) { + const user = users[username]; - if (!role || !user) { - throw new Error(`No configuration found for ${apmUser}`); + if (!user) { + throw new Error(`No configuration found for ${username}`); } - if ('applications' in role) { - // Add application privileges with es client as they are not supported by - // security.user.create. They are preserved when updating the role below - await es.security.putRole({ - name: apmUser, - body: role, + const { builtInRoleNames = [], customRoleNames = [] } = user; + + try { + // create custom roles + await Promise.all( + customRoleNames.map(async (roleName) => createCustomRole({ roleName, security, es })) + ); + + // create user + await security.user.create(username, { + full_name: username, + password: APM_TEST_PASSWORD, + roles: [...builtInRoleNames, ...customRoleNames], }); - delete (role as any).applications; + } catch (e) { + logErrorResponse(logger, e); + throw e; } +} - await security.role.create(apmUser, role); +async function createCustomRole({ + roleName, + security, + es, +}: { + roleName: ApmCustomRolename; + security: SecurityService; + es: Client; +}) { + const role = customRoles[roleName]; - await security.user.create(apmUser, { - full_name: apmUser, - password: APM_TEST_PASSWORD, - roles: user.roles, - }); + // Add application privileges with es client as they are not supported by + // security.user.create. They are preserved when updating the role below + if ('applications' in role) { + await es.security.putRole({ name: roleName, body: role }); + } + await security.role.create(roleName, omit(role, 'applications')); } export const APM_TEST_PASSWORD = 'changeme'; diff --git a/x-pack/test/apm_api_integration/common/config.ts b/x-pack/test/apm_api_integration/common/config.ts index 4b56ad52c2e3f..3c9e99d645c7b 100644 --- a/x-pack/test/apm_api_integration/common/config.ts +++ b/x-pack/test/apm_api_integration/common/config.ts @@ -9,9 +9,10 @@ import { FtrConfigProviderContext } from '@kbn/test'; import supertest from 'supertest'; import { format, UrlObject } from 'url'; import { Client } from '@elastic/elasticsearch'; +import { ToolingLog } from '@kbn/tooling-log'; import { SecurityServiceProvider } from '../../../../test/common/services/security'; import { InheritedFtrProviderContext, InheritedServices } from './ftr_provider_context'; -import { createApmUser, APM_TEST_PASSWORD, ApmUser } from './authentication'; +import { createApmUser, APM_TEST_PASSWORD, ApmUsername } from './authentication'; import { APMFtrConfigName } from '../configs'; import { createApmApiClient } from './apm_api_supertest'; import { RegistryProvider } from './registry'; @@ -26,34 +27,42 @@ export interface ApmFtrConfig { type SecurityService = Awaited>; -function getLegacySupertestClient(kibanaServer: UrlObject, apmUser: ApmUser) { +function getLegacySupertestClient(kibanaServer: UrlObject, username: ApmUsername) { return async (context: InheritedFtrProviderContext) => { const security = context.getService('security'); const es = context.getService('es'); + const logger = context.getService('log'); await security.init(); - await createApmUser(security, apmUser, es); + await createApmUser({ security, username, es, logger }); const url = format({ ...kibanaServer, - auth: `${apmUser}:${APM_TEST_PASSWORD}`, + auth: `${username}:${APM_TEST_PASSWORD}`, }); return supertest(url); }; } -async function getApmApiClient( - kibanaServer: UrlObject, - security: SecurityService, - apmUser: ApmUser, - es: Client -) { - await createApmUser(security, apmUser, es); +async function getApmApiClient({ + kibanaServer, + security, + username, + es, + logger, +}: { + kibanaServer: UrlObject; + security: SecurityService; + username: ApmUsername; + es: Client; + logger: ToolingLog; +}) { + await createApmUser({ security, username, es, logger }); const url = format({ ...kibanaServer, - auth: `${apmUser}:${APM_TEST_PASSWORD}`, + auth: `${username}:${APM_TEST_PASSWORD}`, }); return createApmApiClient(supertest(url)); @@ -85,50 +94,83 @@ export function createTestConfig(config: ApmFtrConfig) { apmApiClient: async (context: InheritedFtrProviderContext) => { const security = context.getService('security'); const es = context.getService('es'); + const logger = context.getService('log'); + await security.init(); return { - noAccessUser: await getApmApiClient(servers.kibana, security, ApmUser.noAccessUser, es), - readUser: await getApmApiClient(servers.kibana, security, ApmUser.viewerUser, es), - writeUser: await getApmApiClient(servers.kibana, security, ApmUser.editorUser, es), - annotationWriterUser: await getApmApiClient( - servers.kibana, + noAccessUser: await getApmApiClient({ + kibanaServer: servers.kibana, + security, + username: ApmUsername.noAccessUser, + es, + logger, + }), + readUser: await getApmApiClient({ + kibanaServer: servers.kibana, + security, + username: ApmUsername.viewerUser, + es, + logger, + }), + writeUser: await getApmApiClient({ + kibanaServer: servers.kibana, security, - ApmUser.apmAnnotationsWriteUser, - es - ), - noMlAccessUser: await getApmApiClient( - servers.kibana, + username: ApmUsername.editorUser, + es, + logger, + }), + annotationWriterUser: await getApmApiClient({ + kibanaServer: servers.kibana, security, - ApmUser.apmReadUserWithoutMlAccess, - es - ), - manageOwnAgentKeysUser: await getApmApiClient( - servers.kibana, + username: ApmUsername.apmAnnotationsWriteUser, + es, + logger, + }), + noMlAccessUser: await getApmApiClient({ + kibanaServer: servers.kibana, security, - ApmUser.apmManageOwnAgentKeys, - es - ), - createAndAllAgentKeysUser: await getApmApiClient( - servers.kibana, + username: ApmUsername.apmReadUserWithoutMlAccess, + es, + logger, + }), + manageOwnAgentKeysUser: await getApmApiClient({ + kibanaServer: servers.kibana, security, - ApmUser.apmManageOwnAndCreateAgentKeys, - es - ), + username: ApmUsername.apmManageOwnAgentKeys, + es, + logger, + }), + createAndAllAgentKeysUser: await getApmApiClient({ + kibanaServer: servers.kibana, + security, + username: ApmUsername.apmManageOwnAndCreateAgentKeys, + es, + logger, + }), }; }, ml: MachineLearningAPIProvider, // legacy clients - legacySupertestAsNoAccessUser: getLegacySupertestClient(kibanaServer, ApmUser.noAccessUser), - legacySupertestAsApmReadUser: getLegacySupertestClient(kibanaServer, ApmUser.viewerUser), - legacySupertestAsApmWriteUser: getLegacySupertestClient(kibanaServer, ApmUser.editorUser), + legacySupertestAsNoAccessUser: getLegacySupertestClient( + kibanaServer, + ApmUsername.noAccessUser + ), + legacySupertestAsApmReadUser: getLegacySupertestClient( + kibanaServer, + ApmUsername.viewerUser + ), + legacySupertestAsApmWriteUser: getLegacySupertestClient( + kibanaServer, + ApmUsername.editorUser + ), legacySupertestAsApmAnnotationsWriteUser: getLegacySupertestClient( kibanaServer, - ApmUser.apmAnnotationsWriteUser + ApmUsername.apmAnnotationsWriteUser ), legacySupertestAsApmReadUserWithoutMlAccess: getLegacySupertestClient( kibanaServer, - ApmUser.apmReadUserWithoutMlAccess + ApmUsername.apmReadUserWithoutMlAccess ), }, junit: { diff --git a/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts b/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts index 4a32ef4a023a6..2f607cecb75bb 100644 --- a/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts +++ b/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts @@ -9,7 +9,7 @@ import { first } from 'lodash'; import { PrivilegeType } from '@kbn/apm-plugin/common/privilege_type'; import { FtrProviderContext } from '../../../common/ftr_provider_context'; import { ApmApiError, ApmApiSupertest } from '../../../common/apm_api_supertest'; -import { ApmUser } from '../../../common/authentication'; +import { ApmUsername } from '../../../common/authentication'; export default function ApiTest({ getService }: FtrProviderContext) { const registry = getService('registry'); @@ -92,7 +92,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { () => { afterEach(async () => { await esClient.security.invalidateApiKey({ - username: ApmUser.apmManageOwnAndCreateAgentKeys, + username: ApmUsername.apmManageOwnAndCreateAgentKeys, }); }); From 16c2c717f121c6933b02daf9bce13a1fecd97c36 Mon Sep 17 00:00:00 2001 From: Kurt Date: Wed, 22 Jun 2022 16:20:24 -0400 Subject: [PATCH 42/61] Changing to pass a new Set to setState to fix potential no-op (#134936) --- .../edit_role/privileges/kibana/feature_table/feature_table.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx index 666cd39dc8cd7..a506f8675bc11 100644 --- a/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx +++ b/x-pack/plugins/security/public/management/roles/edit_role/privileges/kibana/feature_table/feature_table.tsx @@ -242,7 +242,7 @@ export class FeatureTable extends Component { } this.setState({ - expandedPrivilegeControls: this.state.expandedPrivilegeControls, + expandedPrivilegeControls: new Set([...this.state.expandedPrivilegeControls]), }); }} > From 81e820825870c6e095cacc0431914b452c3a5e34 Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Wed, 22 Jun 2022 13:25:59 -0700 Subject: [PATCH 43/61] [DOCS] Add prerequisites to get rule, find rule, get rule health APIs (#134865) --- docs/api/alerting.asciidoc | 6 +- docs/api/alerting/create_rule.asciidoc | 9 ++- docs/api/alerting/delete_rule.asciidoc | 8 +- docs/api/alerting/find_rules.asciidoc | 101 +++++++++++++++---------- docs/api/alerting/get_rules.asciidoc | 32 +++++--- docs/api/alerting/health.asciidoc | 101 ++++++++++++------------- docs/api/alerting/update_rule.asciidoc | 7 +- 7 files changed, 151 insertions(+), 113 deletions(-) diff --git a/docs/api/alerting.asciidoc b/docs/api/alerting.asciidoc index fd5a23886cc5a..782b5aaaa77c7 100644 --- a/docs/api/alerting.asciidoc +++ b/docs/api/alerting.asciidoc @@ -33,9 +33,10 @@ For deprecated APIs, refer to <>. include::alerting/create_rule.asciidoc[leveloffset=+1] include::alerting/delete_rule.asciidoc[leveloffset=+1] +include::alerting/find_rules.asciidoc[leveloffset=+1] +include::alerting/health.asciidoc[leveloffset=+1] +include::alerting/get_rules.asciidoc[leveloffset=+1] include::alerting/update_rule.asciidoc[leveloffset=+1] -include::alerting/get_rules.asciidoc[] -include::alerting/find_rules.asciidoc[] include::alerting/list_rule_types.asciidoc[] include::alerting/enable_rule.asciidoc[] include::alerting/disable_rule.asciidoc[] @@ -43,5 +44,4 @@ include::alerting/mute_all_alerts.asciidoc[] include::alerting/mute_alert.asciidoc[] include::alerting/unmute_all_alerts.asciidoc[] include::alerting/unmute_alert.asciidoc[] -include::alerting/health.asciidoc[] include::alerting/legacy/index.asciidoc[] diff --git a/docs/api/alerting/create_rule.asciidoc b/docs/api/alerting/create_rule.asciidoc index 0b219ad00ebcb..86538499be010 100644 --- a/docs/api/alerting/create_rule.asciidoc +++ b/docs/api/alerting/create_rule.asciidoc @@ -16,10 +16,11 @@ Create {kib} rules. === {api-prereq-title} -You must have `all` privileges for the *Management* > *Stack Rules* feature or -for the *{ml-app}*, *{observability}*, or *Security* features, depending on the -`consumer` and `rule_type_id` of the rule you're creating. If the rule has -`actions`, you must also have `read` privileges for the *Management* > +You must have `all` privileges for the appropriate {kib} features, depending on +the `consumer` and `rule_type_id` of the rules you're creating. For example, the +*Management* > *Stack Rules* feature, *Analytics* > *Discover* and *{ml-app}* +features, *{observability}*, and *Security* features. If the rule has `actions`, +you must also have `read` privileges for the *Management* > *Actions and Connectors* feature. For more details, refer to <>. diff --git a/docs/api/alerting/delete_rule.asciidoc b/docs/api/alerting/delete_rule.asciidoc index 537b93872059c..12b07c5bb0f12 100644 --- a/docs/api/alerting/delete_rule.asciidoc +++ b/docs/api/alerting/delete_rule.asciidoc @@ -17,9 +17,11 @@ WARNING: After you delete a rule, you cannot recover it. === {api-prereq-title} -You must have `all` privileges for the *Management* > *Stack Rules* feature or -for the *{ml-app}*, *{observability}*, or *Security* features, depending on the -`consumer` and `rule_type_id` of the rule you're deleting. +You must have `all` privileges for the appropriate {kib} features, depending on +the `consumer` and `rule_type_id` of the rule you're deleting. For example, the +*Management* > *Stack Rules* feature, *Analytics* > *Discover* or *{ml-app}* +features, *{observability}*, or *Security* features. For more details, refer to +<>. [[delete-rule-api-path-params]] === {api-path-parms-title} diff --git a/docs/api/alerting/find_rules.asciidoc b/docs/api/alerting/find_rules.asciidoc index 48c4bb25e0eea..13b39db3f280b 100644 --- a/docs/api/alerting/find_rules.asciidoc +++ b/docs/api/alerting/find_rules.asciidoc @@ -1,77 +1,101 @@ [[find-rules-api]] -=== Find rules API +== Find rules API ++++ Find rules ++++ Retrieve a paginated set of rules based on condition. -NOTE: As rules change in {kib}, the results on each page of the response also -change. Use the find API for traditional paginated results, but avoid using it to export large amounts of data. - [[find-rules-api-request]] -==== Request +=== {api-request-title} `GET :/api/alerting/rules/_find` `GET :/s//api/alerting/rules/_find` +=== {api-prereq-title} + +You must have `read` privileges for the appropriate {kib} features, depending on +the `consumer` and `rule_type_id` of the rules you're seeking. For example, the +*Management* > *Stack Rules* feature, *Analytics* > *Discover* and *{ml-app}* +features, *{observability}*, and *Security* features. To find rules associated +with the *{stack-monitor-app}*, use the `monitoring_user` built-in role. + +For more details, refer to <>. + +=== {api-description-title} + +As rules change in {kib}, the results on each page of the response also change. +Use the find API for traditional paginated results, but avoid using it to export +large amounts of data. + +NOTE: Rule `params` are stored as a {ref}/flattened.html[flattened field type] +and analyzed as keywords. + [[find-rules-api-path-params]] -==== Path parameters +=== {api-path-parms-title} `space_id`:: - (Optional, string) An identifier for the space. If `space_id` is not provided in the URL, the default space is used. +(Optional, string) An identifier for the space. If `space_id` is not provided in +the URL, the default space is used. [[find-rules-api-query-params]] -==== Query Parameters +=== {api-query-parms-title} -NOTE: Rule `params` are stored as a {ref}/flattened.html[flattened field type] and analyzed as keywords. +`default_search_operator`:: +(Optional, string) The operator to use for the `simple_query_string`. The +default is 'OR'. -`per_page`:: - (Optional, number) The number of rules to return per page. +`fields`:: +(Optional, array of strings) The fields to return in the `attributes` key of the +response. + +`filter`:: +(Optional, string) A <> string that you filter with an +attribute from your saved object. It should look like +`savedObjectType.attributes.title: "myTitle"`. However, If you used a direct +attribute of a saved object, such as `updatedAt`, you will have to define your +filter, for example, `savedObjectType.updatedAt > 2018-12-22`. + +`has_reference`:: +(Optional, object) Filters the rules that have a relation with the reference +objects with the specific "type" and "ID". `page`:: - (Optional, number) The page number. +(Optional, number) The page number. -`search`:: - (Optional, string) An Elasticsearch {ref}/query-dsl-simple-query-string-query.html[simple_query_string] query that filters the rules in the response. +`per_page`:: +(Optional, number) The number of rules to return per page. -`default_search_operator`:: - (Optional, string) The operator to use for the `simple_query_string`. The default is 'OR'. +`search`:: +(Optional, string) An {es} +{ref}/query-dsl-simple-query-string-query.html[simple_query_string] query that +filters the rules in the response. `search_fields`:: - (Optional, array|string) The fields to perform the `simple_query_string` parsed query against. - -`fields`:: - (Optional, array of strings) The fields to return in the `attributes` key of the response. +(Optional, array or string) The fields to perform the `simple_query_string` +parsed query against. `sort_field`:: - (Optional, string) Sorts the response. Could be a rule field returned in the `attributes` key of the response. +(Optional, string) Sorts the response. Could be a rule field returned in the +`attributes` key of the response. `sort_order`:: - (Optional, string) Sort direction, either `asc` or `desc`. - -`has_reference`:: - (Optional, object) Filters the rules that have a relation with the reference objects with the specific "type" and "ID". - -`filter`:: - (Optional, string) A <> string that you filter with an attribute from your saved object. - It should look like savedObjectType.attributes.title: "myTitle". However, If you used a direct attribute of a saved object, such as `updatedAt`, - you will have to define your filter, for example, savedObjectType.updatedAt > 2018-12-22. +(Optional, string) Sort direction, either `asc` or `desc`. [[find-rules-api-request-codes]] -==== Response code +=== {api-response-codes-title} `200`:: - Indicates a successful call. +Indicates a successful call. -==== Examples +=== {api-examples-title} Find rules with names that start with `my`: [source,sh] -------------------------------------------------- -$ curl -X GET api/alerting/rules/_find?search_fields=name&search=my* +GET api/alerting/rules/_find?search_fields=name&search=my* -------------------------------------------------- // KIBANA @@ -110,18 +134,19 @@ The API returns the following: "scheduled_task_id": "0b092d90-6b62-11eb-9e0d-85d233e3ee35", "execution_status": { "last_execution_date": "2021-02-10T17:55:14.262Z", - "status": "ok" + "status": "ok", + "last_duration": 384 } - }, + } ] } -------------------------------------------------- -For parameters that accept multiple values (e.g. `fields`), repeat the +For parameters that accept multiple values (such as `fields`), repeat the query parameter for each value: [source,sh] -------------------------------------------------- -$ curl -X GET api/alerting/rules/_find?fields=id&fields=name +GET api/alerting/rules/_find?fields=id&fields=name -------------------------------------------------- // KIBANA diff --git a/docs/api/alerting/get_rules.asciidoc b/docs/api/alerting/get_rules.asciidoc index 1594ec1fb7ae6..9c465b9f40ff8 100644 --- a/docs/api/alerting/get_rules.asciidoc +++ b/docs/api/alerting/get_rules.asciidoc @@ -1,5 +1,5 @@ [[get-rule-api]] -=== Get rule API +== Get rule API ++++ Get rule ++++ @@ -7,35 +7,46 @@ Retrieve a rule by ID. [[get-rule-api-request]] -==== Request +=== {api-request-title} `GET :/api/alerting/rule/` `GET :/s//api/alerting/rule/` +=== {api-prereq-title} + +You must have `read` privileges for the appropriate {kib} features, depending on +the `consumer` and `rule_type_id` of the rules you're seeking. For example, the +*Management* > *Stack Rules* feature, *Analytics* > *Discover* and *{ml-app}* +features, *{observability}*, and *Security* features. To get rules associated +with the *{stack-monitor-app}*, use the `monitoring_user` built-in role. + +For more details, refer to <>. + [[get-rule-api-params]] -==== Path parameters +=== {api-path-parms-title} `id`:: - (Required, string) The ID of the rule to retrieve. +(Required, string) The identifier of the rule to retrieve. `space_id`:: - (Optional, string) An identifier for the space. If `space_id` is not provided in the URL, the default space is used. +(Optional, string) An identifier for the space. If `space_id` is not provided in +the URL, the default space is used. [[get-rule-api-codes]] -==== Response code +=== {api-response-codes-title} `200`:: - Indicates a successful call. +Indicates a successful call. [[get-rule-api-example]] -==== Example +=== {api-examples-title} Retrieve the rule object with the ID `41893910-6bca-11eb-9e0d-85d233e3ee35`: [source,sh] -------------------------------------------------- -$ curl -X GET api/alerting/rule/41893910-6bca-11eb-9e0d-85d233e3ee35 +GET api/alerting/rule/41893910-6bca-11eb-9e0d-85d233e3ee35 -------------------------------------------------- // KIBANA @@ -69,7 +80,8 @@ The API returns the following: "scheduled_task_id": "0b092d90-6b62-11eb-9e0d-85d233e3ee35", "execution_status": { "last_execution_date": "2021-02-10T17:55:14.262Z", - "status": "ok" + "status": "ok", + "last_duration": 359 } } -------------------------------------------------- diff --git a/docs/api/alerting/health.asciidoc b/docs/api/alerting/health.asciidoc index 24955bb81fa98..1f0c8936419b5 100644 --- a/docs/api/alerting/health.asciidoc +++ b/docs/api/alerting/health.asciidoc @@ -1,38 +1,45 @@ [[get-alerting-framework-health-api]] -=== Get Alerting framework health API +== Get alerting framework health API ++++ -Get Alerting framework health +Get alerting framework health ++++ -Retrieve the health status of the Alerting framework. +Retrieve the health status of the alerting framework. [[get-alerting-framework-health-api-request]] -==== Request +=== {api-request-title} `GET :/api/alerting/_health` `GET :/s//api/alerting/_health` +=== {api-prereq-title} + +You must have `read` privileges for the *Management* > *Stack Rules* feature or +for at least one of the *Analytics* > *Discover*, *Analytics* > *{ml-app}*, +*{observability}*, or *Security* features. + [[get-alerting-framework-health-api-params]] -==== Path parameters +=== {api-path-parms-title} `space_id`:: - (Optional, string) An identifier for the space. If `space_id` is not provided in the URL, the default space is used. +(Optional, string) An identifier for the space. If `space_id` is not provided in +the URL, the default space is used. [[get-alerting-framework-health-api-codes]] -==== Response code +=== {api-response-codes-title} `200`:: - Indicates a successful call. +Indicates a successful call. [[get-alerting-framework-health-api-example]] -==== Example +=== {api-examples-title} -Retrieve the health status of the Alerting framework: +Retrieve the health status of the alerting framework: [source,sh] -------------------------------------------------- -$ curl -X GET api/alerting/_health +GET api/alerting/_health -------------------------------------------------- // KIBANA @@ -41,56 +48,46 @@ The API returns the following: [source,sh] -------------------------------------------------- { - "is_sufficiently_secure":true, - "has_permanent_encryption_key":true, - "alerting_framework_health":{ + "is_sufficiently_secure":true, <1> + "has_permanent_encryption_key":true, <2> + "alerting_framework_health":{ <3> "decryption_health":{ "status":"ok", - "timestamp":"2021-02-10T23:35:04.949Z" + "timestamp":"2022-06-21T21:46:15.023Z" + }, + "execution_health":{ + "status":"ok", + "timestamp":"2022-06-21T21:46:15.023Z" + }, + "read_health":{ + "status":"ok", + "timestamp":"2022-06-21T21:46:15.023Z" + } + }, + "alerting_framework_heath":{ <4> + "_deprecated":"This state property has a typo, use \"alerting_framework_health\" instead.","decryption_health":{ + "status":"ok", + "timestamp":"2022-06-21T21:46:15.023Z" }, "execution_health":{ "status":"ok", - "timestamp":"2021-02-10T23:35:04.949Z" + "timestamp":"2022-06-21T21:46:15.023Z" }, "read_health":{ "status":"ok", - "timestamp":"2021-02-10T23:35:04.949Z" + "timestamp":"2022-06-21T21:46:15.023Z" } } } -------------------------------------------------- - -The health API response contains the following properties: - -[cols="2*<"] -|=== - -| `is_sufficiently_secure` -| Returns `false` if security is enabled, but TLS is not. - -| `has_permanent_encryption_key` -| Return the state `false` if Encrypted Saved Object plugin has not a permanent encryption Key. - -| `alerting_framework_health` -| This state property has three substates that identify the health of the alerting framework API: `decryption_health`, `execution_health`, and `read_health`. - -| deprecated::`alerting_framework_heath` -| This state property has a typo, use `alerting_framework_health` instead. It has three substates that identify the health of the alerting framework API: `decryption_health`, `execution_health`, and `read_health`. - -|=== - -`alerting_framework_health` consists of the following properties: - -[cols="2*<"] -|=== - -| `decryption_health` -| Returns the timestamp and status of the rule decryption: `ok`, `warn` or `error` . - -| `execution_health` -| Returns the timestamp and status of the rule execution: `ok`, `warn` or `error`. - -| `read_health` -| Returns the timestamp and status of the rule reading events: `ok`, `warn` or `error`. - -|=== +<1> `is_sufficiently_secure` is `false` when security is enabled, but TLS is not. +<2> `has_permanent_encryption_key` is `false` when the encrypted saved object +plugin does not have a permanent encryption key. +<3> `alerting_framework_health` has three substates that identify the health of +the alerting framework: `decryption_health`, `execution_health`, and +`read_health`. `decryption_health` returns the timestamp and status of the rule +decryption: `ok`, `warn` or `error`. `execution_health` returns the timestamp +and status of the rule execution: `ok`, `warn` or `error`. `read_health` returns +the timestamp and status of the rule reading events: `ok`, `warn` or `error`. +<4> `alerting_framework_heath` has a typo, use `alerting_framework_health` +instead. deprecated:[8.0.0] diff --git a/docs/api/alerting/update_rule.asciidoc b/docs/api/alerting/update_rule.asciidoc index ecce62912939d..19a9c7c0144b0 100644 --- a/docs/api/alerting/update_rule.asciidoc +++ b/docs/api/alerting/update_rule.asciidoc @@ -15,9 +15,10 @@ Update the attributes for an existing rule. === {api-prereq-title} -You must have `all` privileges for the *Management* > *Stack Rules* feature or -for the *{ml-app}*, *{observability}*, or *Security* features, depending on the -`consumer` and `rule_type_id` of the rule you're updating. If the rule has +You must have `all` privileges for the appropriate {kib} features, depending on +the `consumer` and `rule_type_id` of the rule you're updating. For example, the +*Management* > *Stack Rules* feature, *Analytics* > *Discover* and *{ml-app}* +features, *{observability}*, or *Security* features. If the rule has `actions`, you must also have `read` privileges for the *Management* > *Actions and Connectors* feature. For more details, refer to <>. From b41bc6643dbcdbe47a155bfd846cdefbe7d33cf5 Mon Sep 17 00:00:00 2001 From: Michael Olorunnisola Date: Wed, 22 Jun 2022 18:19:29 -0400 Subject: [PATCH 44/61] [Security Solution][Investigations] - Disable adding notes when read only (#133905) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../body/actions/add_note_icon_item.test.tsx | 68 +++++++++++++++++++ .../body/actions/add_note_icon_item.tsx | 34 ++++++---- .../body/actions/pin_event_action.test.tsx | 68 +++++++++++++++++++ .../body/actions/pin_event_action.tsx | 3 + .../body/events/event_column_view.test.tsx | 11 +++ .../components/timeline/body/index.test.tsx | 15 +++- .../timeline/notes_tab_content/index.tsx | 4 +- .../components/timeline/pin/index.tsx | 5 +- .../timeline/properties/helpers.tsx | 9 ++- 9 files changed, 196 insertions(+), 21 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/add_note_icon_item.test.tsx create mode 100644 x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/pin_event_action.test.tsx diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/add_note_icon_item.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/add_note_icon_item.test.tsx new file mode 100644 index 0000000000000..1f4d0e9e8d12c --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/add_note_icon_item.test.tsx @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render, screen } from '@testing-library/react'; +import React from 'react'; + +import { AddEventNoteAction } from './add_note_icon_item'; +import { useUserPrivileges } from '../../../../../common/components/user_privileges'; +import { getEndpointPrivilegesInitialStateMock } from '../../../../../common/components/user_privileges/endpoint/mocks'; +import { TestProviders } from '../../../../../common/mock'; +import { TimelineType } from '../../../../../../common/types'; + +jest.mock('../../../../../common/components/user_privileges'); +const useUserPrivilegesMock = useUserPrivileges as jest.Mock; + +describe('AddEventNoteAction', () => { + beforeEach(() => { + jest.resetAllMocks(); + }); + + describe('isDisabled', () => { + test('it disables the add note button when the user does NOT have crud privileges', () => { + useUserPrivilegesMock.mockReturnValue({ + kibanaSecuritySolutionsPrivileges: { crud: false, read: true }, + endpointPrivileges: getEndpointPrivilegesInitialStateMock(), + }); + + render( + + + + ); + + expect(screen.getByTestId('timeline-notes-button-small')).toHaveClass( + 'euiButtonIcon-isDisabled' + ); + }); + + test('it enables the add note button when the user has crud privileges', () => { + useUserPrivilegesMock.mockReturnValue({ + kibanaSecuritySolutionsPrivileges: { crud: true, read: true }, + endpointPrivileges: getEndpointPrivilegesInitialStateMock(), + }); + + render( + + + + ); + + expect(screen.getByTestId('timeline-notes-button-small')).not.toHaveClass( + 'euiButtonIcon-isDisabled' + ); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/add_note_icon_item.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/add_note_icon_item.tsx index 22c40ba78b0fe..784685997e5ff 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/add_note_icon_item.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/add_note_icon_item.tsx @@ -11,6 +11,7 @@ import { TimelineType } from '../../../../../../common/types/timeline'; import * as i18n from '../translations'; import { NotesButton } from '../../properties/helpers'; import { ActionIconItem } from './action_icon_item'; +import { useUserPrivileges } from '../../../../../common/components/user_privileges'; interface AddEventNoteActionProps { ariaLabel?: string; @@ -24,20 +25,25 @@ const AddEventNoteActionComponent: React.FC = ({ showNotes, timelineType, toggleShowNotes, -}) => ( - - - -); +}) => { + const { kibanaSecuritySolutionsPrivileges } = useUserPrivileges(); + + return ( + + + + ); +}; AddEventNoteActionComponent.displayName = 'AddEventNoteActionComponent'; diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/pin_event_action.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/pin_event_action.test.tsx new file mode 100644 index 0000000000000..e94c2ac2a38f0 --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/pin_event_action.test.tsx @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { render, screen } from '@testing-library/react'; +import React from 'react'; + +import { PinEventAction } from './pin_event_action'; +import { useUserPrivileges } from '../../../../../common/components/user_privileges'; +import { getEndpointPrivilegesInitialStateMock } from '../../../../../common/components/user_privileges/endpoint/mocks'; +import { TestProviders } from '../../../../../common/mock'; +import { TimelineType } from '../../../../../../common/types'; + +jest.mock('../../../../../common/components/user_privileges'); +const useUserPrivilegesMock = useUserPrivileges as jest.Mock; + +describe('PinEventAction', () => { + beforeEach(() => { + jest.resetAllMocks(); + }); + + describe('isDisabled', () => { + test('it disables the pin event button when the user does NOT have crud privileges', () => { + useUserPrivilegesMock.mockReturnValue({ + kibanaSecuritySolutionsPrivileges: { crud: false, read: true }, + endpointPrivileges: getEndpointPrivilegesInitialStateMock(), + }); + + render( + + + + ); + + expect(screen.getByTestId('pin')).toHaveClass('euiButtonIcon-isDisabled'); + }); + + test('it enables the pin event button when the user has crud privileges', () => { + useUserPrivilegesMock.mockReturnValue({ + kibanaSecuritySolutionsPrivileges: { crud: true, read: true }, + endpointPrivileges: getEndpointPrivilegesInitialStateMock(), + }); + + render( + + + + ); + + expect(screen.getByTestId('pin')).not.toHaveClass('euiButtonIcon-isDisabled'); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/pin_event_action.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/pin_event_action.tsx index 53970594c8c1c..d0294d3908590 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/pin_event_action.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/actions/pin_event_action.tsx @@ -13,6 +13,7 @@ import { EventsTdContent } from '../../styles'; import { eventHasNotes, getPinTooltip } from '../helpers'; import { Pin } from '../../pin'; import { TimelineType } from '../../../../../../common/types/timeline'; +import { useUserPrivileges } from '../../../../../common/components/user_privileges'; interface PinEventActionProps { ariaLabel?: string; @@ -31,6 +32,7 @@ const PinEventActionComponent: React.FC = ({ eventIsPinned, timelineType, }) => { + const { kibanaSecuritySolutionsPrivileges } = useUserPrivileges(); const tooltipContent = useMemo( () => getPinTooltip({ @@ -50,6 +52,7 @@ const PinEventActionComponent: React.FC = ({ ariaLabel={ariaLabel} allowUnpinning={!eventHasNotes(noteIds)} data-test-subj="pin-event" + isDisabled={kibanaSecuritySolutionsPrivileges.crud === false} isAlert={isAlert} onClick={onPinClicked} pinned={eventIsPinned} diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/event_column_view.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/event_column_view.test.tsx index 334bd464f700f..59b331d4d7f11 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/event_column_view.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/events/event_column_view.test.tsx @@ -28,6 +28,17 @@ jest.mock('../../../../../common/hooks/use_selector', () => ({ useShallowEqualSelector: jest.fn(), useDeepEqualSelector: jest.fn(), })); +jest.mock('../../../../../common/components/user_privileges', () => { + return { + useUserPrivileges: () => ({ + listPrivileges: { loading: false, error: undefined, result: undefined }, + detectionEnginePrivileges: { loading: false, error: undefined, result: undefined }, + endpointPrivileges: {}, + kibanaSecuritySolutionsPrivileges: { crud: true, read: true }, + }), + }; +}); + jest.mock('../../../../../common/lib/kibana', () => ({ useKibana: () => ({ services: { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx index 200c9810d9fe6..f2045327a42f7 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/body/index.test.tsx @@ -36,6 +36,17 @@ import { createStore, State } from '../../../../common/store'; jest.mock('../../../../common/lib/kibana/hooks'); jest.mock('../../../../common/hooks/use_app_toasts'); +jest.mock('../../../../common/components/user_privileges', () => { + return { + useUserPrivileges: () => ({ + listPrivileges: { loading: false, error: undefined, result: undefined }, + detectionEnginePrivileges: { loading: false, error: undefined, result: undefined }, + endpointPrivileges: {}, + kibanaSecuritySolutionsPrivileges: { crud: true, read: true }, + }), + }; +}); + jest.mock('../../../../common/lib/kibana', () => { const originalModule = jest.requireActual('../../../../common/lib/kibana'); const mockCasesContract = jest.requireActual('@kbn/cases-plugin/public/mocks'); @@ -225,7 +236,7 @@ describe('Body', () => { mockDispatch.mockClear(); }); - test('Add a Note to an event', () => { + test('Add a note to an event', () => { const wrapper = mount( @@ -257,7 +268,7 @@ describe('Body', () => { ); }); - test('Add two Note to an event', () => { + test('Add two notes to an event', () => { const { storage } = createSecuritySolutionStorageMock(); const state: State = { ...mockGlobalState, diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/notes_tab_content/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/notes_tab_content/index.tsx index c2179abbb61df..7c25794a16c80 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/notes_tab_content/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/notes_tab_content/index.tsx @@ -39,6 +39,7 @@ import { getTimelineNoteSelector } from './selectors'; import { DetailsPanel } from '../../side_panel'; import { getScrollToTopSelector } from '../tabs_content/selectors'; import { useScrollToTop } from '../../../../common/components/scroll_to_top'; +import { useUserPrivileges } from '../../../../common/components/user_privileges'; const FullWidthFlexGroup = styled(EuiFlexGroup)` width: 100%; @@ -131,6 +132,7 @@ interface NotesTabContentProps { const NotesTabContentComponent: React.FC = ({ timelineId }) => { const dispatch = useDispatch(); + const { kibanaSecuritySolutionsPrivileges } = useUserPrivileges(); const getScrollToTop = useMemo(() => getScrollToTopSelector(), []); const scrollToTop = useShallowEqualSelector((state) => getScrollToTop(state, timelineId)); @@ -239,7 +241,7 @@ const NotesTabContentComponent: React.FC = ({ timelineId } showTimelineDescription /> - {!isImmutable && ( + {!isImmutable && kibanaSecuritySolutionsPrivileges.crud === true && ( void; pinned: boolean; @@ -45,7 +46,7 @@ export const getDefaultAriaLabel = ({ }; export const Pin = React.memo( - ({ ariaLabel, allowUnpinning, isAlert, onClick = noop, pinned, timelineType }) => { + ({ ariaLabel, allowUnpinning, isAlert, isDisabled, onClick = noop, pinned, timelineType }) => { const isTemplate = timelineType === TimelineType.template; const defaultAriaLabel = getDefaultAriaLabel({ isAlert, @@ -60,7 +61,7 @@ export const Pin = React.memo( data-test-subj="pin" iconType={getPinIcon(pinned)} onClick={onClick} - isDisabled={isTemplate || !allowUnpinning} + isDisabled={isDisabled || isTemplate || !allowUnpinning} size="s" /> ); diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx index c59c0a15ff53d..ff0d8686bb9c3 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/properties/helpers.tsx @@ -91,6 +91,7 @@ NewTimeline.displayName = 'NewTimeline'; interface NotesButtonProps { ariaLabel?: string; + isDisabled?: boolean; showNotes: boolean; toggleShowNotes: () => void; toolTip?: string; @@ -99,6 +100,7 @@ interface NotesButtonProps { interface SmallNotesButtonProps { ariaLabel?: string; + isDisabled?: boolean; toggleShowNotes: () => void; timelineType: TimelineTypeLiteral; } @@ -106,7 +108,7 @@ interface SmallNotesButtonProps { export const NOTES_BUTTON_CLASS_NAME = 'notes-button'; const SmallNotesButton = React.memo( - ({ ariaLabel = i18n.NOTES, toggleShowNotes, timelineType }) => { + ({ ariaLabel = i18n.NOTES, isDisabled, toggleShowNotes, timelineType }) => { const isTemplate = timelineType === TimelineType.template; return ( @@ -114,6 +116,7 @@ const SmallNotesButton = React.memo( aria-label={ariaLabel} className={NOTES_BUTTON_CLASS_NAME} data-test-subj="timeline-notes-button-small" + disabled={isDisabled} iconType="editorComment" onClick={toggleShowNotes} size="s" @@ -125,10 +128,11 @@ const SmallNotesButton = React.memo( SmallNotesButton.displayName = 'SmallNotesButton'; export const NotesButton = React.memo( - ({ ariaLabel, showNotes, timelineType, toggleShowNotes, toolTip }) => + ({ ariaLabel, isDisabled, showNotes, timelineType, toggleShowNotes, toolTip }) => showNotes ? ( @@ -136,6 +140,7 @@ export const NotesButton = React.memo( From e5d73a116908d82b875fc3ad248e57fa5c5f970c Mon Sep 17 00:00:00 2001 From: Baturalp Gurdin <9674241+suchcodemuchwow@users.noreply.github.com> Date: Thu, 23 Jun 2022 00:44:11 +0200 Subject: [PATCH 45/61] ingest performance metrics to ci-stats (#134792) --- .buildkite/pipelines/performance/daily.yml | 6 + .../functional/report_performance_metrics.sh | 21 +++ package.json | 5 + packages/BUILD.bazel | 2 + .../BUILD.bazel | 124 ++++++++++++++++++ .../README.md | 3 + .../jest.config.js | 13 ++ .../package.json | 7 + .../src/apm_client.ts | 98 ++++++++++++++ .../src/cli.ts | 81 ++++++++++++ .../src/index.ts | 10 ++ .../src/reporter.ts | 56 ++++++++ .../src/utils.ts | 19 +++ .../tsconfig.json | 17 +++ .../src/ci_stats_reporter.ts | 20 +++ packages/kbn-pm/dist/index.js | 23 ++++ scripts/report_performance_metrics.js | 10 ++ yarn.lock | 23 ++++ 18 files changed, 538 insertions(+) create mode 100644 .buildkite/scripts/steps/functional/report_performance_metrics.sh create mode 100644 packages/kbn-ci-stats-performance-metrics/BUILD.bazel create mode 100644 packages/kbn-ci-stats-performance-metrics/README.md create mode 100644 packages/kbn-ci-stats-performance-metrics/jest.config.js create mode 100644 packages/kbn-ci-stats-performance-metrics/package.json create mode 100644 packages/kbn-ci-stats-performance-metrics/src/apm_client.ts create mode 100644 packages/kbn-ci-stats-performance-metrics/src/cli.ts create mode 100644 packages/kbn-ci-stats-performance-metrics/src/index.ts create mode 100644 packages/kbn-ci-stats-performance-metrics/src/reporter.ts create mode 100644 packages/kbn-ci-stats-performance-metrics/src/utils.ts create mode 100644 packages/kbn-ci-stats-performance-metrics/tsconfig.json create mode 100644 scripts/report_performance_metrics.js diff --git a/.buildkite/pipelines/performance/daily.yml b/.buildkite/pipelines/performance/daily.yml index 4e243a23f1e02..fdc4ae17d69a2 100644 --- a/.buildkite/pipelines/performance/daily.yml +++ b/.buildkite/pipelines/performance/daily.yml @@ -25,6 +25,12 @@ steps: # queue: n2-2 # depends_on: tests + - label: ':chart_with_upwards_trend: Report performance metrics to ci-stats' + command: .buildkite/scripts/steps/functional/report_performance_metrics.sh + agents: + queue: n2-2 + depends_on: tests + - wait: ~ continue_on_failure: true diff --git a/.buildkite/scripts/steps/functional/report_performance_metrics.sh b/.buildkite/scripts/steps/functional/report_performance_metrics.sh new file mode 100644 index 0000000000000..66a5ac27a8dff --- /dev/null +++ b/.buildkite/scripts/steps/functional/report_performance_metrics.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source .buildkite/scripts/common/util.sh + +# TODO: Add new user and change lines accordingly +USER_FROM_VAULT="$(retry 5 5 vault read -field=username secret/kibana-issues/dev/ci_stats_performance_metrics)" +PASS_FROM_VAULT="$(retry 5 5 vault read -field=password secret/kibana-issues/dev/ci_stats_performance_metrics)" +APM_SERVER_URL="https://kibana-ops-e2e-perf.es.us-central1.gcp.cloud.es.io:9243/internal/apm" +BUILD_ID=${BUILDKITE_BUILD_ID} + +.buildkite/scripts/bootstrap.sh + +echo "--- Extract APM metrics & report them to ci-stats" + +node scripts/report_performance_metrics \ + --buildId "${BUILD_ID}" \ + --apm-url "${APM_SERVER_URL}" \ + --apm-username "${USER_FROM_VAULT}" \ + --apm-password "${PASS_FROM_VAULT}" diff --git a/package.json b/package.json index d0446690c06a3..14c0d5e1b0aa1 100644 --- a/package.json +++ b/package.json @@ -142,6 +142,7 @@ "@kbn/analytics-shippers-fullstory": "link:bazel-bin/packages/analytics/shippers/fullstory", "@kbn/apm-config-loader": "link:bazel-bin/packages/kbn-apm-config-loader", "@kbn/apm-utils": "link:bazel-bin/packages/kbn-apm-utils", + "@kbn/ci-stats-performance-metrics": "link:bazel-bin/packages/kbn-ci-stats-performance-metrics", "@kbn/coloring": "link:bazel-bin/packages/kbn-coloring", "@kbn/config": "link:bazel-bin/packages/kbn-config", "@kbn/config-mocks": "link:bazel-bin/packages/kbn-config-mocks", @@ -191,6 +192,7 @@ "@kbn/i18n-react": "link:bazel-bin/packages/kbn-i18n-react", "@kbn/interpreter": "link:bazel-bin/packages/kbn-interpreter", "@kbn/io-ts-utils": "link:bazel-bin/packages/kbn-io-ts-utils", + "@kbn/kbn-ci-stats-performance-metrics": "link:bazel-bin/packages/kbn-kbn-ci-stats-performance-metrics", "@kbn/kibana-json-schema": "link:bazel-bin/packages/kbn-kibana-json-schema", "@kbn/logging": "link:bazel-bin/packages/kbn-logging", "@kbn/logging-mocks": "link:bazel-bin/packages/kbn-logging-mocks", @@ -393,6 +395,7 @@ "proxy-from-env": "1.0.0", "puid": "1.0.7", "puppeteer": "^10.2.0", + "qs": "^6.10.5", "query-string": "^6.13.2", "random-word-slugs": "^0.0.5", "raw-loader": "^3.1.0", @@ -669,6 +672,7 @@ "@types/kbn__bazel-packages": "link:bazel-bin/packages/kbn-bazel-packages/npm_module_types", "@types/kbn__bazel-runner": "link:bazel-bin/packages/kbn-bazel-runner/npm_module_types", "@types/kbn__ci-stats-core": "link:bazel-bin/packages/kbn-ci-stats-core/npm_module_types", + "@types/kbn__ci-stats-performance-metrics": "link:bazel-bin/packages/kbn-ci-stats-performance-metrics/npm_module_types", "@types/kbn__ci-stats-reporter": "link:bazel-bin/packages/kbn-ci-stats-reporter/npm_module_types", "@types/kbn__cli-dev-mode": "link:bazel-bin/packages/kbn-cli-dev-mode/npm_module_types", "@types/kbn__coloring": "link:bazel-bin/packages/kbn-coloring/npm_module_types", @@ -734,6 +738,7 @@ "@types/kbn__interpreter": "link:bazel-bin/packages/kbn-interpreter/npm_module_types", "@types/kbn__io-ts-utils": "link:bazel-bin/packages/kbn-io-ts-utils/npm_module_types", "@types/kbn__jest-serializers": "link:bazel-bin/packages/kbn-jest-serializers/npm_module_types", + "@types/kbn__kbn-ci-stats-performance-metrics": "link:bazel-bin/packages/kbn-kbn-ci-stats-performance-metrics/npm_module_types", "@types/kbn__kibana-json-schema": "link:bazel-bin/packages/kbn-kibana-json-schema/npm_module_types", "@types/kbn__logging": "link:bazel-bin/packages/kbn-logging/npm_module_types", "@types/kbn__logging-mocks": "link:bazel-bin/packages/kbn-logging-mocks/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index a0e952de7f874..2cce534bb98ef 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -62,6 +62,7 @@ filegroup( "//packages/kbn-bazel-packages:build", "//packages/kbn-bazel-runner:build", "//packages/kbn-ci-stats-core:build", + "//packages/kbn-ci-stats-performance-metrics:build", "//packages/kbn-ci-stats-reporter:build", "//packages/kbn-cli-dev-mode:build", "//packages/kbn-coloring:build", @@ -214,6 +215,7 @@ filegroup( "//packages/kbn-bazel-packages:build_types", "//packages/kbn-bazel-runner:build_types", "//packages/kbn-ci-stats-core:build_types", + "//packages/kbn-ci-stats-performance-metrics:build_types", "//packages/kbn-ci-stats-reporter:build_types", "//packages/kbn-cli-dev-mode:build_types", "//packages/kbn-coloring:build_types", diff --git a/packages/kbn-ci-stats-performance-metrics/BUILD.bazel b/packages/kbn-ci-stats-performance-metrics/BUILD.bazel new file mode 100644 index 0000000000000..ff475252a3e99 --- /dev/null +++ b/packages/kbn-ci-stats-performance-metrics/BUILD.bazel @@ -0,0 +1,124 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "kbn-ci-stats-performance-metrics" +PKG_REQUIRE_NAME = "@kbn/ci-stats-performance-metrics" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "//packages/kbn-dev-cli-errors", + "//packages/kbn-dev-cli-runner", + "//packages/kbn-test", + "//packages/kbn-tooling-log", + "//packages/kbn-ci-stats-reporter", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "//packages/kbn-dev-cli-errors:npm_module_types", + "//packages/kbn-dev-cli-runner:npm_module_types", + "//packages/kbn-test:npm_module_types", + "//packages/kbn-tooling-log:npm_module_types", + "//packages/kbn-ci-stats-reporter:npm_module_types", + "@npm//@types/node", + "@npm//@types/jest", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-ci-stats-performance-metrics/README.md b/packages/kbn-ci-stats-performance-metrics/README.md new file mode 100644 index 0000000000000..8b1390e8dc7ab --- /dev/null +++ b/packages/kbn-ci-stats-performance-metrics/README.md @@ -0,0 +1,3 @@ +# @kbn/ci-stats-performance-metrics + +Empty package generated by @kbn/generate diff --git a/packages/kbn-ci-stats-performance-metrics/jest.config.js b/packages/kbn-ci-stats-performance-metrics/jest.config.js new file mode 100644 index 0000000000000..98fc60a9a052a --- /dev/null +++ b/packages/kbn-ci-stats-performance-metrics/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../..', + roots: ['/packages/kbn-ci-stats-performance-metrics'], +}; diff --git a/packages/kbn-ci-stats-performance-metrics/package.json b/packages/kbn-ci-stats-performance-metrics/package.json new file mode 100644 index 0000000000000..0801174ab4a02 --- /dev/null +++ b/packages/kbn-ci-stats-performance-metrics/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/ci-stats-performance-metrics", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0" +} diff --git a/packages/kbn-ci-stats-performance-metrics/src/apm_client.ts b/packages/kbn-ci-stats-performance-metrics/src/apm_client.ts new file mode 100644 index 0000000000000..ac72b79dc5fb4 --- /dev/null +++ b/packages/kbn-ci-stats-performance-metrics/src/apm_client.ts @@ -0,0 +1,98 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'; +import { ToolingLog } from '@kbn/tooling-log'; +import { getYearAgoIso } from './utils'; + +type Environment = 'ENVIRONMENT_ALL' | 'ci' | 'development'; +type LatencyAggregationType = 'avg' | 'p95' | 'p99'; +type TransactionType = 'page-load' | 'app-change' | 'user-interaction' | 'http-request'; + +interface MainStatisticsRequestOptions { + ciBuildId: string; + start?: string; + end?: string; + environment?: Environment; + transactionType?: TransactionType; + latencyAggregationType?: LatencyAggregationType; +} + +export interface TransactionGroup { + name: string; + latency: number; + throughput: number; + errorRate?: any; + impact: number; + transactionType: TransactionType; +} + +export interface MainStatisticsResponse { + transactionGroups: TransactionGroup[]; + isAggregationAccurate: boolean; + bucketSize: number; +} + +const DEFAULT_BASE_URL = + 'https://kibana-ops-e2e-perf.kb.us-central1.gcp.cloud.es.io:9243/internal/apm'; +const DEFAULT_CLIENT_TIMEOUT = 120 * 1000; + +export class ApmClient { + private readonly client: AxiosInstance; + private readonly logger: ToolingLog; + + constructor(config: AxiosRequestConfig, logger: ToolingLog) { + const { baseURL = DEFAULT_BASE_URL, timeout = DEFAULT_CLIENT_TIMEOUT, auth } = config; + + this.client = axios.create({ + auth, + baseURL, + timeout, + }); + + this.logger = logger || console; + } + + public get baseUrl(): string | undefined { + return this.client.defaults.baseURL; + } + + public async mainStatistics(queryParams: MainStatisticsRequestOptions) { + const { now, yearAgo } = getYearAgoIso(); + + const { + ciBuildId, + start = yearAgo, + end = now, + environment = 'ENVIRONMENT_ALL', + transactionType = 'page-load', + latencyAggregationType = 'avg', + } = queryParams; + + try { + const responseRaw = await this.client.get( + `services/kibana-frontend/transactions/groups/main_statistics`, + { + params: { + kuery: `labels.ciBuildId:${ciBuildId}`, + environment, + start, + end, + transactionType, + latencyAggregationType, + }, + } + ); + return responseRaw.data; + } catch (error) { + this.logger.error( + `Error fetching main statistics from APM, ci build ${ciBuildId}, error message ${error.message}` + ); + } + } +} diff --git a/packages/kbn-ci-stats-performance-metrics/src/cli.ts b/packages/kbn-ci-stats-performance-metrics/src/cli.ts new file mode 100644 index 0000000000000..49af12a48bb19 --- /dev/null +++ b/packages/kbn-ci-stats-performance-metrics/src/cli.ts @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** *********************************************************** + * + * Run `node scripts/extract_performance_testing_dataset --help` for usage information + * + *************************************************************/ + +import { run } from '@kbn/dev-cli-runner'; +import { createFlagError } from '@kbn/dev-cli-errors'; +import { reporter } from './reporter'; + +export async function runCli() { + run( + async ({ log, flags }) => { + const apmBaseUrl = flags['apm-url']; + if (apmBaseUrl && typeof apmBaseUrl !== 'string') { + throw createFlagError('--apm-url must be a string'); + } + if (!apmBaseUrl) { + throw createFlagError('--apm-url must be defined'); + } + + const apmUsername = flags['apm-username']; + if (apmUsername && typeof apmUsername !== 'string') { + throw createFlagError('--apm-username must be a string'); + } + if (!apmUsername) { + throw createFlagError('--apm-username must be defined'); + } + + const apmPassword = flags['apm-password']; + if (apmPassword && typeof apmPassword !== 'string') { + throw createFlagError('--apm-password must be a string'); + } + if (!apmPassword) { + throw createFlagError('--apm-password must be defined'); + } + + const buildId = flags.buildId; + if (buildId && typeof buildId !== 'string') { + throw createFlagError('--buildId must be a string'); + } + if (!buildId) { + throw createFlagError('--buildId must be defined'); + } + + return reporter({ + apmClient: { + auth: { + username: apmUsername, + password: apmPassword, + }, + baseURL: apmBaseUrl, + }, + param: { + ciBuildId: buildId, + }, + log, + }); + }, + { + description: `CLI to fetch performance metrics and report those to ci-stats`, + flags: { + string: ['buildId', 'apm-url', 'apm-username', 'apm-password'], + help: ` + --buildId BUILDKITE_JOB_ID or uuid generated locally, stored in APM-based document as label: 'labels.testBuildId' + --apm-url url for APM cluster + --apm-username username for Apm + --apm-password password for Apm + `, + }, + } + ); +} diff --git a/packages/kbn-ci-stats-performance-metrics/src/index.ts b/packages/kbn-ci-stats-performance-metrics/src/index.ts new file mode 100644 index 0000000000000..0da7aee1a6ef2 --- /dev/null +++ b/packages/kbn-ci-stats-performance-metrics/src/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { reporter } from './reporter'; +export { runCli } from './cli'; diff --git a/packages/kbn-ci-stats-performance-metrics/src/reporter.ts b/packages/kbn-ci-stats-performance-metrics/src/reporter.ts new file mode 100644 index 0000000000000..904eff2393e96 --- /dev/null +++ b/packages/kbn-ci-stats-performance-metrics/src/reporter.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ToolingLog } from '@kbn/tooling-log'; +import { CiStatsReporter } from '@kbn/ci-stats-reporter'; + +import { ApmClient } from './apm_client'; + +interface ReporterOptions { + param: { + ciBuildId: string; + }; + apmClient: { + baseURL: string; + auth: { + username: string; + password: string; + }; + }; + log: ToolingLog; +} + +export async function reporter(options: ReporterOptions) { + const { + param: { ciBuildId }, + apmClient: apmClientOptions, + log, + } = options; + + const apm = new ApmClient(apmClientOptions, log); + + const performanceMainStats = await apm.mainStatistics({ ciBuildId }); + + if (performanceMainStats) { + const { transactionGroups: tg } = performanceMainStats; + + const loginStats = tg.find((e) => e.name === '/login'); + const appHomeStats = tg.find((e) => e.name === '/app/home'); + const appDashboardsStats = tg.find((e) => e.name === '/app/dashboards'); + + const ciStatsReporter = CiStatsReporter.fromEnv(log); + + const body = { + ...(loginStats && { page_load_login: loginStats.latency }), + ...(appHomeStats && { page_load_app_home: appHomeStats.latency }), + ...(appDashboardsStats && { page_load_app_dashboards: appDashboardsStats.latency }), + }; + + await ciStatsReporter.reportPerformanceMetrics(body); + } +} diff --git a/packages/kbn-ci-stats-performance-metrics/src/utils.ts b/packages/kbn-ci-stats-performance-metrics/src/utils.ts new file mode 100644 index 0000000000000..bd22c0569b247 --- /dev/null +++ b/packages/kbn-ci-stats-performance-metrics/src/utils.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export function getYearAgoIso() { + const d = new Date(); + const nowIso = d.toISOString(); + d.setMonth(d.getMonth() - 12); + const yearAgoIso = d.toISOString(); + + return { + now: nowIso, + yearAgo: yearAgoIso, + }; +} diff --git a/packages/kbn-ci-stats-performance-metrics/tsconfig.json b/packages/kbn-ci-stats-performance-metrics/tsconfig.json new file mode 100644 index 0000000000000..a8cfc2cceb08b --- /dev/null +++ b/packages/kbn-ci-stats-performance-metrics/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts b/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts index 5d3f17a76f687..7a23f20143d94 100644 --- a/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts +++ b/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts @@ -57,6 +57,8 @@ export interface CiStatsMetric { meta?: CiStatsMetadata; } +export type PerformanceMetrics = Record; + /** A ci-stats timing event */ export interface CiStatsTiming { /** Top-level categorization for the timing, e.g. "scripts/foo", process type, etc. */ @@ -306,6 +308,24 @@ export class CiStatsReporter { } } + async reportPerformanceMetrics(metrics: PerformanceMetrics) { + if (!this.hasBuildConfig()) { + return; + } + + const buildId = this.config?.buildId; + if (!buildId) { + throw new Error(`Performance metrics can't be reported without a buildId`); + } + + return !!(await this.req({ + auth: true, + path: `/v1/performance_metrics_report?buildId=${buildId}`, + body: { metrics }, + bodyDesc: `performance metrics: ${metrics}`, + })); + } + /** * In order to allow this code to run before @kbn/utils is built, @kbn/pm will pass * in the upstreamBranch when calling the timings() method. Outside of @kbn/pm diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index 329bd18e33952..17bafb19a996c 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -1806,6 +1806,29 @@ class CiStatsReporter { await flushBuffer(); } } + + async reportPerformanceMetrics(metrics) { + var _this$config9; + + if (!this.hasBuildConfig()) { + return; + } + + const buildId = (_this$config9 = this.config) === null || _this$config9 === void 0 ? void 0 : _this$config9.buildId; + + if (!buildId) { + throw new Error(`Performance metrics can't be reported without a buildId`); + } + + return !!(await this.req({ + auth: true, + path: `/v1/performance_metrics_report?buildId=${buildId}`, + body: { + metrics + }, + bodyDesc: `performance metrics: ${metrics}` + })); + } /** * In order to allow this code to run before @kbn/utils is built, @kbn/pm will pass * in the upstreamBranch when calling the timings() method. Outside of @kbn/pm diff --git a/scripts/report_performance_metrics.js b/scripts/report_performance_metrics.js new file mode 100644 index 0000000000000..8fc7e5c4b52a3 --- /dev/null +++ b/scripts/report_performance_metrics.js @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +require('../src/setup_node_env'); +require('@kbn/ci-stats-performance-metrics').runCli(); diff --git a/yarn.lock b/yarn.lock index 96f12f915c47e..2c9dcd462951b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2991,6 +2991,10 @@ version "0.0.0" uid "" +"@kbn/ci-stats-performance-metrics@link:bazel-bin/packages/kbn-ci-stats-performance-metrics": + version "0.0.0" + uid "" + "@kbn/ci-stats-reporter@link:bazel-bin/packages/kbn-ci-stats-reporter": version "0.0.0" uid "" @@ -3251,6 +3255,10 @@ version "0.0.0" uid "" +"@kbn/kbn-ci-stats-performance-metrics@link:bazel-bin/packages/kbn-kbn-ci-stats-performance-metrics": + version "0.0.0" + uid "" + "@kbn/kibana-json-schema@link:bazel-bin/packages/kbn-kibana-json-schema": version "0.0.0" uid "" @@ -6402,6 +6410,10 @@ version "0.0.0" uid "" +"@types/kbn__ci-stats-performance-metrics@link:bazel-bin/packages/kbn-ci-stats-performance-metrics/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__ci-stats-reporter@link:bazel-bin/packages/kbn-ci-stats-reporter/npm_module_types": version "0.0.0" uid "" @@ -6662,6 +6674,10 @@ version "0.0.0" uid "" +"@types/kbn__kbn-ci-stats-performance-metrics@link:bazel-bin/packages/kbn-kbn-ci-stats-performance-metrics/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__kibana-json-schema@link:bazel-bin/packages/kbn-kibana-json-schema/npm_module_types": version "0.0.0" uid "" @@ -23863,6 +23879,13 @@ qs@^6.10.0: dependencies: side-channel "^1.0.4" +qs@^6.10.5: + version "6.10.5" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" + integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== + dependencies: + side-channel "^1.0.4" + qs@^6.7.0: version "6.9.4" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" From 9a1e1d00a43ff825892457463363551b3ecc05f5 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Thu, 23 Jun 2022 00:22:00 +0100 Subject: [PATCH 46/61] chore(NA): auto bootstrap after removing node modules manually (#134961) * chore(NA): mechanism for autobootstrap when manually removing node_modules * fix(NA): check folders with isDirectory * fix(NA): check folders with isDirectory * fix(NA): check folders with isDirectory * docs(NA): update typo on code comment --- packages/kbn-pm/dist/index.js | 50 ++++++++++++----- packages/kbn-pm/src/commands/bootstrap.ts | 14 +++-- packages/kbn-pm/src/utils/bazel/index.ts | 2 +- packages/kbn-pm/src/utils/bazel/yarn.ts | 53 +++++++++++++++++++ .../kbn-pm/src/utils/bazel/yarn_integrity.ts | 24 --------- 5 files changed, 103 insertions(+), 40 deletions(-) create mode 100644 packages/kbn-pm/src/utils/bazel/yarn.ts delete mode 100644 packages/kbn-pm/src/utils/bazel/yarn_integrity.ts diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index 17bafb19a996c..3df97ff607ad8 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -61971,12 +61971,14 @@ const BootstrapCommand = { ms: Date.now() - start }); } - }; // Force install is set in case a flag is passed into yarn kbn bootstrap + }; // Force install is set in case a flag is passed into yarn kbn bootstrap or + // our custom logic have determined there is a chance node_modules have been manually deleted and as such bazel + // tracking mechanism is no longer valid - const forceInstall = !!options && options['force-install'] === true; // Install bazel machinery tools if needed + const forceInstall = !!options && options['force-install'] === true || (await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_8__[/* haveNodeModulesBeenManuallyDeleted */ "c"])(kibanaProjectPath)); // Install bazel machinery tools if needed - await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_8__[/* installBazelTools */ "c"])(rootPath); // Setup remote cache settings in .bazelrc.cache if needed + await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_8__[/* installBazelTools */ "d"])(rootPath); // Setup remote cache settings in .bazelrc.cache if needed await Object(_utils_bazel_setup_remote_cache__WEBPACK_IMPORTED_MODULE_9__[/* setupRemoteCache */ "a"])(rootPath); // Bootstrap process for Bazel packages // Bazel is now managing dependencies so yarn install @@ -61990,7 +61992,7 @@ const BootstrapCommand = { if (forceInstall) { await time('force install dependencies', async () => { - await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_8__[/* removeYarnIntegrityFileIfExists */ "e"])(path__WEBPACK_IMPORTED_MODULE_0___default.a.resolve(kibanaProjectPath, 'node_modules')); + await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_8__[/* removeYarnIntegrityFileIfExists */ "f"])(path__WEBPACK_IMPORTED_MODULE_0___default.a.resolve(kibanaProjectPath, 'node_modules')); await Object(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_2__["runBazel"])({ bazelArgs: ['clean', '--expunge'], log: _utils_log__WEBPACK_IMPORTED_MODULE_3__[/* log */ "a"] @@ -62171,7 +62173,7 @@ const CleanCommand = { } // Runs Bazel soft clean - if (await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_5__[/* isBazelBinAvailable */ "d"])(kbn.getAbsolute())) { + if (await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_5__[/* isBazelBinAvailable */ "e"])(kbn.getAbsolute())) { await Object(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_4__["runBazel"])({ bazelArgs: ['clean'], log: _utils_log__WEBPACK_IMPORTED_MODULE_7__[/* log */ "a"] @@ -62331,7 +62333,7 @@ const ResetCommand = { } // Runs Bazel hard clean and deletes Bazel Cache Folders - if (await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_5__[/* isBazelBinAvailable */ "d"])(kbn.getAbsolute())) { + if (await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_5__[/* isBazelBinAvailable */ "e"])(kbn.getAbsolute())) { // Hard cleaning bazel await Object(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_4__["runBazel"])({ bazelArgs: ['clean', '--expunge'], @@ -62799,12 +62801,14 @@ async function getBazelRepositoryCacheFolder() { /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "b", function() { return _get_cache_folders__WEBPACK_IMPORTED_MODULE_0__["b"]; }); /* harmony import */ var _install_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/utils/bazel/install_tools.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "c", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_1__["a"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "d", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_1__["a"]; }); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "d", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_1__["b"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "e", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_1__["b"]; }); -/* harmony import */ var _yarn_integrity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/bazel/yarn_integrity.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "e", function() { return _yarn_integrity__WEBPACK_IMPORTED_MODULE_2__["a"]; }); +/* harmony import */ var _yarn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/bazel/yarn.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "c", function() { return _yarn__WEBPACK_IMPORTED_MODULE_2__["a"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "f", function() { return _yarn__WEBPACK_IMPORTED_MODULE_2__["b"]; }); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -63007,11 +63011,12 @@ async function setupRemoteCache(repoRootPath) { /***/ }), -/***/ "./src/utils/bazel/yarn_integrity.ts": +/***/ "./src/utils/bazel/yarn.ts": /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return removeYarnIntegrityFileIfExists; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return removeYarnIntegrityFileIfExists; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return haveNodeModulesBeenManuallyDeleted; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("path"); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/utils/fs.ts"); @@ -63023,6 +63028,7 @@ async function setupRemoteCache(repoRootPath) { * Side Public License, v 1. */ + // yarn integrity file checker async function removeYarnIntegrityFileIfExists(nodeModulesPath) { try { @@ -63034,6 +63040,26 @@ async function removeYarnIntegrityFileIfExists(nodeModulesPath) { } } catch {// no-op } +} // yarn and bazel integration checkers + +async function areNodeModulesPresent(kbnRootPath) { + try { + return await Object(_fs__WEBPACK_IMPORTED_MODULE_1__[/* isDirectory */ "c"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(kbnRootPath, 'node_modules')); + } catch { + return false; + } +} + +async function haveBazelFoldersBeenCreatedBefore(kbnRootPath) { + try { + return (await Object(_fs__WEBPACK_IMPORTED_MODULE_1__[/* isDirectory */ "c"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(kbnRootPath, 'bazel-bin', 'packages'))) || (await Object(_fs__WEBPACK_IMPORTED_MODULE_1__[/* isDirectory */ "c"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(kbnRootPath, 'bazel-kibana', 'packages'))) || (await Object(_fs__WEBPACK_IMPORTED_MODULE_1__[/* isDirectory */ "c"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(kbnRootPath, 'bazel-out', 'host'))); + } catch { + return false; + } +} + +async function haveNodeModulesBeenManuallyDeleted(kbnRootPath) { + return !(await areNodeModulesPresent(kbnRootPath)) && (await haveBazelFoldersBeenCreatedBefore(kbnRootPath)); } /***/ }), diff --git a/packages/kbn-pm/src/commands/bootstrap.ts b/packages/kbn-pm/src/commands/bootstrap.ts index 3f9275cff8e61..8ac55b3478363 100644 --- a/packages/kbn-pm/src/commands/bootstrap.ts +++ b/packages/kbn-pm/src/commands/bootstrap.ts @@ -16,7 +16,11 @@ import { linkProjectExecutables } from '../utils/link_project_executables'; import { ICommand } from '.'; import { readYarnLock } from '../utils/yarn_lock'; import { validateDependencies } from '../utils/validate_dependencies'; -import { installBazelTools, removeYarnIntegrityFileIfExists } from '../utils/bazel'; +import { + installBazelTools, + haveNodeModulesBeenManuallyDeleted, + removeYarnIntegrityFileIfExists, +} from '../utils/bazel'; import { setupRemoteCache } from '../utils/bazel/setup_remote_cache'; export const BootstrapCommand: ICommand = { @@ -46,8 +50,12 @@ export const BootstrapCommand: ICommand = { } }; - // Force install is set in case a flag is passed into yarn kbn bootstrap - const forceInstall = !!options && options['force-install'] === true; + // Force install is set in case a flag is passed into yarn kbn bootstrap or + // our custom logic have determined there is a chance node_modules have been manually deleted and as such bazel + // tracking mechanism is no longer valid + const forceInstall = + (!!options && options['force-install'] === true) || + (await haveNodeModulesBeenManuallyDeleted(kibanaProjectPath)); // Install bazel machinery tools if needed await installBazelTools(rootPath); diff --git a/packages/kbn-pm/src/utils/bazel/index.ts b/packages/kbn-pm/src/utils/bazel/index.ts index 39b3cb9c61f00..d1460d5598f55 100644 --- a/packages/kbn-pm/src/utils/bazel/index.ts +++ b/packages/kbn-pm/src/utils/bazel/index.ts @@ -8,4 +8,4 @@ export * from './get_cache_folders'; export * from './install_tools'; -export * from './yarn_integrity'; +export * from './yarn'; diff --git a/packages/kbn-pm/src/utils/bazel/yarn.ts b/packages/kbn-pm/src/utils/bazel/yarn.ts new file mode 100644 index 0000000000000..24e44be3b3cdf --- /dev/null +++ b/packages/kbn-pm/src/utils/bazel/yarn.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { join, resolve } from 'path'; +import { isDirectory, isFile, tryRealpath, unlink } from '../fs'; + +// yarn integrity file checker +export async function removeYarnIntegrityFileIfExists(nodeModulesPath: string) { + try { + const nodeModulesRealPath = await tryRealpath(nodeModulesPath); + const yarnIntegrityFilePath = join(nodeModulesRealPath, '.yarn-integrity'); + + // check if the file exists and delete it in that case + if (await isFile(yarnIntegrityFilePath)) { + await unlink(yarnIntegrityFilePath); + } + } catch { + // no-op + } +} + +// yarn and bazel integration checkers +async function areNodeModulesPresent(kbnRootPath: string) { + try { + return await isDirectory(resolve(kbnRootPath, 'node_modules')); + } catch { + return false; + } +} + +async function haveBazelFoldersBeenCreatedBefore(kbnRootPath: string) { + try { + return ( + (await isDirectory(resolve(kbnRootPath, 'bazel-bin', 'packages'))) || + (await isDirectory(resolve(kbnRootPath, 'bazel-kibana', 'packages'))) || + (await isDirectory(resolve(kbnRootPath, 'bazel-out', 'host'))) + ); + } catch { + return false; + } +} + +export async function haveNodeModulesBeenManuallyDeleted(kbnRootPath: string) { + return ( + !(await areNodeModulesPresent(kbnRootPath)) && + (await haveBazelFoldersBeenCreatedBefore(kbnRootPath)) + ); +} diff --git a/packages/kbn-pm/src/utils/bazel/yarn_integrity.ts b/packages/kbn-pm/src/utils/bazel/yarn_integrity.ts deleted file mode 100644 index 1ac9bfeba1e3b..0000000000000 --- a/packages/kbn-pm/src/utils/bazel/yarn_integrity.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { join } from 'path'; -import { isFile, tryRealpath, unlink } from '../fs'; - -export async function removeYarnIntegrityFileIfExists(nodeModulesPath: string) { - try { - const nodeModulesRealPath = await tryRealpath(nodeModulesPath); - const yarnIntegrityFilePath = join(nodeModulesRealPath, '.yarn-integrity'); - - // check if the file exists and delete it in that case - if (await isFile(yarnIntegrityFilePath)) { - await unlink(yarnIntegrityFilePath); - } - } catch { - // no-op - } -} From da2315225c77ef04b09378f859791e66464c8e82 Mon Sep 17 00:00:00 2001 From: Xavier Mouligneau Date: Wed, 22 Jun 2022 22:58:49 -0400 Subject: [PATCH 47/61] [RAM] O11y register alert config (#134943) * still lazy load alert configuration but on the start and not teh mount * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' * review I Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../register_alerts_table_configuration.tsx | 28 ++++++++----------- x-pack/plugins/observability/public/plugin.ts | 18 ++++++++---- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/x-pack/plugins/observability/public/config/register_alerts_table_configuration.tsx b/x-pack/plugins/observability/public/config/register_alerts_table_configuration.tsx index 2ecaca0eb3e81..c3f02684ab879 100644 --- a/x-pack/plugins/observability/public/config/register_alerts_table_configuration.tsx +++ b/x-pack/plugins/observability/public/config/register_alerts_table_configuration.tsx @@ -6,7 +6,6 @@ */ import type { - AlertsTableConfigurationRegistryContract, AlertTableFlyoutComponent, GetRenderCellValue, } from '@kbn/triggers-actions-ui-plugin/public'; @@ -27,20 +26,15 @@ const AlertsFlyoutFooterLazy = lazy( () => import('../pages/alerts/components/alerts_flyout/alerts_flyout_footer') ); -const registerAlertsTableConfiguration = (registry: AlertsTableConfigurationRegistryContract) => { - if (registry.has(observabilityFeatureId)) { - return; - } - registry.register({ - id: observabilityFeatureId, - columns: alertO11yColumns.map(addDisplayNames), - externalFlyout: { - header: AlertsPageFlyoutHeaderLazy as AlertTableFlyoutComponent, - body: AlertsPageFlyoutBodyLazy as AlertTableFlyoutComponent, - footer: AlertsFlyoutFooterLazy as AlertTableFlyoutComponent, - }, - getRenderCellValue: getRenderCellValue as GetRenderCellValue, - }); -}; +const getO11yAlertsTableConfiguration = () => ({ + id: observabilityFeatureId, + columns: alertO11yColumns.map(addDisplayNames), + externalFlyout: { + header: AlertsPageFlyoutHeaderLazy as AlertTableFlyoutComponent, + body: AlertsPageFlyoutBodyLazy as AlertTableFlyoutComponent, + footer: AlertsFlyoutFooterLazy as AlertTableFlyoutComponent, + }, + getRenderCellValue: getRenderCellValue as GetRenderCellValue, +}); -export { registerAlertsTableConfiguration }; +export { getO11yAlertsTableConfiguration }; diff --git a/x-pack/plugins/observability/public/plugin.ts b/x-pack/plugins/observability/public/plugin.ts index d0c7cf3dbad45..20d87b1da4b32 100644 --- a/x-pack/plugins/observability/public/plugin.ts +++ b/x-pack/plugins/observability/public/plugin.ts @@ -144,12 +144,6 @@ export class Plugin // Get start services const [coreStart, pluginsStart, { navigation }] = await coreSetup.getStartServices(); - // Register alerts metadata - const { registerAlertsTableConfiguration } = await import( - './config/register_alerts_table_configuration' - ); - const { alertsTableConfigurationRegistry } = pluginsStart.triggersActionsUi; - registerAlertsTableConfiguration(alertsTableConfigurationRegistry); // The `/api/features` endpoint requires the "Global All" Kibana privilege. Users with a // subset of this privilege are not authorized to access this endpoint and will receive a 404 // error that causes the Alerting view to fail to load. @@ -288,6 +282,18 @@ export class Plugin getSharedUXContext: pluginsStart.sharedUX.getContextServices, }); + const getAsyncO11yAlertsTableConfiguration = async () => { + const { getO11yAlertsTableConfiguration } = await import( + './config/register_alerts_table_configuration' + ); + return getO11yAlertsTableConfiguration(); + }; + + const { alertsTableConfigurationRegistry } = pluginsStart.triggersActionsUi; + getAsyncO11yAlertsTableConfiguration().then((config) => { + alertsTableConfigurationRegistry.register(config); + }); + return { navigation: { PageTemplate, From 52fa9c391fe85a6f6fe5c8e5a361a7735ca1df9e Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Thu, 23 Jun 2022 00:50:55 -0400 Subject: [PATCH 48/61] [api-docs] Daily api_docs build (#134973) --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/banners.mdx | 2 +- api_docs/bfetch.mdx | 2 +- api_docs/canvas.mdx | 2 +- api_docs/cases.mdx | 2 +- api_docs/charts.mdx | 2 +- api_docs/cloud.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/controls.mdx | 2 +- api_docs/core.devdocs.json | 32 +-- api_docs/core.mdx | 4 +- api_docs/core_application.mdx | 4 +- api_docs/core_chrome.mdx | 4 +- api_docs/core_http.mdx | 4 +- api_docs/core_saved_objects.mdx | 4 +- api_docs/custom_integrations.mdx | 2 +- api_docs/dashboard.mdx | 2 +- api_docs/dashboard_enhanced.mdx | 2 +- api_docs/data.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_view_editor.mdx | 2 +- api_docs/data_view_field_editor.mdx | 2 +- api_docs/data_view_management.mdx | 2 +- api_docs/data_views.mdx | 2 +- api_docs/data_visualizer.mdx | 2 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 2 +- api_docs/deprecations_by_team.mdx | 2 +- api_docs/dev_tools.mdx | 2 +- api_docs/discover.mdx | 2 +- api_docs/discover_enhanced.mdx | 2 +- api_docs/elastic_apm_synthtrace.mdx | 2 +- api_docs/embeddable.mdx | 2 +- api_docs/embeddable_enhanced.mdx | 2 +- api_docs/encrypted_saved_objects.mdx | 2 +- api_docs/enterprise_search.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/expression_error.mdx | 2 +- api_docs/expression_gauge.mdx | 2 +- api_docs/expression_heatmap.mdx | 2 +- api_docs/expression_image.mdx | 2 +- api_docs/expression_metric.mdx | 2 +- api_docs/expression_metric_vis.mdx | 2 +- api_docs/expression_partition_vis.mdx | 2 +- api_docs/expression_repeat_image.mdx | 2 +- api_docs/expression_reveal_image.mdx | 2 +- api_docs/expression_shape.mdx | 2 +- api_docs/expression_tagcloud.mdx | 2 +- api_docs/expression_x_y.mdx | 2 +- api_docs/expressions.mdx | 2 +- api_docs/features.mdx | 2 +- api_docs/field_formats.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/index_lifecycle_management.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/kbn_ace.mdx | 2 +- api_docs/kbn_aiops_utils.mdx | 2 +- api_docs/kbn_alerts.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_client.mdx | 2 +- ..._analytics_shippers_elastic_v3_browser.mdx | 2 +- ...n_analytics_shippers_elastic_v3_common.mdx | 2 +- ...n_analytics_shippers_elastic_v3_server.mdx | 2 +- api_docs/kbn_analytics_shippers_fullstory.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_bazel_packages.mdx | 2 +- api_docs/kbn_bazel_runner.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- ..._ci_stats_performance_metrics.devdocs.json | 75 +++++ api_docs/kbn_ci_stats_performance_metrics.mdx | 27 ++ api_docs/kbn_ci_stats_reporter.devdocs.json | 32 +++ api_docs/kbn_ci_stats_reporter.mdx | 4 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_coloring.mdx | 2 +- api_docs/kbn_config.mdx | 2 +- api_docs/kbn_config_mocks.mdx | 2 +- api_docs/kbn_config_schema.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- .../kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- .../kbn_core_analytics_server.devdocs.json | 114 ++++++++ api_docs/kbn_core_analytics_server.mdx | 27 ++ ...ore_analytics_server_internal.devdocs.json | 134 +++++++++ .../kbn_core_analytics_server_internal.mdx | 27 ++ ...n_core_analytics_server_mocks.devdocs.json | 107 +++++++ api_docs/kbn_core_analytics_server_mocks.mdx | 27 ++ api_docs/kbn_core_base_browser_mocks.mdx | 2 +- api_docs/kbn_core_base_common.mdx | 2 +- ...kbn_core_base_server_internal.devdocs.json | 123 +++++++++ api_docs/kbn_core_base_server_internal.mdx | 27 ++ api_docs/kbn_core_base_server_mocks.mdx | 2 +- ...n_core_config_server_internal.devdocs.json | 260 ++++++++++++++++++ api_docs/kbn_core_config_server_internal.mdx | 27 ++ api_docs/kbn_core_doc_links_browser.mdx | 2 +- api_docs/kbn_core_doc_links_browser_mocks.mdx | 2 +- api_docs/kbn_core_doc_links_server.mdx | 2 +- api_docs/kbn_core_doc_links_server_mocks.mdx | 2 +- api_docs/kbn_core_i18n_browser.devdocs.json | 86 ++++++ api_docs/kbn_core_i18n_browser.mdx | 27 ++ .../kbn_core_i18n_browser_mocks.devdocs.json | 73 +++++ api_docs/kbn_core_i18n_browser_mocks.mdx | 27 ++ .../kbn_core_injected_metadata_browser.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_server.mdx | 2 +- api_docs/kbn_core_logging_server_internal.mdx | 2 +- api_docs/kbn_core_logging_server_mocks.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_dev_cli_errors.mdx | 2 +- api_docs/kbn_dev_cli_runner.mdx | 2 +- api_docs/kbn_dev_proc_runner.mdx | 2 +- api_docs/kbn_dev_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_kibana_json_schema.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_discovery.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_pm.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- .../kbn_scalability_simulation_generator.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- .../kbn_securitysolution_io_ts_list_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_types.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_utils.mdx | 2 +- api_docs/kbn_securitysolution_list_api.mdx | 2 +- .../kbn_securitysolution_list_constants.mdx | 2 +- api_docs/kbn_securitysolution_list_hooks.mdx | 2 +- api_docs/kbn_securitysolution_list_utils.mdx | 2 +- api_docs/kbn_securitysolution_rules.mdx | 2 +- api_docs/kbn_securitysolution_t_grid.mdx | 2 +- api_docs/kbn_securitysolution_utils.mdx | 2 +- api_docs/kbn_server_http_tools.mdx | 2 +- api_docs/kbn_server_route_repository.mdx | 2 +- api_docs/kbn_shared_ux_button_toolbar.mdx | 2 +- api_docs/kbn_shared_ux_card_no_data.mdx | 2 +- api_docs/kbn_shared_ux_components.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- api_docs/kbn_shared_ux_services.mdx | 2 +- api_docs/kbn_shared_ux_storybook.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_sort_package_json.mdx | 2 +- api_docs/kbn_std.mdx | 2 +- api_docs/kbn_stdio_dev_helpers.mdx | 2 +- api_docs/kbn_storybook.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.devdocs.json | 81 ++++++ api_docs/kbn_test.mdx | 4 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_type_summarizer.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_utility_types.mdx | 2 +- api_docs/kbn_utility_types_jest.mdx | 2 +- api_docs/kbn_utils.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.devdocs.json | 8 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.mdx | 2 +- api_docs/kubernetes_security.mdx | 2 +- api_docs/lens.mdx | 2 +- api_docs/license_api_guard.mdx | 2 +- api_docs/license_management.mdx | 2 +- api_docs/licensing.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/monitoring.mdx | 2 +- api_docs/monitoring_collection.mdx | 2 +- api_docs/navigation.mdx | 2 +- api_docs/newsfeed.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/plugin_directory.mdx | 20 +- api_docs/presentation_util.mdx | 2 +- api_docs/remote_clusters.mdx | 2 +- api_docs/reporting.mdx | 2 +- api_docs/rollup.mdx | 2 +- api_docs/rule_registry.mdx | 2 +- api_docs/runtime_fields.mdx | 2 +- api_docs/saved_objects.mdx | 2 +- api_docs/saved_objects_management.mdx | 2 +- api_docs/saved_objects_tagging.mdx | 2 +- api_docs/saved_objects_tagging_oss.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/shared_u_x.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_collection_xpack.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/timelines.mdx | 2 +- api_docs/transform.mdx | 2 +- api_docs/triggers_actions_ui.mdx | 2 +- api_docs/ui_actions.mdx | 2 +- api_docs/ui_actions_enhanced.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/url_forwarding.mdx | 2 +- api_docs/usage_collection.mdx | 2 +- api_docs/ux.mdx | 2 +- api_docs/vis_default_editor.mdx | 2 +- api_docs/vis_type_gauge.mdx | 2 +- api_docs/vis_type_heatmap.mdx | 2 +- api_docs/vis_type_pie.mdx | 2 +- api_docs/vis_type_table.mdx | 2 +- api_docs/vis_type_timelion.mdx | 2 +- api_docs/vis_type_timeseries.mdx | 2 +- api_docs/vis_type_vega.mdx | 2 +- api_docs/vis_type_vislib.mdx | 2 +- api_docs/vis_type_xy.mdx | 2 +- api_docs/visualizations.mdx | 2 +- 266 files changed, 1581 insertions(+), 284 deletions(-) create mode 100644 api_docs/kbn_ci_stats_performance_metrics.devdocs.json create mode 100644 api_docs/kbn_ci_stats_performance_metrics.mdx create mode 100644 api_docs/kbn_core_analytics_server.devdocs.json create mode 100644 api_docs/kbn_core_analytics_server.mdx create mode 100644 api_docs/kbn_core_analytics_server_internal.devdocs.json create mode 100644 api_docs/kbn_core_analytics_server_internal.mdx create mode 100644 api_docs/kbn_core_analytics_server_mocks.devdocs.json create mode 100644 api_docs/kbn_core_analytics_server_mocks.mdx create mode 100644 api_docs/kbn_core_base_server_internal.devdocs.json create mode 100644 api_docs/kbn_core_base_server_internal.mdx create mode 100644 api_docs/kbn_core_config_server_internal.devdocs.json create mode 100644 api_docs/kbn_core_config_server_internal.mdx create mode 100644 api_docs/kbn_core_i18n_browser.devdocs.json create mode 100644 api_docs/kbn_core_i18n_browser.mdx create mode 100644 api_docs/kbn_core_i18n_browser_mocks.devdocs.json create mode 100644 api_docs/kbn_core_i18n_browser_mocks.mdx diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index d797669651470..aa8d70b3f87a3 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github summary: API docs for the actions plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 1b8402f59c88f..b4359ef0e6fac 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github summary: API docs for the advancedSettings plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index e970547c6ae93..b84273128b873 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github summary: API docs for the aiops plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 4cbf27c578880..c660f149a18f7 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github summary: API docs for the alerting plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 51bd8b5ba4213..6100122ca8cb1 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github summary: API docs for the apm plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 2bf8f6d1b2d51..9efb27bdf70d3 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github summary: API docs for the banners plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index b30e2db5d784f..75a4484d9dbca 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github summary: API docs for the bfetch plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 447683f585321..d15bfd331d410 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github summary: API docs for the canvas plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 01740e93b83fc..8e6b7ff04c30a 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github summary: API docs for the cases plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index e3255cd38c663..2d9fe262fab2b 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github summary: API docs for the charts plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 1e52786a522d5..015725fc4b46b 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github summary: API docs for the cloud plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 2886ff662f997..552c5f84bbb6a 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github summary: API docs for the cloudSecurityPosture plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/console.mdx b/api_docs/console.mdx index f9595356a14ce..ecd66045beb20 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github summary: API docs for the console plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 67009a44f3de8..67400c3730c05 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github summary: API docs for the controls plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/core.devdocs.json b/api_docs/core.devdocs.json index 78f4a5a65e08d..c1181b59c80c0 100644 --- a/api_docs/core.devdocs.json +++ b/api_docs/core.devdocs.json @@ -1583,13 +1583,7 @@ "{@link I18nStart}" ], "signature": [ - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.I18nStart", - "text": "I18nStart" - } + "I18nStart" ], "path": "src/core/public/index.ts", "deprecated": false @@ -2647,9 +2641,9 @@ "tags": [], "label": "I18nStart", "description": [ - "\nI18nStart.Context is required by any localizable React component from \\@kbn/i18n and \\@elastic/eui packages\nand is supposed to be used as the topmost component for any i18n-compatible React tree.\n" + "\r\nI18nStart.Context is required by any localizable React component from \\@kbn/i18n and \\@elastic/eui packages\r\nand is supposed to be used as the topmost component for any i18n-compatible React tree.\r\n" ], - "path": "src/core/public/i18n/i18n_service.tsx", + "path": "node_modules/@types/kbn__core-i18n-browser/index.d.ts", "deprecated": false, "children": [ { @@ -2659,12 +2653,12 @@ "tags": [], "label": "Context", "description": [ - "\nReact Context provider required as the topmost component for any i18n-compatible React tree." + "\r\nReact Context provider required as the topmost component for any i18n-compatible React tree." ], "signature": [ "({ children }: { children: React.ReactNode; }) => JSX.Element" ], - "path": "src/core/public/i18n/i18n_service.tsx", + "path": "node_modules/@types/kbn__core-i18n-browser/index.d.ts", "deprecated": false, "children": [ { @@ -2674,7 +2668,7 @@ "tags": [], "label": "{ children }", "description": [], - "path": "src/core/public/i18n/i18n_service.tsx", + "path": "node_modules/@types/kbn__core-i18n-browser/index.d.ts", "deprecated": false, "children": [ { @@ -2687,7 +2681,7 @@ "signature": [ "boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | null | undefined" ], - "path": "src/core/public/i18n/i18n_service.tsx", + "path": "node_modules/@types/kbn__core-i18n-browser/index.d.ts", "deprecated": false } ] @@ -24176,7 +24170,7 @@ "tags": [], "label": "AnalyticsServicePreboot", "description": [ - "\nExposes the public APIs of the AnalyticsClient during the preboot phase\n{@link AnalyticsClient}" + "\r\nExposes the public APIs of the AnalyticsClient during the preboot phase\r\n{@link AnalyticsClient}" ], "signature": [ "{ optIn: (optInConfig: ", @@ -24197,7 +24191,7 @@ "ContextProviderOpts", ") => void; removeContextProvider: (contextProviderName: string) => void; }" ], - "path": "src/core/server/analytics/analytics_service.ts", + "path": "node_modules/@types/kbn__core-analytics-server/index.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -24208,7 +24202,7 @@ "tags": [], "label": "AnalyticsServiceSetup", "description": [ - "\nExposes the public APIs of the AnalyticsClient during the setup phase.\n{@link AnalyticsClient}" + "\r\nExposes the public APIs of the AnalyticsClient during the setup phase.\r\n{@link AnalyticsClient}" ], "signature": [ "{ optIn: (optInConfig: ", @@ -24229,7 +24223,7 @@ "ContextProviderOpts", ") => void; removeContextProvider: (contextProviderName: string) => void; }" ], - "path": "src/core/server/analytics/analytics_service.ts", + "path": "node_modules/@types/kbn__core-analytics-server/index.d.ts", "deprecated": false, "initialIsOpen": false }, @@ -24240,7 +24234,7 @@ "tags": [], "label": "AnalyticsServiceStart", "description": [ - "\nExposes the public APIs of the AnalyticsClient during the start phase\n{@link AnalyticsClient}" + "\r\nExposes the public APIs of the AnalyticsClient during the start phase\r\n{@link AnalyticsClient}" ], "signature": [ "{ optIn: (optInConfig: ", @@ -24251,7 +24245,7 @@ "TelemetryCounter", ">; }" ], - "path": "src/core/server/analytics/analytics_service.ts", + "path": "node_modules/@types/kbn__core-analytics-server/index.d.ts", "deprecated": false, "initialIsOpen": false }, diff --git a/api_docs/core.mdx b/api_docs/core.mdx index 9bf639c6ceed3..e3b2da5c430d1 100644 --- a/api_docs/core.mdx +++ b/api_docs/core.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core title: "core" image: https://source.unsplash.com/400x175/?github summary: API docs for the core plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2527 | 15 | 940 | 29 | +| 2527 | 15 | 938 | 29 | ## Client diff --git a/api_docs/core_application.mdx b/api_docs/core_application.mdx index 9b15a4c99728b..ccd83243240cc 100644 --- a/api_docs/core_application.mdx +++ b/api_docs/core_application.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-application title: "core.application" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.application plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.application'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2527 | 15 | 940 | 29 | +| 2527 | 15 | 938 | 29 | ## Client diff --git a/api_docs/core_chrome.mdx b/api_docs/core_chrome.mdx index 8ecc59ccbebed..a9682a8e3b4a1 100644 --- a/api_docs/core_chrome.mdx +++ b/api_docs/core_chrome.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-chrome title: "core.chrome" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.chrome plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.chrome'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2527 | 15 | 940 | 29 | +| 2527 | 15 | 938 | 29 | ## Client diff --git a/api_docs/core_http.mdx b/api_docs/core_http.mdx index e674a58a1557d..dbe127e3f003d 100644 --- a/api_docs/core_http.mdx +++ b/api_docs/core_http.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-http title: "core.http" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.http plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.http'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2527 | 15 | 940 | 29 | +| 2527 | 15 | 938 | 29 | ## Client diff --git a/api_docs/core_saved_objects.mdx b/api_docs/core_saved_objects.mdx index 04a7d497d1b01..a4443c941dd86 100644 --- a/api_docs/core_saved_objects.mdx +++ b/api_docs/core_saved_objects.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/core-savedObjects title: "core.savedObjects" image: https://source.unsplash.com/400x175/?github summary: API docs for the core.savedObjects plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'core.savedObjects'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) for que | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2527 | 15 | 940 | 29 | +| 2527 | 15 | 938 | 29 | ## Client diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index f04be45f934fe..f7586442664bc 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github summary: API docs for the customIntegrations plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 98dea779023b5..8dc6d7fdcfb6f 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github summary: API docs for the dashboard plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index cea698f443ce0..e8953c4281e28 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the dashboardEnhanced plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data.mdx b/api_docs/data.mdx index cc6c86fcb5f52..9e2ff20a26ccb 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github summary: API docs for the data plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index a7bb8fa4d9919..97cb36245b0df 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github summary: API docs for the data.query plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index bde8c91920935..badce42c47a6f 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github summary: API docs for the data.search plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index f62aa9f36c3c1..6ff647d20d447 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewEditor plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 0943418c1c5b2..ce0cac3a3ace3 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewFieldEditor plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 4297e16c393fc..8a0db6bb2066e 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViewManagement plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 3d50dcf400d63..8d2ffe07ca1e9 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataViews plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index d545aa1752f9c..4761b678c4b82 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the dataVisualizer plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 97c708c366bd2..5683d95bd30fe 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index d4222f6c65916..75ca037c25bb2 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin summary: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 9a995d287dcfe..38244e76f344c 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -3,7 +3,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team summary: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index b95162c73b70c..bca811b137130 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github summary: API docs for the devTools plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 92b15fa4eb518..738d6255dc1fd 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github summary: API docs for the discover plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 2615d10e20873..afd26d8f4c263 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the discoverEnhanced plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/elastic_apm_synthtrace.mdx b/api_docs/elastic_apm_synthtrace.mdx index 0dcc042b805fe..bf80df96fbcc5 100644 --- a/api_docs/elastic_apm_synthtrace.mdx +++ b/api_docs/elastic_apm_synthtrace.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/elastic-apm-synthtrace title: "@elastic/apm-synthtrace" image: https://source.unsplash.com/400x175/?github summary: API docs for the @elastic/apm-synthtrace plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@elastic/apm-synthtrace'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index b373d348d2e00..ae626a79b9444 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github summary: API docs for the embeddable plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 87ed46ed5618f..7a04080e707ce 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the embeddableEnhanced plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 5d0b699131f19..f80624d76f739 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github summary: API docs for the encryptedSavedObjects plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 2257e89887682..89c9d98c5a85b 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the enterpriseSearch plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 7c74fd18d9d7d..71748ba2c183e 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github summary: API docs for the esUiShared plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index db4361f4c71d2..5c7f4d4392176 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github summary: API docs for the eventAnnotation plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index ce71219c77661..c0f5673c3e4a5 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github summary: API docs for the eventLog plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index ea3154c081499..972a3099e2ee5 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionError plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 27f553c9df86f..c738384c60305 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionGauge plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index abff740b84120..aa27f9360b628 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionHeatmap plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 66c0685e867d2..452d5166377c2 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionImage plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index bfd39bb2af47f..ceb63f6fdc9d5 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionMetric plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 218a7ee0ce7ef..be5ffab9f5e45 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionMetricVis plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 6469a974d591b..5260a7add6010 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionPartitionVis plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index e9892fab347b0..51bd5c3790838 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionRepeatImage plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 55c6ed9527d46..7e9db0b0f0c70 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionRevealImage plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 202e4c6e2e365..cf4f2a7ae3ebb 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionShape plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 142c613588dd3..4f8f87e51555d 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionTagcloud plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 6a2bb59b4fea3..bc48042555b6f 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressionXY plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 02e63b832df83..7ceb36224bb14 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github summary: API docs for the expressions plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/features.mdx b/api_docs/features.mdx index bde45470db66b..f66bc3d55d9a3 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github summary: API docs for the features plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index aee6e9622505a..5021dd2eea449 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github summary: API docs for the fieldFormats plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index ff81f3660218f..729b43555dc75 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github summary: API docs for the fileUpload plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 74ab074a74209..3bb51cbf90196 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github summary: API docs for the fleet plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index c9055be152e4c..2f2009cdb8a90 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the globalSearch plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 9bf1f688986f6..bc34d629ae8ac 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github summary: API docs for the home plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index f2e9c6bfc9a36..1f34605863969 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the indexLifecycleManagement plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 46baf65ed5268..29f9caea1d449 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the indexManagement plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index fb6ced4363fcf..fb3cb5242d85c 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github summary: API docs for the infra plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index a1fc5bd30b20e..95f83c9fa5bc1 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github summary: API docs for the inspector plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 6c47cc38b0f38..7edb48d5d7919 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github summary: API docs for the interactiveSetup plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index a4993cf778bb3..f78923593d2ec 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ace plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 37fc706f762bd..c44c318c2ff69 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/aiops-utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index 8007be27038fc..8226fde3fee3a 100644 --- a/api_docs/kbn_alerts.mdx +++ b/api_docs/kbn_alerts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-alerts title: "@kbn/alerts" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/alerts plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 3e6c179cb6fd8..f44200ef97bfe 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 4018c2960bb47..84315fff01c2c 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-client plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index f9efcde37ff5a..47602a63dcc83 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 20f03a5c1b9be..e061874d47be4 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 036dff2834a98..4fe9239d5d670 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index f20a328bbd061..72814b9f92bea 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 8c1d4205d47e4..e0ebf664398e4 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/apm-config-loader plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 7e4cc478ad446..fe2c5f5459cfb 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/apm-utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index f88ba9abb50f1..c155bf54291d8 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/axe-config plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_bazel_packages.mdx b/api_docs/kbn_bazel_packages.mdx index 20abe35be350f..4fbac5adf9133 100644 --- a/api_docs/kbn_bazel_packages.mdx +++ b/api_docs/kbn_bazel_packages.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-bazel-packages title: "@kbn/bazel-packages" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/bazel-packages plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bazel-packages'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_bazel_runner.mdx b/api_docs/kbn_bazel_runner.mdx index 3fbcc63a1e034..82ceb55e52a60 100644 --- a/api_docs/kbn_bazel_runner.mdx +++ b/api_docs/kbn_bazel_runner.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-bazel-runner title: "@kbn/bazel-runner" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/bazel-runner plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bazel-runner'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 1a43b788c1825..319f32b8fcb66 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ci-stats-core plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ci_stats_performance_metrics.devdocs.json b/api_docs/kbn_ci_stats_performance_metrics.devdocs.json new file mode 100644 index 0000000000000..87ed9278a28f4 --- /dev/null +++ b/api_docs/kbn_ci_stats_performance_metrics.devdocs.json @@ -0,0 +1,75 @@ +{ + "id": "@kbn/ci-stats-performance-metrics", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/ci-stats-performance-metrics", + "id": "def-server.reporter", + "type": "Function", + "tags": [], + "label": "reporter", + "description": [], + "signature": [ + "(options: ReporterOptions) => Promise" + ], + "path": "packages/kbn-ci-stats-performance-metrics/src/reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-performance-metrics", + "id": "def-server.reporter.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "ReporterOptions" + ], + "path": "packages/kbn-ci-stats-performance-metrics/src/reporter.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ci-stats-performance-metrics", + "id": "def-server.runCli", + "type": "Function", + "tags": [], + "label": "runCli", + "description": [], + "signature": [ + "() => Promise" + ], + "path": "packages/kbn-ci-stats-performance-metrics/src/cli.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx new file mode 100644 index 0000000000000..7c492a4f3179f --- /dev/null +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCiStatsPerformanceMetricsPluginApi +slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics +title: "@kbn/ci-stats-performance-metrics" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/ci-stats-performance-metrics plugin +date: 2022-06-23 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 3 | 0 | 3 | 0 | + +## Server + +### Functions + + diff --git a/api_docs/kbn_ci_stats_reporter.devdocs.json b/api_docs/kbn_ci_stats_reporter.devdocs.json index 7c0232b6d81dd..195e8e8a5a429 100644 --- a/api_docs/kbn_ci_stats_reporter.devdocs.json +++ b/api_docs/kbn_ci_stats_reporter.devdocs.json @@ -309,6 +309,38 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.reportPerformanceMetrics", + "type": "Function", + "tags": [], + "label": "reportPerformanceMetrics", + "description": [], + "signature": [ + "(metrics: ", + "PerformanceMetrics", + ") => Promise" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/ci-stats-reporter", + "id": "def-server.CiStatsReporter.reportPerformanceMetrics.$1", + "type": "Object", + "tags": [], + "label": "metrics", + "description": [], + "signature": [ + "PerformanceMetrics" + ], + "path": "packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] } ], "initialIsOpen": false diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index fd3d10a85a509..8bfd1bacb1ebc 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ci-stats-reporter plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact [Owner missing] for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 60 | 0 | 15 | 0 | +| 62 | 0 | 17 | 1 | ## Server diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 43f72e4163575..d14d05cb69613 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/cli-dev-mode plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 0f68cb49dec35..1c1853a813f82 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/coloring plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index d33fb0ca31e26..de9304b37fa96 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/config plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 4235898a4f5b2..43479e7f25abb 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/config-mocks plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 30f1f8636bdd8..dd452f8e7f0ba 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/config-schema plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 9d63767df02cb..34ca1ad7c523a 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-browser plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 7415fdfd045cd..415c5c8dbef4e 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 21657e30fdf16..06a3419da43d1 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_analytics_server.devdocs.json b/api_docs/kbn_core_analytics_server.devdocs.json new file mode 100644 index 0000000000000..d2f49935b878d --- /dev/null +++ b/api_docs/kbn_core_analytics_server.devdocs.json @@ -0,0 +1,114 @@ +{ + "id": "@kbn/core-analytics-server", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/core-analytics-server", + "id": "def-server.AnalyticsServicePreboot", + "type": "Type", + "tags": [], + "label": "AnalyticsServicePreboot", + "description": [ + "\nExposes the public APIs of the AnalyticsClient during the preboot phase\n{@link AnalyticsClient}" + ], + "signature": [ + "{ optIn: (optInConfig: ", + "OptInConfig", + ") => void; reportEvent: >(eventType: string, eventData: EventTypeData) => void; readonly telemetryCounter$: ", + "Observable", + "<", + "TelemetryCounter", + ">; registerEventType: (eventTypeOps: ", + "EventTypeOpts", + ") => void; registerShipper: (Shipper: ", + "ShipperClassConstructor", + ", shipperConfig: ShipperConfig, opts?: ", + "RegisterShipperOpts", + " | undefined) => void; registerContextProvider: (contextProviderOpts: ", + "ContextProviderOpts", + ") => void; removeContextProvider: (contextProviderName: string) => void; }" + ], + "path": "packages/core/analytics/core-analytics-server/src/contracts.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-analytics-server", + "id": "def-server.AnalyticsServiceSetup", + "type": "Type", + "tags": [], + "label": "AnalyticsServiceSetup", + "description": [ + "\nExposes the public APIs of the AnalyticsClient during the setup phase.\n{@link AnalyticsClient}" + ], + "signature": [ + "{ optIn: (optInConfig: ", + "OptInConfig", + ") => void; reportEvent: >(eventType: string, eventData: EventTypeData) => void; readonly telemetryCounter$: ", + "Observable", + "<", + "TelemetryCounter", + ">; registerEventType: (eventTypeOps: ", + "EventTypeOpts", + ") => void; registerShipper: (Shipper: ", + "ShipperClassConstructor", + ", shipperConfig: ShipperConfig, opts?: ", + "RegisterShipperOpts", + " | undefined) => void; registerContextProvider: (contextProviderOpts: ", + "ContextProviderOpts", + ") => void; removeContextProvider: (contextProviderName: string) => void; }" + ], + "path": "packages/core/analytics/core-analytics-server/src/contracts.ts", + "deprecated": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-analytics-server", + "id": "def-server.AnalyticsServiceStart", + "type": "Type", + "tags": [], + "label": "AnalyticsServiceStart", + "description": [ + "\nExposes the public APIs of the AnalyticsClient during the start phase\n{@link AnalyticsClient}" + ], + "signature": [ + "{ optIn: (optInConfig: ", + "OptInConfig", + ") => void; reportEvent: >(eventType: string, eventData: EventTypeData) => void; readonly telemetryCounter$: ", + "Observable", + "<", + "TelemetryCounter", + ">; }" + ], + "path": "packages/core/analytics/core-analytics-server/src/contracts.ts", + "deprecated": false, + "initialIsOpen": false + } + ], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx new file mode 100644 index 0000000000000..453ba67379d04 --- /dev/null +++ b/api_docs/kbn_core_analytics_server.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCoreAnalyticsServerPluginApi +slug: /kibana-dev-docs/api/kbn-core-analytics-server +title: "@kbn/core-analytics-server" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/core-analytics-server plugin +date: 2022-06-23 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 3 | 0 | 0 | 0 | + +## Server + +### Consts, variables and types + + diff --git a/api_docs/kbn_core_analytics_server_internal.devdocs.json b/api_docs/kbn_core_analytics_server_internal.devdocs.json new file mode 100644 index 0000000000000..fda46f67f4a16 --- /dev/null +++ b/api_docs/kbn_core_analytics_server_internal.devdocs.json @@ -0,0 +1,134 @@ +{ + "id": "@kbn/core-analytics-server-internal", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [ + { + "parentPluginId": "@kbn/core-analytics-server-internal", + "id": "def-server.AnalyticsService", + "type": "Class", + "tags": [], + "label": "AnalyticsService", + "description": [], + "path": "packages/core/analytics/core-analytics-server-internal/src/analytics_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-analytics-server-internal", + "id": "def-server.AnalyticsService.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/core/analytics/core-analytics-server-internal/src/analytics_service.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-analytics-server-internal", + "id": "def-server.AnalyticsService.Unnamed.$1", + "type": "Object", + "tags": [], + "label": "core", + "description": [], + "signature": [ + "CoreContext" + ], + "path": "packages/core/analytics/core-analytics-server-internal/src/analytics_service.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-analytics-server-internal", + "id": "def-server.AnalyticsService.preboot", + "type": "Function", + "tags": [], + "label": "preboot", + "description": [], + "signature": [ + "() => ", + "AnalyticsServicePreboot" + ], + "path": "packages/core/analytics/core-analytics-server-internal/src/analytics_service.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-analytics-server-internal", + "id": "def-server.AnalyticsService.setup", + "type": "Function", + "tags": [], + "label": "setup", + "description": [], + "signature": [ + "() => ", + "AnalyticsServiceSetup" + ], + "path": "packages/core/analytics/core-analytics-server-internal/src/analytics_service.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-analytics-server-internal", + "id": "def-server.AnalyticsService.start", + "type": "Function", + "tags": [], + "label": "start", + "description": [], + "signature": [ + "() => ", + "AnalyticsServiceStart" + ], + "path": "packages/core/analytics/core-analytics-server-internal/src/analytics_service.ts", + "deprecated": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/core-analytics-server-internal", + "id": "def-server.AnalyticsService.stop", + "type": "Function", + "tags": [], + "label": "stop", + "description": [], + "signature": [ + "() => void" + ], + "path": "packages/core/analytics/core-analytics-server-internal/src/analytics_service.ts", + "deprecated": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx new file mode 100644 index 0000000000000..b033e3316a624 --- /dev/null +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCoreAnalyticsServerInternalPluginApi +slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal +title: "@kbn/core-analytics-server-internal" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/core-analytics-server-internal plugin +date: 2022-06-23 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 7 | 0 | 7 | 0 | + +## Server + +### Classes + + diff --git a/api_docs/kbn_core_analytics_server_mocks.devdocs.json b/api_docs/kbn_core_analytics_server_mocks.devdocs.json new file mode 100644 index 0000000000000..6d6fe2b36e0e5 --- /dev/null +++ b/api_docs/kbn_core_analytics_server_mocks.devdocs.json @@ -0,0 +1,107 @@ +{ + "id": "@kbn/core-analytics-server-mocks", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "@kbn/core-analytics-server-mocks", + "id": "def-server.analyticsServiceMock", + "type": "Object", + "tags": [], + "label": "analyticsServiceMock", + "description": [], + "path": "packages/core/analytics/core-analytics-server-mocks/src/analytics_service.mock.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-analytics-server-mocks", + "id": "def-server.analyticsServiceMock.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "() => jest.Mocked" + ], + "path": "packages/core/analytics/core-analytics-server-mocks/src/analytics_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-analytics-server-mocks", + "id": "def-server.analyticsServiceMock.createAnalyticsServicePreboot", + "type": "Function", + "tags": [], + "label": "createAnalyticsServicePreboot", + "description": [], + "signature": [ + "() => jest.Mocked<", + "AnalyticsServicePreboot", + ">" + ], + "path": "packages/core/analytics/core-analytics-server-mocks/src/analytics_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-analytics-server-mocks", + "id": "def-server.analyticsServiceMock.createAnalyticsServiceSetup", + "type": "Function", + "tags": [], + "label": "createAnalyticsServiceSetup", + "description": [], + "signature": [ + "() => jest.Mocked<", + "AnalyticsServiceSetup", + ">" + ], + "path": "packages/core/analytics/core-analytics-server-mocks/src/analytics_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-analytics-server-mocks", + "id": "def-server.analyticsServiceMock.createAnalyticsServiceStart", + "type": "Function", + "tags": [], + "label": "createAnalyticsServiceStart", + "description": [], + "signature": [ + "() => jest.Mocked<", + "AnalyticsServiceStart", + ">" + ], + "path": "packages/core/analytics/core-analytics-server-mocks/src/analytics_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "initialIsOpen": false + } + ] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx new file mode 100644 index 0000000000000..8df7dd430ee41 --- /dev/null +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCoreAnalyticsServerMocksPluginApi +slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks +title: "@kbn/core-analytics-server-mocks" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/core-analytics-server-mocks plugin +date: 2022-06-23 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 5 | 0 | 5 | 0 | + +## Server + +### Objects + + diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 64f89ba035988..1d672c961f10d 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-base-browser-mocks plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 8f7fc1a42003c..e5e75b54734ce 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-base-common plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_base_server_internal.devdocs.json b/api_docs/kbn_core_base_server_internal.devdocs.json new file mode 100644 index 0000000000000..6cc5a5d30adc9 --- /dev/null +++ b/api_docs/kbn_core_base_server_internal.devdocs.json @@ -0,0 +1,123 @@ +{ + "id": "@kbn/core-base-server-internal", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [ + { + "parentPluginId": "@kbn/core-base-server-internal", + "id": "def-server.CriticalError", + "type": "Class", + "tags": [], + "label": "CriticalError", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-base-server-internal", + "scope": "server", + "docId": "kibKbnCoreBaseServerInternalPluginApi", + "section": "def-server.CriticalError", + "text": "CriticalError" + }, + " extends Error" + ], + "path": "packages/core/base/core-base-server-internal/src/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-base-server-internal", + "id": "def-server.CriticalError.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/core/base/core-base-server-internal/src/errors.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-base-server-internal", + "id": "def-server.CriticalError.Unnamed.$1", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/base/core-base-server-internal/src/errors.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-base-server-internal", + "id": "def-server.CriticalError.Unnamed.$2", + "type": "string", + "tags": [], + "label": "code", + "description": [], + "signature": [ + "string" + ], + "path": "packages/core/base/core-base-server-internal/src/errors.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-base-server-internal", + "id": "def-server.CriticalError.Unnamed.$3", + "type": "number", + "tags": [], + "label": "processExitCode", + "description": [], + "signature": [ + "number" + ], + "path": "packages/core/base/core-base-server-internal/src/errors.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-base-server-internal", + "id": "def-server.CriticalError.Unnamed.$4", + "type": "Object", + "tags": [], + "label": "cause", + "description": [], + "signature": [ + "Error | undefined" + ], + "path": "packages/core/base/core-base-server-internal/src/errors.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx new file mode 100644 index 0000000000000..86cb682ec482e --- /dev/null +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCoreBaseServerInternalPluginApi +slug: /kibana-dev-docs/api/kbn-core-base-server-internal +title: "@kbn/core-base-server-internal" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/core-base-server-internal plugin +date: 2022-06-23 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 6 | 0 | 6 | 0 | + +## Server + +### Classes + + diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index be4d31b7e6153..5a9657f828551 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-base-server-mocks plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_config_server_internal.devdocs.json b/api_docs/kbn_core_config_server_internal.devdocs.json new file mode 100644 index 0000000000000..da4e89e53775a --- /dev/null +++ b/api_docs/kbn_core_config_server_internal.devdocs.json @@ -0,0 +1,260 @@ +{ + "id": "@kbn/core-config-server-internal", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.coreDeprecationProvider", + "type": "Function", + "tags": [], + "label": "coreDeprecationProvider", + "description": [], + "signature": [ + "() => ", + "ConfigDeprecation", + "[]" + ], + "path": "packages/core/config/core-config-server-internal/src/deprecation/core_deprecations.ts", + "deprecated": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.ensureValidConfiguration", + "type": "Function", + "tags": [], + "label": "ensureValidConfiguration", + "description": [], + "signature": [ + "(configService: ", + "ConfigService", + ", params: ", + "ConfigValidateParameters", + " | undefined) => Promise" + ], + "path": "packages/core/config/core-config-server-internal/src/ensure_valid_configuration.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.ensureValidConfiguration.$1", + "type": "Object", + "tags": [], + "label": "configService", + "description": [], + "signature": [ + "ConfigService" + ], + "path": "packages/core/config/core-config-server-internal/src/ensure_valid_configuration.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.ensureValidConfiguration.$2", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "ConfigValidateParameters", + " | undefined" + ], + "path": "packages/core/config/core-config-server-internal/src/ensure_valid_configuration.ts", + "deprecated": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.getDeprecationsFor", + "type": "Function", + "tags": [], + "label": "getDeprecationsFor", + "description": [], + "signature": [ + "({ provider, settings, path, }: { provider: ", + "ConfigDeprecationProvider", + "; settings?: Record | undefined; path: string; }) => { messages: string[]; levels: string[]; migrated: Record; }" + ], + "path": "packages/core/config/core-config-server-internal/src/test_utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.getDeprecationsFor.$1", + "type": "Object", + "tags": [], + "label": "{\n provider,\n settings = {},\n path,\n}", + "description": [], + "path": "packages/core/config/core-config-server-internal/src/test_utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.getDeprecationsFor.$1.provider", + "type": "Function", + "tags": [], + "label": "provider", + "description": [], + "signature": [ + "(factory: ", + "ConfigDeprecationFactory", + ") => ", + "ConfigDeprecation", + "[]" + ], + "path": "packages/core/config/core-config-server-internal/src/test_utils.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.getDeprecationsFor.$1.provider.$1", + "type": "Object", + "tags": [], + "label": "factory", + "description": [], + "signature": [ + "ConfigDeprecationFactory" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.getDeprecationsFor.$1.settings", + "type": "Object", + "tags": [], + "label": "settings", + "description": [], + "signature": [ + "Record | undefined" + ], + "path": "packages/core/config/core-config-server-internal/src/test_utils.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.getDeprecationsFor.$1.path", + "type": "string", + "tags": [], + "label": "path", + "description": [], + "path": "packages/core/config/core-config-server-internal/src/test_utils.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.getDeprecationsForGlobalSettings", + "type": "Function", + "tags": [], + "label": "getDeprecationsForGlobalSettings", + "description": [], + "signature": [ + "({ provider, settings, }: { provider: ", + "ConfigDeprecationProvider", + "; settings?: Record | undefined; }) => { messages: string[]; levels: string[]; migrated: Record; }" + ], + "path": "packages/core/config/core-config-server-internal/src/test_utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.getDeprecationsForGlobalSettings.$1", + "type": "Object", + "tags": [], + "label": "{\n provider,\n settings = {},\n}", + "description": [], + "path": "packages/core/config/core-config-server-internal/src/test_utils.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.getDeprecationsForGlobalSettings.$1.provider", + "type": "Function", + "tags": [], + "label": "provider", + "description": [], + "signature": [ + "(factory: ", + "ConfigDeprecationFactory", + ") => ", + "ConfigDeprecation", + "[]" + ], + "path": "packages/core/config/core-config-server-internal/src/test_utils.ts", + "deprecated": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.getDeprecationsForGlobalSettings.$1.provider.$1", + "type": "Object", + "tags": [], + "label": "factory", + "description": [], + "signature": [ + "ConfigDeprecationFactory" + ], + "path": "node_modules/@types/kbn__config/index.d.ts", + "deprecated": false + } + ] + }, + { + "parentPluginId": "@kbn/core-config-server-internal", + "id": "def-server.getDeprecationsForGlobalSettings.$1.settings", + "type": "Object", + "tags": [], + "label": "settings", + "description": [], + "signature": [ + "Record | undefined" + ], + "path": "packages/core/config/core-config-server-internal/src/test_utils.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx new file mode 100644 index 0000000000000..b6cbf0d678888 --- /dev/null +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCoreConfigServerInternalPluginApi +slug: /kibana-dev-docs/api/kbn-core-config-server-internal +title: "@kbn/core-config-server-internal" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/core-config-server-internal plugin +date: 2022-06-23 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 15 | 0 | 13 | 0 | + +## Server + +### Functions + + diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index cf5302dd72f77..619374b571b77 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-doc-links-browser plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 0e821cd157098..4dd6b03d0161c 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 3b3ca4bcaa5a3..b5343541902fb 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-doc-links-server plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 76c157aa5e054..d9d3756d07cbd 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_i18n_browser.devdocs.json b/api_docs/kbn_core_i18n_browser.devdocs.json new file mode 100644 index 0000000000000..28c1fd36c3064 --- /dev/null +++ b/api_docs/kbn_core_i18n_browser.devdocs.json @@ -0,0 +1,86 @@ +{ + "id": "@kbn/core-i18n-browser", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "@kbn/core-i18n-browser", + "id": "def-common.I18nStart", + "type": "Interface", + "tags": [], + "label": "I18nStart", + "description": [ + "\nI18nStart.Context is required by any localizable React component from \\@kbn/i18n and \\@elastic/eui packages\nand is supposed to be used as the topmost component for any i18n-compatible React tree.\n" + ], + "path": "packages/core/i18n/core-i18n-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-i18n-browser", + "id": "def-common.I18nStart.Context", + "type": "Function", + "tags": [], + "label": "Context", + "description": [ + "\nReact Context provider required as the topmost component for any i18n-compatible React tree." + ], + "signature": [ + "({ children }: { children: React.ReactNode; }) => JSX.Element" + ], + "path": "packages/core/i18n/core-i18n-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-i18n-browser", + "id": "def-common.I18nStart.Context.$1", + "type": "Object", + "tags": [], + "label": "{ children }", + "description": [], + "path": "packages/core/i18n/core-i18n-browser/src/types.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-i18n-browser", + "id": "def-common.I18nStart.Context.$1.children", + "type": "CompoundType", + "tags": [], + "label": "children", + "description": [], + "signature": [ + "boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | null | undefined" + ], + "path": "packages/core/i18n/core-i18n-browser/src/types.ts", + "deprecated": false + } + ] + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx new file mode 100644 index 0000000000000..fe2b0abb4b4cc --- /dev/null +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCoreI18nBrowserPluginApi +slug: /kibana-dev-docs/api/kbn-core-i18n-browser +title: "@kbn/core-i18n-browser" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/core-i18n-browser plugin +date: 2022-06-23 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 4 | 0 | 2 | 0 | + +## Common + +### Interfaces + + diff --git a/api_docs/kbn_core_i18n_browser_mocks.devdocs.json b/api_docs/kbn_core_i18n_browser_mocks.devdocs.json new file mode 100644 index 0000000000000..7811c288caed5 --- /dev/null +++ b/api_docs/kbn_core_i18n_browser_mocks.devdocs.json @@ -0,0 +1,73 @@ +{ + "id": "@kbn/core-i18n-browser-mocks", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "@kbn/core-i18n-browser-mocks", + "id": "def-common.i18nServiceMock", + "type": "Object", + "tags": [], + "label": "i18nServiceMock", + "description": [], + "path": "packages/core/i18n/core-i18n-browser-mocks/src/i18n_service.mock.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/core-i18n-browser-mocks", + "id": "def-common.i18nServiceMock.create", + "type": "Function", + "tags": [], + "label": "create", + "description": [], + "signature": [ + "() => jest.Mocked" + ], + "path": "packages/core/i18n/core-i18n-browser-mocks/src/i18n_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + }, + { + "parentPluginId": "@kbn/core-i18n-browser-mocks", + "id": "def-common.i18nServiceMock.createStartContract", + "type": "Function", + "tags": [], + "label": "createStartContract", + "description": [], + "signature": [ + "() => jest.Mocked<", + "I18nStart", + ">" + ], + "path": "packages/core/i18n/core-i18n-browser-mocks/src/i18n_service.mock.ts", + "deprecated": false, + "returnComment": [], + "children": [] + } + ], + "initialIsOpen": false + } + ] + } +} \ No newline at end of file diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx new file mode 100644 index 0000000000000..715b38c4aef94 --- /dev/null +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -0,0 +1,27 @@ +--- +id: kibKbnCoreI18nBrowserMocksPluginApi +slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks +title: "@kbn/core-i18n-browser-mocks" +image: https://source.unsplash.com/400x175/?github +summary: API docs for the @kbn/core-i18n-browser-mocks plugin +date: 2022-06-23 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] +warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. +--- +import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; + + + +Contact [Owner missing] for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 3 | 0 | 3 | 0 | + +## Common + +### Objects + + diff --git a/api_docs/kbn_core_injected_metadata_browser.mdx b/api_docs/kbn_core_injected_metadata_browser.mdx index b3816f2d31255..0dfa95e8653ac 100644 --- a/api_docs/kbn_core_injected_metadata_browser.mdx +++ b/api_docs/kbn_core_injected_metadata_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser title: "@kbn/core-injected-metadata-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-injected-metadata-browser plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index e5fde4fca46e0..18dd111b5bdea 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 4bd8571aa5858..b7d51a892cad4 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-logging-server plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 452fb9a6deda9..24787602fd826 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-logging-server-internal plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 93254645d2cc1..596ae2e2d0c87 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-logging-server-mocks plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 50ace4e85197f..73ec2992c6056 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-theme-browser plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 1d7f02a176b3e..fa6b098cf25ac 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index bd979a55a7b96..05421434cb5b9 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/crypto plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 2873ceafac55f..3507ad5af0a3f 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/datemath plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index a4686de799c9d..c7fc9e821a93f 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-cli-errors plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 9247656496398..ccf27f5dc4907 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-cli-runner plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index 86b45e3b28215..613bddfbc0e6a 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-proc-runner plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 3fa3295fe605d..80ede3a8f2ce5 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/dev-utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index abb751f0b8964..f35f2a788324c 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/doc-links plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index c1d0ef70fb894..5425bf061fc86 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/docs-utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index a65bbce6b7df5..fea0955a22e95 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/es-archiver plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index c71f7ac7ce64c..a6869f197252d 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/es-query plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 79cedb14c81e1..9bdfd637706b9 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/eslint-plugin-imports plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 79219f14c9a80..fd68af1589767 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/field-types plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index d74690a25741d..9c2f9020578e2 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/find-used-node-modules plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index d0a9254642187..4c8ed429da1c2 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/generate plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index ebb98181a03e3..321c9000cd1d7 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/handlebars plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 924a77a4dc73c..55782575d4a2d 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/i18n plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 689395ca46f78..cfc5f243f43d7 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/import-resolver plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 9f6abcfed25a9..4e73e2c5ace40 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/interpreter plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index c85e1c5161d3a..ef11b76adc992 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/io-ts-utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 10d09ba774ead..1380af516f2d0 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/jest-serializers plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_kibana_json_schema.mdx b/api_docs/kbn_kibana_json_schema.mdx index 1c27bd1550d86..a3d937b8ee946 100644 --- a/api_docs/kbn_kibana_json_schema.mdx +++ b/api_docs/kbn_kibana_json_schema.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-json-schema title: "@kbn/kibana-json-schema" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/kibana-json-schema plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-json-schema'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index a10e412bf4f01..54487887fbc56 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/logging plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 143b29a9f865d..b4188f4410c64 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/logging-mocks plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index fa1f9f2c6ec41..d031ab2e997bd 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/mapbox-gl plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index bc92c78f29686..339350026a676 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/monaco plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index bb27ae64cb91a..d6c3951da8a48 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/optimizer plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index e484f0ead7a58..73e3151761d74 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 5359b6d6ca332..5be0ada3b19e4 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_plugin_discovery.mdx b/api_docs/kbn_plugin_discovery.mdx index 5a84642278865..90e958b824606 100644 --- a/api_docs/kbn_plugin_discovery.mdx +++ b/api_docs/kbn_plugin_discovery.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-discovery title: "@kbn/plugin-discovery" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-discovery plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-discovery'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index a134aaa626f0e..619141948aebe 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-generator plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 8c8c853b9d0ab..9030770483370 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/plugin-helpers plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_pm.mdx b/api_docs/kbn_pm.mdx index 8903529981b99..8ed75da929b79 100644 --- a/api_docs/kbn_pm.mdx +++ b/api_docs/kbn_pm.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-pm title: "@kbn/pm" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/pm plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/pm'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 97eaa4abd5079..429c623648380 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/react-field plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index f5b53a4c08a99..9c72ccef64e2f 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/rule-data-utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_scalability_simulation_generator.mdx b/api_docs/kbn_scalability_simulation_generator.mdx index 9a7b205f79ab6..0c9777f519007 100644 --- a/api_docs/kbn_scalability_simulation_generator.mdx +++ b/api_docs/kbn_scalability_simulation_generator.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-scalability-simulation-generator title: "@kbn/scalability-simulation-generator" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/scalability-simulation-generator plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scalability-simulation-generator'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index d9159b8c1b379..6a6308e1ffae9 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 944f24b63a6cc..2ee30c0656dcf 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-es-utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index d8a77eaeeb160..dcc8bf31d9049 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 1c3ec9f3c5fa4..117a1eb2c5159 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 0535b4655d6dd..9c5752b203eb0 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 209109867e772..48fd0ca8ed815 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index cf783c9e2a9d7..571a2f9303ccb 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 4d54305c25a01..a0bcd043d61d4 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-api plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index d60c93054faec..993f080fcc193 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-constants plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index e7a4be15ba900..85234c585d286 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 548d3a6826a9f..c8d5be6aad2c5 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-list-utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 24e05f4952126..96b51f9113c2e 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-rules plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index ff18a7f3135c7..789760a4208e4 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-t-grid plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 186f5106c9ecc..f07604490c02d 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/securitysolution-utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index 1bd0fc10274f0..3b15b68770eda 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/server-http-tools plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index ea8349c280bf2..af36112b1cda2 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/server-route-repository plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index b0bf3309241cd..f6f742628e522 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 4927ef7d422a6..baa5703955597 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_components.mdx b/api_docs/kbn_shared_ux_components.mdx index 90f9d0da202d6..c856e7de45b63 100644 --- a/api_docs/kbn_shared_ux_components.mdx +++ b/api_docs/kbn_shared_ux_components.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-components title: "@kbn/shared-ux-components" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-components plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-components'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index 25263bf851522..4723ab64fc68e 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index e88217dcefe35..214a878423a93 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index b92aac33cf0aa..b7fb30739d2b8 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_services.mdx b/api_docs/kbn_shared_ux_services.mdx index f809536fb2f63..5f60e287b33d3 100644 --- a/api_docs/kbn_shared_ux_services.mdx +++ b/api_docs/kbn_shared_ux_services.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-services title: "@kbn/shared-ux-services" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-services plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-services'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_storybook.mdx b/api_docs/kbn_shared_ux_storybook.mdx index 60f18e4f85447..eb278f6594d12 100644 --- a/api_docs/kbn_shared_ux_storybook.mdx +++ b/api_docs/kbn_shared_ux_storybook.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook title: "@kbn/shared-ux-storybook" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-storybook plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 5dec81ad3ac9d..3cee3986320d0 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/shared-ux-utility plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_sort_package_json.mdx b/api_docs/kbn_sort_package_json.mdx index 22052b556d703..42b1a1ec4b1b1 100644 --- a/api_docs/kbn_sort_package_json.mdx +++ b/api_docs/kbn_sort_package_json.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-sort-package-json title: "@kbn/sort-package-json" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/sort-package-json plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-package-json'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index acfcc9383bb1c..7807dfb8faf19 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/std plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 191e64cdf1b15..dcdbeeba9fa5c 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/stdio-dev-helpers plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 9915f6c0ffb52..72da8a866e68b 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/storybook plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 1d9a712006716..6af8cd22263d4 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/telemetry-tools plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_test.devdocs.json b/api_docs/kbn_test.devdocs.json index b049321dd2e41..5ef0d045fbc3f 100644 --- a/api_docs/kbn_test.devdocs.json +++ b/api_docs/kbn_test.devdocs.json @@ -958,6 +958,87 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/test", + "id": "def-server.KbnClientRequesterError", + "type": "Class", + "tags": [], + "label": "KbnClientRequesterError", + "description": [], + "signature": [ + { + "pluginId": "@kbn/test", + "scope": "server", + "docId": "kibKbnTestPluginApi", + "section": "def-server.KbnClientRequesterError", + "text": "KbnClientRequesterError" + }, + " extends Error" + ], + "path": "packages/kbn-test/src/kbn_client/kbn_client_requester_error.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/test", + "id": "def-server.KbnClientRequesterError.axiosError", + "type": "Object", + "tags": [], + "label": "axiosError", + "description": [], + "signature": [ + "AxiosError", + " | undefined" + ], + "path": "packages/kbn-test/src/kbn_client/kbn_client_requester_error.ts", + "deprecated": false + }, + { + "parentPluginId": "@kbn/test", + "id": "def-server.KbnClientRequesterError.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-test/src/kbn_client/kbn_client_requester_error.ts", + "deprecated": false, + "children": [ + { + "parentPluginId": "@kbn/test", + "id": "def-server.KbnClientRequesterError.Unnamed.$1", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-test/src/kbn_client/kbn_client_requester_error.ts", + "deprecated": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/test", + "id": "def-server.KbnClientRequesterError.Unnamed.$2", + "type": "Unknown", + "tags": [], + "label": "error", + "description": [], + "signature": [ + "unknown" + ], + "path": "packages/kbn-test/src/kbn_client/kbn_client_requester_error.ts", + "deprecated": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/test", "id": "def-server.Lifecycle", diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 82c4660718088..5b96789883cea 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/test plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -18,7 +18,7 @@ Contact Operations for questions regarding this plugin. | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 241 | 5 | 202 | 9 | +| 246 | 5 | 207 | 9 | ## Server diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index cbf66e2e32d12..8b3b115917f5f 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/test-jest-helpers plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index f58eea4717a3c..d5d72ee68eb46 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/tooling-log plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_type_summarizer.mdx b/api_docs/kbn_type_summarizer.mdx index 8ae22eea4c48f..d9a99bc918996 100644 --- a/api_docs/kbn_type_summarizer.mdx +++ b/api_docs/kbn_type_summarizer.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-type-summarizer title: "@kbn/type-summarizer" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/type-summarizer plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/type-summarizer'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 5de17b41dda5d..0d47f81985c33 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/typed-react-router-config plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 2a9a98da12496..afad507cc268f 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/ui-theme plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index c0bf713a000c4..bd4ac2c281582 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/utility-types plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index f34e19084886d..ef3e2bead5c0e 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/utility-types-jest plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 68a8d863e92c8..09a812a5932a1 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github summary: API docs for the @kbn/utils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index f0b4a3c578ae9..6b55b014d810e 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaOverview plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index 114c6531060a2..30705843ab0f9 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -4387,13 +4387,7 @@ "text": "SavedObjectsStart" }, " | undefined; i18n?: ", - { - "pluginId": "core", - "scope": "public", - "docId": "kibCorePluginApi", - "section": "def-public.I18nStart", - "text": "I18nStart" - }, + "I18nStart", " | undefined; notifications?: ", { "pluginId": "core", diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index bcdd5f22cab89..9a57e86eb9534 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaReact plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index aad503a434db1..e7d76168b35b4 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github summary: API docs for the kibanaUtils plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 4525bbe2e90ea..3533959bd49bd 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github summary: API docs for the kubernetesSecurity plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index f3a701a57c6f7..94aad70595690 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github summary: API docs for the lens plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 20aa6358763ad..67ab1d0b38048 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github summary: API docs for the licenseApiGuard plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 672bf37cfefb7..b9ca3227c0186 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the licenseManagement plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 2d26f51d0b1d1..7768b99acd2d8 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github summary: API docs for the licensing plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index c9226f6423611..0ad5f14873cda 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github summary: API docs for the lists plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 85636d6db9aeb..f32d58cf2a204 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github summary: API docs for the management plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index e1a9268a4b430..c0ba7a0faca21 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github summary: API docs for the maps plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 6e53777799afe..9e2359a5d964e 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github summary: API docs for the mapsEms plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 90e4c001a78b0..c1df1686a8069 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github summary: API docs for the ml plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index fe91552cf5304..13e932aff2c8c 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github summary: API docs for the monitoring plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index efbb5010c6689..1cdd404bf76bf 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github summary: API docs for the monitoringCollection plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 8a635d95c6698..165f0f335d986 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github summary: API docs for the navigation plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 39103b8cd170f..a39288cf3cd8d 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github summary: API docs for the newsfeed plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 8a3b10a8cce01..e2dcae516b104 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github summary: API docs for the observability plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 55bd58456c64a..f86a267e95cec 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github summary: API docs for the osquery plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 909b06aeb0f90..c71faef8e65e0 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -3,7 +3,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory summary: Directory of public APIs available through plugins or packages. -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- @@ -12,13 +12,13 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 292 | 235 | 35 | +| 300 | 243 | 35 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 26363 | 171 | 19041 | 1244 | +| 26416 | 171 | 19085 | 1248 | ## Plugin Directory @@ -38,7 +38,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Cloud Security Posture](https://github.com/orgs/elastic/teams/cloud-posture-security) | The cloud security posture plugin | 14 | 0 | 14 | 0 | | | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 13 | 0 | 13 | 1 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Controls Plugin contains embeddable components intended to create a simple query interface for end users, and a powerful editing suite that allows dashboard authors to build controls | 206 | 0 | 198 | 7 | -| | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 2527 | 15 | 940 | 29 | +| | [Kibana Core](https://github.com/orgs/elastic/teams/kibana-core) | - | 2527 | 15 | 938 | 29 | | crossClusterReplication | [Stack Management](https://github.com/orgs/elastic/teams/kibana-stack-management) | - | 0 | 0 | 0 | 0 | | | [Fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 101 | 0 | 82 | 1 | | | [Kibana Presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 143 | 0 | 141 | 12 | @@ -186,7 +186,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Owner missing] | - | 18 | 0 | 9 | 1 | | | [Owner missing] | - | 4 | 0 | 4 | 0 | | | [Owner missing] | - | 7 | 0 | 2 | 0 | -| | [Owner missing] | - | 60 | 0 | 15 | 0 | +| | [Owner missing] | - | 3 | 0 | 3 | 0 | +| | [Owner missing] | - | 62 | 0 | 17 | 1 | | | [Owner missing] | - | 2 | 0 | 2 | 0 | | | [Owner missing] | - | 106 | 0 | 80 | 1 | | | [Owner missing] | - | 73 | 0 | 44 | 1 | @@ -195,13 +196,20 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Owner missing] | - | 2 | 0 | 0 | 0 | | | [Owner missing] | - | 7 | 0 | 7 | 1 | | | [Owner missing] | - | 4 | 0 | 4 | 0 | +| | [Owner missing] | - | 3 | 0 | 0 | 0 | +| | [Owner missing] | - | 7 | 0 | 7 | 0 | +| | [Owner missing] | - | 5 | 0 | 5 | 0 | | | [Owner missing] | - | 3 | 0 | 3 | 0 | | | [Owner missing] | - | 12 | 0 | 3 | 0 | +| | [Owner missing] | - | 6 | 0 | 6 | 0 | | | [Owner missing] | - | 3 | 0 | 3 | 0 | +| | [Owner missing] | - | 15 | 0 | 13 | 0 | | | [Owner missing] | - | 4 | 0 | 4 | 0 | | | [Owner missing] | - | 4 | 0 | 4 | 0 | | | [Owner missing] | - | 5 | 0 | 2 | 0 | | | [Owner missing] | - | 4 | 0 | 4 | 0 | +| | [Owner missing] | - | 4 | 0 | 2 | 0 | +| | [Owner missing] | - | 3 | 0 | 3 | 0 | | | [Owner missing] | - | 8 | 2 | 6 | 0 | | | [Owner missing] | - | 4 | 0 | 4 | 0 | | | [Owner missing] | - | 56 | 0 | 30 | 0 | @@ -274,7 +282,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex | | [Owner missing] | - | 4 | 0 | 2 | 0 | | | Operations | - | 38 | 2 | 21 | 0 | | | [Owner missing] | - | 2 | 0 | 2 | 0 | -| | Operations | - | 241 | 5 | 202 | 9 | +| | Operations | - | 246 | 5 | 207 | 9 | | | [Owner missing] | - | 135 | 8 | 103 | 2 | | | [Owner missing] | - | 72 | 0 | 55 | 0 | | | [Owner missing] | - | 29 | 0 | 2 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index bf2fe7cfebf46..19052227c3c90 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github summary: API docs for the presentationUtil plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 170032a3bc4d2..3729b362ce583 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github summary: API docs for the remoteClusters plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 5d3c8b0936a80..13556c6e80806 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github summary: API docs for the reporting plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index ca76c4653ec8e..f4fda7540b8a0 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github summary: API docs for the rollup plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 5472f6eaed6b8..272a8758c5ab1 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github summary: API docs for the ruleRegistry plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 8f89583822b50..fabadde1d3537 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github summary: API docs for the runtimeFields plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index f51a2a70b2220..d9fac2851b6d2 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjects plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 0fbe05a13338f..79f1d2c7a2b4a 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsManagement plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 1b39a76ecf0b7..38e12b4aed2cf 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsTagging plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 94134caede2d8..400d7bca2e21b 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github summary: API docs for the savedObjectsTaggingOss plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index cff973e270d3e..97e6cd138ec62 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github summary: API docs for the screenshotMode plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 263fbb99ec61f..2f4e0440757c1 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github summary: API docs for the screenshotting plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 0b87aeb636f9f..99283269165de 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github summary: API docs for the security plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 5b1e670ad236d..f9c4373d9fb2d 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github summary: API docs for the securitySolution plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index bfee9c84b1de8..47a076253b042 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github summary: API docs for the sessionView plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 2192eafe5e3f0..cd8bb647f2b8d 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github summary: API docs for the share plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/shared_u_x.mdx b/api_docs/shared_u_x.mdx index f64d2a3f4988b..d73c5303e9b74 100644 --- a/api_docs/shared_u_x.mdx +++ b/api_docs/shared_u_x.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/sharedUX title: "sharedUX" image: https://source.unsplash.com/400x175/?github summary: API docs for the sharedUX plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sharedUX'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 667c3941ee568..417c2500ed8cc 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github summary: API docs for the snapshotRestore plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 793c6097c28af..af5231f6d3cd3 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github summary: API docs for the spaces plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index c751bd1600098..4395c11d84e4c 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github summary: API docs for the stackAlerts plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index fbda9a1e539df..b734c5bfc99a0 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github summary: API docs for the taskManager plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index ccf398abc8dbe..b2a40aa42d368 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetry plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 2f8e2e77085cf..a277dd510cb85 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryCollectionManager plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index 9fd053ad4b8db..fa058e7406b50 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryCollectionXpack plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 0704b8ce4782a..3e673801c2faf 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github summary: API docs for the telemetryManagementSection plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 3056d7d683c84..1f32392bafbb5 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github summary: API docs for the timelines plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 8de9d5e89de2d..2789c007d9ebd 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github summary: API docs for the transform plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index a987e4b4bc8f3..af6efe1d4420a 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github summary: API docs for the triggersActionsUi plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index c39a2718bf367..f242a77c877ca 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github summary: API docs for the uiActions plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 1ccc372c28f52..d59b3f8d53f0e 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github summary: API docs for the uiActionsEnhanced plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 426b8cf9fbf18..d6df7ac389983 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github summary: API docs for the unifiedSearch plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index cc30eb1fd7850..c2ea826c491b8 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github summary: API docs for the unifiedSearch.autocomplete plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index a7ec086e66b1e..016ef659b8ba9 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github summary: API docs for the urlForwarding plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 47778833e072e..de91ebeef3794 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github summary: API docs for the usageCollection plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 0058b11c6b0c8..6b85fe44c412e 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github summary: API docs for the ux plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 53a3915ea7687..d7f1cffbb3585 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github summary: API docs for the visDefaultEditor plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index a8243f4cdbc7e..e874cf81ef824 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeGauge plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 12ae5dddebc4a..724f26293f5e7 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeHeatmap plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 88bafeff23ed5..1535dda901b09 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypePie plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index d97556bb2e801..eb1432e796dbd 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTable plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 2055a6d670392..abebd148d2620 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTimelion plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index d78d1cbbfbcb5..ef935085bd0e4 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeTimeseries plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index 0275317068293..fde1cd3bcebd4 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeVega plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index b3be9dae57a24..e06824be95340 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeVislib plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 391ed29ea11d7..b34bd6b4905dd 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github summary: API docs for the visTypeXy plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index aa0a1affa5c38..a41c9bd8bbb59 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -4,7 +4,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github summary: API docs for the visualizations plugin -date: 2022-06-22 +date: 2022-06-23 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info. --- From 8ae497afccabe6310cefb54d2f8a542be1d3ce43 Mon Sep 17 00:00:00 2001 From: Maja Grubic Date: Thu, 23 Jun 2022 07:46:04 +0200 Subject: [PATCH 49/61] [Kibana Overview] First round of functional tests (#134680) * [Kibana Overview] First round of functional tests * Update tests * Update snapshot * Update failing test * Fix failing test * Fix failing test * Fix failing test * Fix failing test Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .buildkite/ftr_configs.yml | 1 + .../__snapshots__/overview.test.tsx.snap | 40 +++++------ .../components/overview/overview.test.tsx | 10 +-- .../public/components/overview/overview.tsx | 10 +-- .../apps/kibana_overview/_analytics.ts | 63 ++++++++++++++++ .../apps/kibana_overview/_footer.ts | 55 ++++++++++++++ .../apps/kibana_overview/_no_data.ts | 42 +++++++++++ .../apps/kibana_overview/_page_header.ts | 69 ++++++++++++++++++ .../apps/kibana_overview/_solutions.ts | 72 +++++++++++++++++++ .../functional/apps/kibana_overview/config.ts | 18 +++++ test/functional/apps/kibana_overview/index.js | 23 ++++++ test/functional/config.base.js | 3 + 12 files changed, 373 insertions(+), 33 deletions(-) create mode 100644 test/functional/apps/kibana_overview/_analytics.ts create mode 100644 test/functional/apps/kibana_overview/_footer.ts create mode 100644 test/functional/apps/kibana_overview/_no_data.ts create mode 100644 test/functional/apps/kibana_overview/_page_header.ts create mode 100644 test/functional/apps/kibana_overview/_solutions.ts create mode 100644 test/functional/apps/kibana_overview/config.ts create mode 100644 test/functional/apps/kibana_overview/index.js diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index ba928931f303a..a824aa7ea29e2 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -73,6 +73,7 @@ enabled: - test/functional/apps/discover/config.ts - test/functional/apps/getting_started/config.ts - test/functional/apps/home/config.ts + - test/functional/apps/kibana_overview/config.ts - test/functional/apps/management/config.ts - test/functional/apps/saved_objects_management/config.ts - test/functional/apps/status_page/config.ts diff --git a/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap b/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap index c185e1b85ae1a..a5b79401d0b46 100644 --- a/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap +++ b/src/plugins/kibana_overview/public/components/overview/__snapshots__/overview.test.tsx.snap @@ -1,22 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Overview during loading 1`] = ` -
-
- -
-
-`; - -exports[`Overview render 1`] = ` +exports[`Overview renders correctly 1`] = ` `; -exports[`Overview when there is no user data view 1`] = ` +exports[`Overview renders correctly when there is no user data view 1`] = ` `; -exports[`Overview without features 1`] = ` +exports[`Overview renders correctly without features 1`] = ` `; -exports[`Overview without solutions 1`] = ` +exports[`Overview renders correctly without solutions 1`] = ` `; + +exports[`Overview show loading spinner during loading 1`] = ` +
+
+ +
+
+`; diff --git a/src/plugins/kibana_overview/public/components/overview/overview.test.tsx b/src/plugins/kibana_overview/public/components/overview/overview.test.tsx index b433e7a39da13..99d8b45cdf27b 100644 --- a/src/plugins/kibana_overview/public/components/overview/overview.test.tsx +++ b/src/plugins/kibana_overview/public/components/overview/overview.test.tsx @@ -166,7 +166,7 @@ describe('Overview', () => { afterAll(() => jest.clearAllMocks()); - test('render', async () => { + test('renders correctly', async () => { const component = mountWithIntl( { expect(component.find(KibanaPageTemplate).length).toBe(1); }); - test('without solutions', async () => { + test('renders correctly without solutions', async () => { const component = mountWithIntl( ); @@ -191,7 +191,7 @@ describe('Overview', () => { expect(component).toMatchSnapshot(); }); - test('without features', async () => { + test('renders correctly without features', async () => { const component = mountWithIntl( ); @@ -201,7 +201,7 @@ describe('Overview', () => { expect(component).toMatchSnapshot(); }); - test('when there is no user data view', async () => { + test('renders correctly when there is no user data view', async () => { hasESData.mockResolvedValue(true); hasUserDataView.mockResolvedValue(false); @@ -221,7 +221,7 @@ describe('Overview', () => { expect(component.find(EuiLoadingSpinner).length).toBe(0); }); - test('during loading', async () => { + test('show loading spinner during loading', async () => { hasESData.mockImplementation(() => new Promise(() => {})); hasUserDataView.mockImplementation(() => new Promise(() => {})); diff --git a/src/plugins/kibana_overview/public/components/overview/overview.tsx b/src/plugins/kibana_overview/public/components/overview/overview.tsx index 2258c662fe94e..738b278b17b36 100644 --- a/src/plugins/kibana_overview/public/components/overview/overview.tsx +++ b/src/plugins/kibana_overview/public/components/overview/overview.tsx @@ -22,11 +22,11 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { CoreStart } from '@kbn/core/public'; import { useKibana, - KibanaPageTemplateSolutionNavAvatar, overviewPageActions, OverviewPageFooter, } from '@kbn/kibana-react-plugin/public'; import { KibanaPageTemplate } from '@kbn/shared-ux-components'; +import { KibanaSolutionAvatar } from '@kbn/shared-ux-avatar-solution'; import { AnalyticsNoDataPageKibanaProvider, AnalyticsNoDataPage, @@ -298,13 +298,7 @@ export const Overview: FC = ({ newsFetchResult, solutions, features }) => className={`kbnOverviewSolution ${id}`} description={description ? description : ''} href={addBasePath(path)} - icon={ - - } + icon={} image={addBasePath(getSolutionGraphicURL(snakeCase(id)))} title={title} titleElement="h3" diff --git a/test/functional/apps/kibana_overview/_analytics.ts b/test/functional/apps/kibana_overview/_analytics.ts new file mode 100644 index 0000000000000..296256d924b24 --- /dev/null +++ b/test/functional/apps/kibana_overview/_analytics.ts @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; +import { WebElementWrapper } from '../../services/lib/web_element_wrapper'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const find = getService('find'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['common', 'header']); + + describe('overview page - Analytics apps', function describeIndexTests() { + before(async () => { + await esArchiver.load('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load( + 'test/functional/fixtures/kbn_archiver/kibana_sample_data_flights_index_pattern' + ); + await PageObjects.common.navigateToUrl('kibana_overview', '', { useActualUrl: true }); + await PageObjects.header.waitUntilLoadingHasFinished(); + }); + + after(async () => { + await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.unload( + 'test/functional/fixtures/kbn_archiver/kibana_sample_data_flights_index_pattern' + ); + }); + + const apps = ['dashboard', 'discover', 'canvas', 'maps', 'ml']; + + it('should display Analytics apps cards', async () => { + const kbnOverviewAppsCards = await find.allByCssSelector('.kbnOverviewApps__item'); + expect(kbnOverviewAppsCards.length).to.be(apps.length); + + const verifyImageUrl = async (el: WebElementWrapper, imgName: string) => { + const image = await el.findByCssSelector('img'); + const imageUrl = await image.getAttribute('src'); + expect(imageUrl.includes(imgName)).to.be(true); + }; + + for (let i = 0; i < apps.length; i++) { + verifyImageUrl(kbnOverviewAppsCards[i], `kibana_${apps[i]}_light.svg`); + } + }); + + it('click on a card should lead to the appropriate app', async () => { + const kbnOverviewAppsCards = await find.allByCssSelector('.kbnOverviewApps__item'); + const dashboardCard = kbnOverviewAppsCards.at(0); + expect(dashboardCard).not.to.be(undefined); + if (dashboardCard) { + await dashboardCard.click(); + await PageObjects.common.waitUntilUrlIncludes('app/dashboards'); + } + }); + }); +} diff --git a/test/functional/apps/kibana_overview/_footer.ts b/test/functional/apps/kibana_overview/_footer.ts new file mode 100644 index 0000000000000..c44d399154f14 --- /dev/null +++ b/test/functional/apps/kibana_overview/_footer.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const find = getService('find'); + const esArchiver = getService('esArchiver'); + const retry = getService('retry'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['common', 'header']); + + const defaultSettings = { + default_route: 'app/home', + }; + + describe('overview page - footer', function describeIndexTests() { + before(async () => { + await esArchiver.load('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load( + 'test/functional/fixtures/kbn_archiver/kibana_sample_data_flights_index_pattern' + ); + await PageObjects.common.navigateToUrl('kibana_overview', '', { useActualUrl: true }); + await PageObjects.header.waitUntilLoadingHasFinished(); + await kibanaServer.uiSettings.replace(defaultSettings); + }); + + after(async () => { + await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.unload( + 'test/functional/fixtures/kbn_archiver/kibana_sample_data_flights_index_pattern' + ); + await kibanaServer.uiSettings.replace(defaultSettings); + }); + + it('clicking footer updates landing page', async () => { + await PageObjects.header.waitUntilLoadingHasFinished(); + let footerButton = await find.byCssSelector('.kbnOverviewPageFooter__button'); + await footerButton.click(); + + await retry.try(async () => { + footerButton = await find.byCssSelector('.kbnOverviewPageFooter__button'); + const text = await ( + await footerButton.findByCssSelector('.euiButtonEmpty__text') + ).getVisibleText(); + expect(text.toString().includes('Display a different page on log in')).to.be(true); + }); + }); + }); +} diff --git a/test/functional/apps/kibana_overview/_no_data.ts b/test/functional/apps/kibana_overview/_no_data.ts new file mode 100644 index 0000000000000..8dec616eb8afe --- /dev/null +++ b/test/functional/apps/kibana_overview/_no_data.ts @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const find = getService('find'); + const testSubjects = getService('testSubjects'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['common', 'header']); + + describe('overview page - no data', function describeIndexTests() { + before(async () => { + await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); + kibanaServer.savedObjects.clean({ types: ['index-pattern'] }); + await kibanaServer.importExport.unload( + 'test/functional/fixtures/kbn_archiver/kibana_sample_data_flights_index_pattern' + ); + await PageObjects.common.navigateToUrl('kibana_overview', '', { useActualUrl: true }); + await PageObjects.header.waitUntilLoadingHasFinished(); + }); + + it('should display no data page', async () => { + await PageObjects.header.waitUntilLoadingHasFinished(); + const exists = await find.byClassName('kbnNoDataPageContents'); + expect(exists).not.to.be(undefined); + }); + + it('click on add data opens integrations', async () => { + const addIntegrations = await testSubjects.find('kbnOverviewAddIntegrations'); + await addIntegrations.click(); + await PageObjects.common.waitUntilUrlIncludes('integrations/browse'); + }); + }); +} diff --git a/test/functional/apps/kibana_overview/_page_header.ts b/test/functional/apps/kibana_overview/_page_header.ts new file mode 100644 index 0000000000000..8c254948676fc --- /dev/null +++ b/test/functional/apps/kibana_overview/_page_header.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const find = getService('find'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['common', 'header', 'dashboard']); + + describe('overview page - page header', function describeIndexTests() { + before(async () => { + await esArchiver.load('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load( + 'test/functional/fixtures/kbn_archiver/kibana_sample_data_flights_index_pattern' + ); + await PageObjects.common.navigateToUrl('kibana_overview', '', { useActualUrl: true }); + await PageObjects.header.waitUntilLoadingHasFinished(); + }); + + after(async () => { + await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.unload( + 'test/functional/fixtures/kbn_archiver/kibana_sample_data_flights_index_pattern' + ); + }); + + it('click on integrations leads to integrations', async () => { + const headerItems = await find.byCssSelector('.euiPageHeaderContent__rightSideItems'); + const items = await headerItems.findAllByCssSelector('.kbnRedirectCrossAppLinks'); + expect(items!.length).to.be(3); + + const integrations = await items!.at(0); + await integrations!.click(); + await PageObjects.common.waitUntilUrlIncludes('app/integrations/browse'); + }); + + it('click on management leads to management', async () => { + await PageObjects.common.navigateToUrl('kibana_overview', '', { useActualUrl: true }); + await PageObjects.header.waitUntilLoadingHasFinished(); + + const headerItems = await find.byCssSelector('.euiPageHeaderContent__rightSideItems'); + const items = await headerItems.findAllByCssSelector('.kbnRedirectCrossAppLinks'); + + const management = await items!.at(1); + await management!.click(); + await PageObjects.common.waitUntilUrlIncludes('app/management'); + }); + + it('click on dev tools leads to dev tools', async () => { + await PageObjects.common.navigateToUrl('kibana_overview', '', { useActualUrl: true }); + await PageObjects.header.waitUntilLoadingHasFinished(); + + const headerItems = await find.byCssSelector('.euiPageHeaderContent__rightSideItems'); + const items = await headerItems.findAllByCssSelector('.kbnRedirectCrossAppLinks'); + + const devTools = await items!.at(2); + await devTools!.click(); + await PageObjects.common.waitUntilUrlIncludes('app/dev_tools'); + }); + }); +} diff --git a/test/functional/apps/kibana_overview/_solutions.ts b/test/functional/apps/kibana_overview/_solutions.ts new file mode 100644 index 0000000000000..97af7f7242eff --- /dev/null +++ b/test/functional/apps/kibana_overview/_solutions.ts @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const find = getService('find'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const retry = getService('retry'); + const PageObjects = getPageObjects(['common', 'header']); + + describe('overview page - solutions', function describeIndexTests() { + before(async () => { + await esArchiver.load('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load( + 'test/functional/fixtures/kbn_archiver/kibana_sample_data_flights_index_pattern' + ); + await PageObjects.common.navigateToUrl('kibana_overview', '', { useActualUrl: true }); + await PageObjects.header.waitUntilLoadingHasFinished(); + }); + + after(async () => { + await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.unload( + 'test/functional/fixtures/kbn_archiver/kibana_sample_data_flights_index_pattern' + ); + }); + + it('contains the appropriate solutions', async () => { + const solutionCards = await find.allByCssSelector('.kbnOverviewMore__item'); + expect(solutionCards.length).to.be(2); + + const observabilityImage = await solutionCards[0].findByCssSelector('img'); + const observabilityImageUrl = await observabilityImage.getAttribute('src'); + expect(observabilityImageUrl.includes('/solutions_observability.svg')).to.be(true); + + const securityImage = await solutionCards[1].findByCssSelector('img'); + const securityImageUrl = await securityImage.getAttribute('src'); + expect(securityImageUrl.includes('/solutions_security_solution.svg')).to.be(true); + }); + + it('click on Observability card leads to Observability', async () => { + let solutionCards: string | any[] = []; + await retry.waitForWithTimeout('all solutions to be present', 5000, async () => { + solutionCards = await find.allByCssSelector('.kbnOverviewMore__item'); + return solutionCards.length === 2; + }); + await solutionCards[0].click(); + await PageObjects.common.waitUntilUrlIncludes('app/observability'); + }); + + it('click on Security card leads to Security', async () => { + await PageObjects.common.navigateToUrl('kibana_overview', '', { useActualUrl: true }); + await PageObjects.header.waitUntilLoadingHasFinished(); + + let solutionCards: string | any[] = []; + await retry.waitForWithTimeout('all solutions to be present', 5000, async () => { + solutionCards = await find.allByCssSelector('.kbnOverviewMore__item'); + return solutionCards.length === 2; + }); + await solutionCards[1].click(); + await PageObjects.common.waitUntilUrlIncludes('app/security'); + }); + }); +} diff --git a/test/functional/apps/kibana_overview/config.ts b/test/functional/apps/kibana_overview/config.ts new file mode 100644 index 0000000000000..e487d31dcb657 --- /dev/null +++ b/test/functional/apps/kibana_overview/config.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; + +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); + + return { + ...functionalConfig.getAll(), + testFiles: [require.resolve('.')], + }; +} diff --git a/test/functional/apps/kibana_overview/index.js b/test/functional/apps/kibana_overview/index.js new file mode 100644 index 0000000000000..40dd47f6b69ef --- /dev/null +++ b/test/functional/apps/kibana_overview/index.js @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export default function ({ getService, loadTestFile }) { + const browser = getService('browser'); + + describe('kibana overview app', function () { + before(function () { + return browser.setWindowSize(1200, 800); + }); + + loadTestFile(require.resolve('./_no_data')); + loadTestFile(require.resolve('./_page_header')); + loadTestFile(require.resolve('./_analytics')); + loadTestFile(require.resolve('./_solutions')); + loadTestFile(require.resolve('./_footer')); + }); +} diff --git a/test/functional/config.base.js b/test/functional/config.base.js index 147fef2685f5d..f7f210aa7de32 100644 --- a/test/functional/config.base.js +++ b/test/functional/config.base.js @@ -90,6 +90,9 @@ export default async function ({ readConfigFile }) { integrations: { pathname: '/app/integrations', }, + kibana_overview: { + pathname: '/app/kibana_overview', + }, }, junit: { reportName: 'Chrome UI Functional Tests', From bf65d4c261b0e344c13c474a59347a3aa7b0a21d Mon Sep 17 00:00:00 2001 From: Ioana Tagirta Date: Thu, 23 Jun 2022 09:04:41 +0200 Subject: [PATCH 50/61] Enterprise Search: change route for curations/find_or_create (#134894) * Change route for curations/find_or_create * Fix tests --- .../components/analytics_tables/shared_columns.tsx | 4 ++-- .../test_helpers/shared_columns_tests.tsx | 14 +++++++------- .../server/routes/app_search/curations.test.ts | 8 ++++---- .../server/routes/app_search/curations.ts | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_tables/shared_columns.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_tables/shared_columns.tsx index e7c98332ee651..b4ddf18b8adb0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_tables/shared_columns.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_tables/shared_columns.tsx @@ -86,9 +86,9 @@ export const ACTIONS_COLUMN = { try { const query = (item as Query).key || (item as RecentQuery).query_string || '""'; - const response = await http.get<{ id: string }>( + const response = await http.post<{ id: string }>( `/internal/app_search/engines/${engineName}/curations/find_or_create`, - { query: { query } } + { body: JSON.stringify({ query }) } ); navigateToUrl(generateEnginePath(ENGINE_CURATION_PATH, { curationId: response.id })); } catch (e) { diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_tables/test_helpers/shared_columns_tests.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_tables/test_helpers/shared_columns_tests.tsx index d9ffb83a561c4..3033c1dcbeea0 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_tables/test_helpers/shared_columns_tests.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/analytics/components/analytics_tables/test_helpers/shared_columns_tests.tsx @@ -44,35 +44,35 @@ export const runActionColumnTests = (wrapper: ReactWrapper) => { describe('edit action', () => { it('calls the find_or_create curation API, then navigates the user to the curation', async () => { - http.get.mockReturnValue(Promise.resolve({ id: 'cur-123456789' })); + http.post.mockReturnValue(Promise.resolve({ id: 'cur-123456789' })); wrapper.find('[data-test-subj="AnalyticsTableEditQueryButton"]').first().simulate('click'); await nextTick(); - expect(http.get).toHaveBeenCalledWith( + expect(http.post).toHaveBeenCalledWith( '/internal/app_search/engines/some-engine/curations/find_or_create', { - query: { query: 'some search' }, + body: JSON.stringify({ query: 'some search' }), } ); expect(navigateToUrl).toHaveBeenCalledWith('/engines/some-engine/curations/cur-123456789'); }); it('falls back to "" for the empty query', async () => { - http.get.mockReturnValue(Promise.resolve({ id: 'cur-987654321' })); + http.post.mockReturnValue(Promise.resolve({ id: 'cur-987654321' })); wrapper.find('[data-test-subj="AnalyticsTableEditQueryButton"]').last().simulate('click'); await nextTick(); - expect(http.get).toHaveBeenCalledWith( + expect(http.post).toHaveBeenCalledWith( '/internal/app_search/engines/some-engine/curations/find_or_create', { - query: { query: '""' }, + body: JSON.stringify({ query: '""' }), } ); expect(navigateToUrl).toHaveBeenCalledWith('/engines/some-engine/curations/cur-987654321'); }); it('handles API errors', async () => { - http.get.mockReturnValue(Promise.reject()); + http.post.mockReturnValue(Promise.reject()); wrapper.find('[data-test-subj="AnalyticsTableEditQueryButton"]').first().simulate('click'); await nextTick(); diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/curations.test.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/curations.test.ts index b930b449e97d1..8e2221b8d8f32 100644 --- a/x-pack/plugins/enterprise_search/server/routes/app_search/curations.test.ts +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/curations.test.ts @@ -195,13 +195,13 @@ describe('curations routes', () => { }); }); - describe('GET /internal/app_search/engines/{engineName}/curations/find_or_create', () => { + describe('POST /internal/app_search/engines/{engineName}/curations/find_or_create', () => { let mockRouter: MockRouter; beforeEach(() => { jest.clearAllMocks(); mockRouter = new MockRouter({ - method: 'get', + method: 'post', path: '/internal/app_search/engines/{engineName}/curations/find_or_create', }); @@ -219,12 +219,12 @@ describe('curations routes', () => { describe('validates', () => { it('required query param', () => { - const request = { query: { query: 'some query' } }; + const request = { body: { query: 'some query' } }; mockRouter.shouldValidate(request); }); it('missing query', () => { - const request = { query: {} }; + const request = { body: {} }; mockRouter.shouldThrow(request); }); }); diff --git a/x-pack/plugins/enterprise_search/server/routes/app_search/curations.ts b/x-pack/plugins/enterprise_search/server/routes/app_search/curations.ts index a7282e5dc6cc4..27927f2c36913 100644 --- a/x-pack/plugins/enterprise_search/server/routes/app_search/curations.ts +++ b/x-pack/plugins/enterprise_search/server/routes/app_search/curations.ts @@ -105,14 +105,14 @@ export function registerCurationsRoutes({ }) ); - router.get( + router.post( { path: '/internal/app_search/engines/{engineName}/curations/find_or_create', validate: { params: schema.object({ engineName: schema.string(), }), - query: schema.object({ + body: schema.object({ query: schema.string(), }), }, From d11c0be46577b10e23e87c91ff8997978fbf8d19 Mon Sep 17 00:00:00 2001 From: Marta Bondyra <4283304+mbondyra@users.noreply.github.com> Date: Thu, 23 Jun 2022 09:32:19 +0200 Subject: [PATCH 51/61] [Lens] Implement drag and drop between layers (#132018) * added dnd between layers * Andrew's comments addressed Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Stratoula Kalafateli --- .../lens/public/drag_drop/drag_drop.test.tsx | 61 +- .../drag_drop/providers/announcements.tsx | 309 ++- .../lens/public/drag_drop/providers/types.tsx | 1 + .../buttons/draggable_dimension_button.tsx | 53 +- .../buttons/drop_targets_utils.test.tsx | 123 + .../buttons/drop_targets_utils.tsx | 111 +- .../buttons/empty_dimension_button.tsx | 64 +- .../config_panel/layer_panel.test.tsx | 112 +- .../editor_frame/config_panel/layer_panel.tsx | 161 +- .../editor_frame/config_panel/types.ts | 1 - .../droppable/droppable.test.ts | 2332 ----------------- .../droppable/get_drop_props.test.ts | 767 ++++++ .../droppable/get_drop_props.ts | 214 +- .../dimension_panel/droppable/mocks.ts | 292 +++ .../droppable/on_drop_handler.test.ts | 2259 ++++++++++++++++ .../droppable/on_drop_handler.ts | 648 +++-- .../dimension_panel/operation_support.ts | 6 +- .../operations/definitions/count.tsx | 8 +- .../definitions/formula/formula.tsx | 24 +- .../operations/definitions/formula/math.tsx | 4 +- .../operations/definitions/index.ts | 22 +- .../operations/definitions/metrics.tsx | 4 +- .../operations/definitions/static_value.tsx | 21 +- .../operations/definitions/terms/index.tsx | 2 +- .../definitions/terms/terms.test.tsx | 21 +- .../operations/layer_helpers.test.ts | 49 +- .../operations/layer_helpers.ts | 163 +- .../operations/time_scale_utils.test.ts | 23 +- .../operations/time_scale_utils.ts | 3 +- .../indexpattern_datasource/state_helpers.ts | 16 + .../public/indexpattern_datasource/types.ts | 6 + x-pack/plugins/lens/public/types.ts | 51 +- .../xy_visualization/annotations/helpers.tsx | 252 +- .../reference_line_helpers.tsx | 6 +- .../xy_visualization/visualization.test.ts | 234 +- .../public/xy_visualization/visualization.tsx | 18 +- .../visualization_helpers.tsx | 1 + .../translations/translations/fr-FR.json | 34 - .../translations/translations/ja-JP.json | 29 - .../translations/translations/zh-CN.json | 34 - x-pack/test/accessibility/apps/lens.ts | 26 +- .../apps/lens/group1/smokescreen.ts | 52 +- .../test/functional/apps/lens/group1/table.ts | 8 +- .../functional/apps/lens/group2/dashboard.ts | 26 +- .../apps/lens/group3/annotations.ts | 8 +- .../apps/lens/group3/drag_and_drop.ts | 171 +- .../apps/lens/group3/error_handling.ts | 8 +- .../functional/apps/lens/group3/formula.ts | 31 +- .../apps/lens/group3/reference_lines.ts | 16 +- .../test/functional/page_objects/lens_page.ts | 30 +- 50 files changed, 5424 insertions(+), 3491 deletions(-) create mode 100644 x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/drop_targets_utils.test.tsx delete mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/get_drop_props.test.ts create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/mocks.ts create mode 100644 x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.test.ts diff --git a/x-pack/plugins/lens/public/drag_drop/drag_drop.test.tsx b/x-pack/plugins/lens/public/drag_drop/drag_drop.test.tsx index 1d6c14c09136a..c0d7766fc22d8 100644 --- a/x-pack/plugins/lens/public/drag_drop/drag_drop.test.tsx +++ b/x-pack/plugins/lens/public/drag_drop/drag_drop.test.tsx @@ -41,7 +41,14 @@ describe('DragDrop', () => { const value = { id: '1', - humanData: { label: 'hello', groupLabel: 'X', position: 1, canSwap: true, canDuplicate: true }, + humanData: { + label: 'hello', + groupLabel: 'X', + position: 1, + canSwap: true, + canDuplicate: true, + layerNumber: 0, + }, }; test('renders if nothing is being dragged', () => { @@ -205,7 +212,7 @@ describe('DragDrop', () => { order={[2, 0, 1, 0]} onDrop={(x: unknown) => {}} dropTypes={undefined} - value={{ id: '2', humanData: { label: 'label2' } }} + value={{ id: '2', humanData: { label: 'label2', layerNumber: 0 } }} > @@ -231,7 +238,7 @@ describe('DragDrop', () => { }} > @@ -286,7 +293,7 @@ describe('DragDrop', () => { registerDropTarget={jest.fn()} > @@ -329,7 +336,7 @@ describe('DragDrop', () => { draggable: true, value: { id: '1', - humanData: { label: 'Label1', position: 1 }, + humanData: { label: 'Label1', position: 1, layerNumber: 0 }, }, children: '1', order: [2, 0, 0, 0], @@ -341,7 +348,7 @@ describe('DragDrop', () => { value: { id: '2', - humanData: { label: 'label2', position: 1 }, + humanData: { label: 'label2', position: 1, layerNumber: 0 }, }, onDrop, dropTypes: ['move_compatible'] as DropType[], @@ -358,6 +365,7 @@ describe('DragDrop', () => { groupLabel: 'Y', canSwap: true, canDuplicate: true, + layerNumber: 0, }, }, onDrop, @@ -373,7 +381,7 @@ describe('DragDrop', () => { dragType: 'move' as 'copy' | 'move', value: { id: '4', - humanData: { label: 'label4', position: 2, groupLabel: 'Y' }, + humanData: { label: 'label4', position: 2, groupLabel: 'Y', layerNumber: 0 }, }, order: [2, 0, 2, 1], }, @@ -415,11 +423,11 @@ describe('DragDrop', () => { }); keyboardHandler.simulate('keydown', { key: 'Enter' }); expect(setA11yMessage).toBeCalledWith( - `You're dragging Label1 from at position 1 over label3 from Y group at position 1. Press space or enter to replace label3 with Label1. Hold alt or option to duplicate. Hold shift to swap.` + `You're dragging Label1 from at position 1 in layer 0 over label3 from Y group at position 1 in layer 0. Press space or enter to replace label3 with Label1. Hold alt or option to duplicate. Hold shift to swap.` ); expect(setActiveDropTarget).toBeCalledWith(undefined); expect(onDrop).toBeCalledWith( - { humanData: { label: 'Label1', position: 1 }, id: '1' }, + { humanData: { label: 'Label1', position: 1, layerNumber: 0 }, id: '1' }, 'move_compatible' ); }); @@ -474,7 +482,7 @@ describe('DragDrop', () => { draggable: true, value: { id: '1', - humanData: { label: 'Label1', position: 1 }, + humanData: { label: 'Label1', position: 1, layerNumber: 0 }, }, children: '1', order: [2, 0, 0, 0], @@ -486,7 +494,7 @@ describe('DragDrop', () => { value: { id: '2', - humanData: { label: 'label2', position: 1 }, + humanData: { label: 'label2', position: 1, layerNumber: 0 }, }, onDrop, dropTypes: ['move_compatible'] as DropType[], @@ -533,7 +541,7 @@ describe('DragDrop', () => { component = mount( { registerDropTarget={jest.fn()} > @@ -629,18 +637,24 @@ describe('DragDrop', () => { component.find('SingleDropInner').at(0).simulate('dragover'); component.find('SingleDropInner').at(0).simulate('drop'); - expect(onDrop).toBeCalledWith({ humanData: { label: 'Label1' }, id: '1' }, 'move_compatible'); + expect(onDrop).toBeCalledWith( + { humanData: { label: 'Label1', layerNumber: 0 }, id: '1' }, + 'move_compatible' + ); component.find('SingleDropInner').at(1).simulate('dragover'); component.find('SingleDropInner').at(1).simulate('drop'); expect(onDrop).toBeCalledWith( - { humanData: { label: 'Label1' }, id: '1' }, + { humanData: { label: 'Label1', layerNumber: 0 }, id: '1' }, 'duplicate_compatible' ); component.find('SingleDropInner').at(2).simulate('dragover'); component.find('SingleDropInner').at(2).simulate('drop'); - expect(onDrop).toBeCalledWith({ humanData: { label: 'Label1' }, id: '1' }, 'swap_compatible'); + expect(onDrop).toBeCalledWith( + { humanData: { label: 'Label1', layerNumber: 0 }, id: '1' }, + 'swap_compatible' + ); }); test('pressing Alt or Shift when dragging over the main drop target sets extra drop target as active', () => { @@ -693,7 +707,7 @@ describe('DragDrop', () => { draggable: true, value: { id: '1', - humanData: { label: 'Label1', position: 1 }, + humanData: { label: 'Label1', position: 1, layerNumber: 0 }, }, children: '1', order: [2, 0, 0, 0], @@ -705,7 +719,7 @@ describe('DragDrop', () => { value: { id: '2', - humanData: { label: 'label2', position: 1 }, + humanData: { label: 'label2', position: 1, layerNumber: 0 }, }, onDrop, dropTypes: ['move_compatible', 'duplicate_compatible', 'swap_compatible'] as DropType[], @@ -716,7 +730,7 @@ describe('DragDrop', () => { dragType: 'move' as const, value: { id: '3', - humanData: { label: 'label3', position: 1, groupLabel: 'Y' }, + humanData: { label: 'label3', position: 1, groupLabel: 'Y', layerNumber: 0 }, }, onDrop, dropTypes: ['replace_compatible'] as DropType[], @@ -734,6 +748,7 @@ describe('DragDrop', () => { humanData: { label: 'label2', position: 1, + layerNumber: 0, }, id: '2', onDrop, @@ -743,6 +758,7 @@ describe('DragDrop', () => { humanData: { label: 'label2', position: 1, + layerNumber: 0, }, id: '2', onDrop, @@ -753,6 +769,7 @@ describe('DragDrop', () => { groupLabel: 'Y', label: 'label3', position: 1, + layerNumber: 0, }, id: '3', onDrop, @@ -942,18 +959,18 @@ describe('DragDrop', () => { const items = [ { id: '1', - humanData: { label: 'Label1', position: 1, groupLabel: 'X' }, + humanData: { label: 'Label1', position: 1, groupLabel: 'X', layerNumber: 0 }, onDrop, draggable: true, }, { id: '2', - humanData: { label: 'label2', position: 2, groupLabel: 'X' }, + humanData: { label: 'label2', position: 2, groupLabel: 'X', layerNumber: 0 }, onDrop, }, { id: '3', - humanData: { label: 'label3', position: 3, groupLabel: 'X' }, + humanData: { label: 'label3', position: 3, groupLabel: 'X', layerNumber: 0 }, onDrop, }, ]; diff --git a/x-pack/plugins/lens/public/drag_drop/providers/announcements.tsx b/x-pack/plugins/lens/public/drag_drop/providers/announcements.tsx index 0d247825b6a17..a21656421a96f 100644 --- a/x-pack/plugins/lens/public/drag_drop/providers/announcements.tsx +++ b/x-pack/plugins/lens/public/drag_drop/providers/announcements.tsx @@ -22,19 +22,21 @@ interface CustomAnnouncementsType { const replaceAnnouncement = { selectedTarget: ( - { label, groupLabel, position }: HumanData, + { label, groupLabel, position, layerNumber }: HumanData, { label: dropLabel, groupLabel: dropGroupLabel, position: dropPosition, canSwap, canDuplicate, + canCombine, + layerNumber: dropLayerNumber, }: HumanData, announceModifierKeys?: boolean ) => { if (announceModifierKeys && (canSwap || canDuplicate)) { return i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.replaceMain', { - defaultMessage: `You're dragging {label} from {groupLabel} at position {position} over {dropLabel} from {dropGroupLabel} group at position {dropPosition}. Press space or enter to replace {dropLabel} with {label}.{duplicateCopy}{swapCopy}`, + defaultMessage: `You're dragging {label} from {groupLabel} at position {position} in layer {layerNumber} over {dropLabel} from {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}. Press space or enter to replace {dropLabel} with {label}.{duplicateCopy}{swapCopy}{combineCopy}`, values: { label, groupLabel, @@ -44,63 +46,76 @@ const replaceAnnouncement = { dropPosition, duplicateCopy: canDuplicate ? DUPLICATE_SHORT : '', swapCopy: canSwap ? SWAP_SHORT : '', + combineCopy: canCombine ? COMBINE_SHORT : '', + layerNumber, + dropLayerNumber, }, }); } - return i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.replace', { - defaultMessage: `Replace {dropLabel} in {dropGroupLabel} group at position {dropPosition} with {label}. Press space or enter to replace.`, + defaultMessage: `Replace {dropLabel} in {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber} with {label}. Press space or enter to replace.`, values: { label, dropLabel, dropGroupLabel, dropPosition, + dropLayerNumber, }, }); }, - dropped: ({ label }: HumanData, { label: dropLabel, groupLabel, position }: HumanData) => - i18n.translate('xpack.lens.dragDrop.announce.duplicated.replace', { - defaultMessage: 'Replaced {dropLabel} with {label} in {groupLabel} at position {position}', + dropped: ( + { label }: HumanData, + { label: dropLabel, groupLabel, position, layerNumber: dropLayerNumber }: HumanData + ) => { + return i18n.translate('xpack.lens.dragDrop.announce.duplicated.replace', { + defaultMessage: + 'Replaced {dropLabel} with {label} in {groupLabel} at position {position} in layer {dropLayerNumber}', values: { label, dropLabel, groupLabel, position, + dropLayerNumber, }, - }), + }); + }, }; const duplicateAnnouncement = { selectedTarget: ( - { label, groupLabel }: HumanData, + { label, groupLabel, layerNumber }: HumanData, { groupLabel: dropGroupLabel, position }: HumanData ) => { if (groupLabel !== dropGroupLabel) { return i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.duplicated', { - defaultMessage: `Duplicate {label} to {dropGroupLabel} group at position {position}. Hold Alt or Option and press space or enter to duplicate`, + defaultMessage: `Duplicate {label} to {dropGroupLabel} group at position {position} in layer {layerNumber}. Hold Alt or Option and press space or enter to duplicate`, values: { label, dropGroupLabel, position, + layerNumber, }, }); } return i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.duplicatedInGroup', { - defaultMessage: `Duplicate {label} to {dropGroupLabel} group at position {position}. Press space or enter to duplicate`, + defaultMessage: `Duplicate {label} to {dropGroupLabel} group at position {position} in layer {layerNumber}. Press space or enter to duplicate`, values: { label, dropGroupLabel, position, + layerNumber, }, }); }, - dropped: ({ label }: HumanData, { groupLabel, position }: HumanData) => + dropped: ({ label }: HumanData, { groupLabel, position, layerNumber }: HumanData) => i18n.translate('xpack.lens.dragDrop.announce.dropped.duplicated', { - defaultMessage: 'Duplicated {label} in {groupLabel} group at position {position}', + defaultMessage: + 'Duplicated {label} in {groupLabel} group at position {position} in layer {layerNumber}', values: { label, groupLabel, position, + layerNumber, }, }), }; @@ -109,8 +124,8 @@ const reorderAnnouncement = { selectedTarget: ( { label, groupLabel, position: prevPosition }: HumanData, { position }: HumanData - ) => - prevPosition === position + ) => { + return prevPosition === position ? i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.reorderedBack', { defaultMessage: `{label} returned to its initial position {prevPosition}`, values: { @@ -121,12 +136,13 @@ const reorderAnnouncement = { : i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.reordered', { defaultMessage: `Reorder {label} in {groupLabel} group from position {prevPosition} to position {position}. Press space or enter to reorder`, values: { - groupLabel, label, + groupLabel, position, prevPosition, }, - }), + }); + }, dropped: ({ label, groupLabel, position: prevPosition }: HumanData, { position }: HumanData) => i18n.translate('xpack.lens.dragDrop.announce.dropped.reordered', { defaultMessage: @@ -142,7 +158,7 @@ const reorderAnnouncement = { const combineAnnouncement = { selectedTarget: ( - { label, groupLabel, position }: HumanData, + { label, groupLabel, position, layerNumber }: HumanData, { label: dropLabel, groupLabel: dropGroupLabel, @@ -150,12 +166,13 @@ const combineAnnouncement = { canSwap, canDuplicate, canCombine, + layerNumber: dropLayerNumber, }: HumanData, announceModifierKeys?: boolean ) => { if (announceModifierKeys && (canSwap || canDuplicate || canCombine)) { return i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.combineMain', { - defaultMessage: `You're dragging {label} from {groupLabel} at position {position} over {dropLabel} from {dropGroupLabel} group at position {dropPosition}. Press space or enter to combine {dropLabel} with {label}.{duplicateCopy}{swapCopy}{combineCopy}`, + defaultMessage: `You're dragging {label} from {groupLabel} at position {position} in layer {layerNumber} over {dropLabel} from {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}. Press space or enter to combine {dropLabel} with {label}.{duplicateCopy}{swapCopy}{combineCopy}`, values: { label, groupLabel, @@ -166,28 +183,35 @@ const combineAnnouncement = { duplicateCopy: canDuplicate ? DUPLICATE_SHORT : '', swapCopy: canSwap ? SWAP_SHORT : '', combineCopy: canCombine ? COMBINE_SHORT : '', + layerNumber, + dropLayerNumber, }, }); } - return i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.combine', { - defaultMessage: `Combine {dropLabel} in {dropGroupLabel} group at position {dropPosition} with {label}. Press space or enter to combine.`, + defaultMessage: `Combine {dropLabel} in {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber} with {label}. Press space or enter to combine.`, values: { label, dropLabel, dropGroupLabel, dropPosition, + dropLayerNumber, }, }); }, - dropped: ({ label }: HumanData, { label: dropLabel, groupLabel, position }: HumanData) => + dropped: ( + { label }: HumanData, + { label: dropLabel, groupLabel, position, layerNumber: dropLayerNumber }: HumanData + ) => i18n.translate('xpack.lens.dragDrop.announce.duplicated.combine', { - defaultMessage: 'Combine {dropLabel} with {label} in {groupLabel} at position {position}', + defaultMessage: + 'Combine {dropLabel} with {label} in {groupLabel} at position {position} in layer {dropLayerNumber}', values: { label, dropLabel, groupLabel, position, + dropLayerNumber, }, }), }; @@ -212,7 +236,7 @@ export const announcements: CustomAnnouncementsType = { field_combine: combineAnnouncement.selectedTarget, replace_compatible: replaceAnnouncement.selectedTarget, replace_incompatible: ( - { label, groupLabel, position }: HumanData, + { label, groupLabel, position, layerNumber }: HumanData, { label: dropLabel, groupLabel: dropGroupLabel, @@ -220,14 +244,16 @@ export const announcements: CustomAnnouncementsType = { nextLabel, canSwap, canDuplicate, + canCombine, + layerNumber: dropLayerNumber, }: HumanData, announceModifierKeys?: boolean ) => { - if (announceModifierKeys && (canSwap || canDuplicate)) { + if (announceModifierKeys && (canSwap || canDuplicate || canCombine)) { return i18n.translate( 'xpack.lens.dragDrop.announce.selectedTarget.replaceIncompatibleMain', { - defaultMessage: `You're dragging {label} from {groupLabel} at position {position} over {dropLabel} from {dropGroupLabel} group at position {dropPosition}. Press space or enter to convert {label} to {nextLabel} and replace {dropLabel}.{duplicateCopy}{swapCopy}`, + defaultMessage: `You're dragging {label} from {groupLabel} at position {position} in layer {layerNumber} over {dropLabel} from {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}. Press space or enter to convert {label} to {nextLabel} and replace {dropLabel}.{duplicateCopy}{swapCopy}{combineCopy}`, values: { label, groupLabel, @@ -238,35 +264,40 @@ export const announcements: CustomAnnouncementsType = { nextLabel, duplicateCopy: canDuplicate ? DUPLICATE_SHORT : '', swapCopy: canSwap ? SWAP_SHORT : '', + combineCopy: canCombine ? COMBINE_SHORT : '', + layerNumber, + dropLayerNumber, }, } ); } return i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.replaceIncompatible', { - defaultMessage: `Convert {label} to {nextLabel} and replace {dropLabel} in {dropGroupLabel} group at position {dropPosition}. Press space or enter to replace`, + defaultMessage: `Convert {label} to {nextLabel} and replace {dropLabel} in {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}. Press space or enter to replace`, values: { label, - nextLabel, dropLabel, dropGroupLabel, dropPosition, + nextLabel, + dropLayerNumber, }, }); }, move_incompatible: ( - { label, groupLabel, position }: HumanData, + { label, groupLabel, position, layerNumber }: HumanData, { groupLabel: dropGroupLabel, position: dropPosition, nextLabel, canSwap, canDuplicate, + layerNumber: dropLayerNumber, }: HumanData, announceModifierKeys?: boolean ) => { if (announceModifierKeys && (canSwap || canDuplicate)) { return i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.moveIncompatibleMain', { - defaultMessage: `You're dragging {label} from {groupLabel} at position {position} over position {dropPosition} in {dropGroupLabel} group. Press space or enter to convert {label} to {nextLabel} and move.{duplicateCopy}{swapCopy}`, + defaultMessage: `You're dragging {label} from {groupLabel} at position {position} in layer {layerNumber} over position {dropPosition} in {dropGroupLabel} group in layer {dropLayerNumber}. Press space or enter to convert {label} to {nextLabel} and move.{duplicateCopy}`, values: { label, groupLabel, @@ -275,29 +306,37 @@ export const announcements: CustomAnnouncementsType = { dropPosition, nextLabel, duplicateCopy: canDuplicate ? DUPLICATE_SHORT : '', - swapCopy: canSwap ? SWAP_SHORT : '', + layerNumber, + dropLayerNumber, }, }); } return i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.moveIncompatible', { - defaultMessage: `Convert {label} to {nextLabel} and move to {dropGroupLabel} group at position {dropPosition}. Press space or enter to move`, + defaultMessage: `Convert {label} to {nextLabel} and move to {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}. Press space or enter to move`, values: { label, - nextLabel, dropGroupLabel, dropPosition, + nextLabel, + dropLayerNumber, }, }); }, move_compatible: ( { label, groupLabel, position }: HumanData, - { groupLabel: dropGroupLabel, position: dropPosition, canSwap, canDuplicate }: HumanData, + { + groupLabel: dropGroupLabel, + position: dropPosition, + canSwap, + canDuplicate, + layerNumber: dropLayerNumber, + }: HumanData, announceModifierKeys?: boolean ) => { if (announceModifierKeys && (canSwap || canDuplicate)) { return i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.moveCompatibleMain', { - defaultMessage: `You're dragging {label} from {groupLabel} at position {position} over position {dropPosition} in {dropGroupLabel} group. Press space or enter to move.{duplicateCopy}{swapCopy}`, + defaultMessage: `You're dragging {label} from {groupLabel} at position {position} over position {dropPosition} in {dropGroupLabel} group in layer {dropLayerNumber}. Press space or enter to move.{duplicateCopy}`, values: { label, groupLabel, @@ -305,69 +344,78 @@ export const announcements: CustomAnnouncementsType = { dropGroupLabel, dropPosition, duplicateCopy: canDuplicate ? DUPLICATE_SHORT : '', - swapCopy: canSwap ? SWAP_SHORT : '', + dropLayerNumber, }, }); } return i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.moveCompatible', { - defaultMessage: `Move {label} to {dropGroupLabel} group at position {dropPosition}. Press space or enter to move`, + defaultMessage: `Move {label} to {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}. Press space or enter to move`, values: { label, dropGroupLabel, dropPosition, + dropLayerNumber, }, }); }, duplicate_incompatible: ( { label }: HumanData, - { groupLabel, position, nextLabel }: HumanData + { groupLabel, position, nextLabel, layerNumber: dropLayerNumber }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.duplicateIncompatible', { defaultMessage: - 'Convert copy of {label} to {nextLabel} and add to {groupLabel} group at position {position}. Hold Alt or Option and press space or enter to duplicate', + 'Convert copy of {label} to {nextLabel} and add to {groupLabel} group at position {position} in layer {dropLayerNumber}. Hold Alt or Option and press space or enter to duplicate', values: { label, groupLabel, position, nextLabel, + dropLayerNumber, }, }), replace_duplicate_incompatible: ( { label }: HumanData, - { label: dropLabel, groupLabel, position, nextLabel }: HumanData + { label: dropLabel, groupLabel, position, nextLabel, layerNumber: dropLayerNumber }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.replaceDuplicateIncompatible', { defaultMessage: - 'Convert copy of {label} to {nextLabel} and replace {dropLabel} in {groupLabel} group at position {position}. Hold Alt or Option and press space or enter to duplicate and replace', + 'Convert copy of {label} to {nextLabel} and replace {dropLabel} in {groupLabel} group at position {position} in layer {dropLayerNumber}. Hold Alt or Option and press space or enter to duplicate and replace', values: { label, groupLabel, position, dropLabel, nextLabel, + dropLayerNumber, }, }), replace_duplicate_compatible: ( { label }: HumanData, - { label: dropLabel, groupLabel, position }: HumanData + { label: dropLabel, groupLabel, position, layerNumber: dropLayerNumber }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.replaceDuplicateCompatible', { defaultMessage: - 'Duplicate {label} and replace {dropLabel} in {groupLabel} at position {position}. Hold Alt or Option and press space or enter to duplicate and replace', + 'Duplicate {label} and replace {dropLabel} in {groupLabel} at position {position} in layer {dropLayerNumber}. Hold Alt or Option and press space or enter to duplicate and replace', values: { label, dropLabel, groupLabel, position, + dropLayerNumber, }, }), swap_compatible: ( - { label, groupLabel, position }: HumanData, - { label: dropLabel, groupLabel: dropGroupLabel, position: dropPosition }: HumanData + { label, groupLabel, position, layerNumber }: HumanData, + { + label: dropLabel, + groupLabel: dropGroupLabel, + position: dropPosition, + layerNumber: dropLayerNumber, + }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.swapCompatible', { defaultMessage: - 'Swap {label} in {groupLabel} group at position {position} with {dropLabel} in {dropGroupLabel} group at position {dropPosition}. Hold Shift and press space or enter to swap', + 'Swap {label} in {groupLabel} group at position {position} in layer {layerNumber} with {dropLabel} in {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}. Hold Shift and press space or enter to swap', values: { label, groupLabel, @@ -375,15 +423,23 @@ export const announcements: CustomAnnouncementsType = { dropLabel, dropGroupLabel, dropPosition, + layerNumber, + dropLayerNumber, }, }), swap_incompatible: ( - { label, groupLabel, position }: HumanData, - { label: dropLabel, groupLabel: dropGroupLabel, position: dropPosition, nextLabel }: HumanData + { label, groupLabel, position, layerNumber }: HumanData, + { + label: dropLabel, + groupLabel: dropGroupLabel, + position: dropPosition, + nextLabel, + layerNumber: dropLayerNumber, + }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.swapIncompatible', { defaultMessage: - 'Convert {label} to {nextLabel} in {groupLabel} group at position {position} and swap with {dropLabel} in {dropGroupLabel} group at position {dropPosition}. Hold Shift and press space or enter to swap', + 'Convert {label} to {nextLabel} in {groupLabel} group at position {position} in layer {layerNumber} and swap with {dropLabel} in {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}. Hold Shift and press space or enter to swap', values: { label, groupLabel, @@ -392,15 +448,22 @@ export const announcements: CustomAnnouncementsType = { dropGroupLabel, dropPosition, nextLabel, + layerNumber, + dropLayerNumber, }, }), combine_compatible: ( - { label, groupLabel, position }: HumanData, - { label: dropLabel, groupLabel: dropGroupLabel, position: dropPosition, nextLabel }: HumanData + { label, groupLabel, position, layerNumber }: HumanData, + { + label: dropLabel, + groupLabel: dropGroupLabel, + position: dropPosition, + layerNumber: dropLayerNumber, + }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.combineCompatible', { defaultMessage: - 'Combine {label} in {groupLabel} group at position {position} with {dropLabel} in {dropGroupLabel} group at position {dropPosition}. Hold Control and press space or enter to combine', + 'Combine {label} in {groupLabel} group at position {position} in layer {layerNumber} with {dropLabel} in {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}. Hold Control and press space or enter to combine', values: { label, groupLabel, @@ -408,15 +471,23 @@ export const announcements: CustomAnnouncementsType = { dropLabel, dropGroupLabel, dropPosition, + layerNumber, + dropLayerNumber, }, }), combine_incompatible: ( - { label, groupLabel, position }: HumanData, - { label: dropLabel, groupLabel: dropGroupLabel, position: dropPosition, nextLabel }: HumanData + { label, groupLabel, position, layerNumber }: HumanData, + { + label: dropLabel, + groupLabel: dropGroupLabel, + position: dropPosition, + nextLabel, + layerNumber: dropLayerNumber, + }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.combineIncompatible', { defaultMessage: - 'Convert {label} to {nextLabel} in {groupLabel} group at position {position} and combine with {dropLabel} in {dropGroupLabel} group at position {dropPosition}. Hold Control and press space or enter to combine', + 'Convert {label} to {nextLabel} in {groupLabel} group at position {position} in layer {layerNumber} and combine with {dropLabel} in {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}. Hold Control and press space or enter to combine', values: { label, groupLabel, @@ -425,6 +496,8 @@ export const announcements: CustomAnnouncementsType = { dropGroupLabel, dropPosition, nextLabel, + dropLayerNumber, + layerNumber, }, }), }, @@ -436,92 +509,110 @@ export const announcements: CustomAnnouncementsType = { replace_compatible: replaceAnnouncement.dropped, replace_incompatible: ( { label }: HumanData, - { label: dropLabel, groupLabel, position, nextLabel }: HumanData + { label: dropLabel, groupLabel, position, nextLabel, layerNumber: dropLayerNumber }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.dropped.replaceIncompatible', { defaultMessage: - 'Converted {label} to {nextLabel} and replaced {dropLabel} in {groupLabel} group at position {position}', + 'Converted {label} to {nextLabel} and replaced {dropLabel} in {groupLabel} group at position {position} in layer {dropLayerNumber}', values: { label, nextLabel, dropLabel, groupLabel, position, + dropLayerNumber, }, }), - move_incompatible: ({ label }: HumanData, { groupLabel, position, nextLabel }: HumanData) => + move_incompatible: ( + { label }: HumanData, + { groupLabel, position, nextLabel, layerNumber: dropLayerNumber }: HumanData + ) => i18n.translate('xpack.lens.dragDrop.announce.dropped.moveIncompatible', { defaultMessage: - 'Converted {label} to {nextLabel} and moved to {groupLabel} group at position {position}', + 'Converted {label} to {nextLabel} and moved to {groupLabel} group at position {position} in layer {dropLayerNumber}', values: { label, nextLabel, groupLabel, position, + dropLayerNumber, }, }), - move_compatible: ({ label }: HumanData, { groupLabel, position }: HumanData) => + move_compatible: ( + { label }: HumanData, + { groupLabel, position, layerNumber: dropLayerNumber }: HumanData + ) => i18n.translate('xpack.lens.dragDrop.announce.dropped.moveCompatible', { - defaultMessage: 'Moved {label} to {groupLabel} group at position {position}', + defaultMessage: + 'Moved {label} to {groupLabel} group at position {position} in layer {dropLayerNumber}', values: { label, groupLabel, position, + dropLayerNumber, }, }), duplicate_incompatible: ( { label }: HumanData, - { groupLabel, position, nextLabel }: HumanData + { groupLabel, position, nextLabel, layerNumber: dropLayerNumber }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.dropped.duplicateIncompatible', { defaultMessage: - 'Converted copy of {label} to {nextLabel} and added to {groupLabel} group at position {position}', + 'Converted copy of {label} to {nextLabel} and added to {groupLabel} group at position {position} in layer {dropLayerNumber}', values: { label, groupLabel, position, nextLabel, + dropLayerNumber, }, }), replace_duplicate_incompatible: ( { label }: HumanData, - { label: dropLabel, groupLabel, position, nextLabel }: HumanData + { label: dropLabel, groupLabel, position, nextLabel, layerNumber: dropLayerNumber }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.dropped.replaceDuplicateIncompatible', { defaultMessage: - 'Converted copy of {label} to {nextLabel} and replaced {dropLabel} in {groupLabel} group at position {position}', + 'Converted copy of {label} to {nextLabel} and replaced {dropLabel} in {groupLabel} group at position {position} in layer {dropLayerNumber}', values: { label, dropLabel, groupLabel, position, nextLabel, + dropLayerNumber, }, }), replace_duplicate_compatible: ( { label }: HumanData, - { label: dropLabel, groupLabel, position }: HumanData + { label: dropLabel, groupLabel, position, layerNumber: dropLayerNumber }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.duplicated.replaceDuplicateCompatible', { defaultMessage: - 'Replaced {dropLabel} with a copy of {label} in {groupLabel} at position {position}', + 'Replaced {dropLabel} with a copy of {label} in {groupLabel} at position {position} in layer {dropLayerNumber}', values: { label, dropLabel, groupLabel, position, + dropLayerNumber, }, }), swap_compatible: ( - { label, groupLabel, position }: HumanData, - { label: dropLabel, groupLabel: dropGroupLabel, position: dropPosition }: HumanData + { label, groupLabel, position, layerNumber }: HumanData, + { + label: dropLabel, + groupLabel: dropGroupLabel, + position: dropPosition, + layerNumber: dropLayerNumber, + }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.dropped.swapCompatible', { defaultMessage: - 'Moved {label} to {dropGroupLabel} at position {dropPosition} and {dropLabel} to {groupLabel} group at position {position}', + 'Moved {label} to {dropGroupLabel} at position {dropPosition} in layer {dropLayerNumber} and {dropLabel} to {groupLabel} group at position {position} in layer {layerNumber}', values: { label, groupLabel, @@ -529,15 +620,23 @@ export const announcements: CustomAnnouncementsType = { dropLabel, dropGroupLabel, dropPosition, + layerNumber, + dropLayerNumber, }, }), swap_incompatible: ( - { label, groupLabel, position }: HumanData, - { label: dropLabel, groupLabel: dropGroupLabel, position: dropPosition, nextLabel }: HumanData + { label, groupLabel, position, layerNumber }: HumanData, + { + label: dropLabel, + groupLabel: dropGroupLabel, + position: dropPosition, + nextLabel, + layerNumber: dropLayerNumber, + }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.dropped.swapIncompatible', { defaultMessage: - 'Converted {label} to {nextLabel} in {groupLabel} group at position {position} and swapped with {dropLabel} in {dropGroupLabel} group at position {dropPosition}', + 'Converted {label} to {nextLabel} in {groupLabel} group at position {position} in layer {layerNumber} and swapped with {dropLabel} in {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}', values: { label, groupLabel, @@ -546,31 +645,44 @@ export const announcements: CustomAnnouncementsType = { dropLabel, dropPosition, nextLabel, + dropLayerNumber, + layerNumber, }, }), combine_compatible: ( - { label, groupLabel, position }: HumanData, - { label: dropLabel, groupLabel: dropGroupLabel, position: dropPosition }: HumanData + { label, groupLabel }: HumanData, + { + label: dropLabel, + groupLabel: dropGroupLabel, + position: dropPosition, + layerNumber: dropLayerNumber, + }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.dropped.combineCompatible', { defaultMessage: - 'Combined {label} to {dropGroupLabel} at position {dropPosition} and {dropLabel} to {groupLabel} group at position {position}', + 'Combined {label} in group {groupLabel} to {dropLabel} in group {dropGroupLabel} at position {dropPosition} in layer {dropLayerNumber}', values: { label, groupLabel, - position, dropLabel, dropGroupLabel, dropPosition, + dropLayerNumber, }, }), combine_incompatible: ( - { label, groupLabel, position }: HumanData, - { label: dropLabel, groupLabel: dropGroupLabel, position: dropPosition, nextLabel }: HumanData + { label, groupLabel, position, layerNumber }: HumanData, + { + label: dropLabel, + groupLabel: dropGroupLabel, + position: dropPosition, + nextLabel, + layerNumber: dropLayerNumber, + }: HumanData ) => i18n.translate('xpack.lens.dragDrop.announce.dropped.combineIncompatible', { defaultMessage: - 'Converted {label} to {nextLabel} in {groupLabel} group at position {position} and combined with {dropLabel} in {dropGroupLabel} group at position {dropPosition}', + 'Converted {label} to {nextLabel} in {groupLabel} group at position {position} and combined with {dropLabel} in {dropGroupLabel} group at position {dropPosition} in layer {dropLayerNumber}', values: { label, groupLabel, @@ -579,6 +691,7 @@ export const announcements: CustomAnnouncementsType = { dropLabel, dropPosition, nextLabel, + dropLayerNumber, }, }), }, @@ -620,15 +733,22 @@ const defaultAnnouncements = { dropped: ( { label }: HumanData, - { groupLabel: dropGroupLabel, position, label: dropLabel }: HumanData + { + groupLabel: dropGroupLabel, + position, + label: dropLabel, + layerNumber: dropLayerNumber, + }: HumanData ) => dropGroupLabel && position ? i18n.translate('xpack.lens.dragDrop.announce.droppedDefault', { - defaultMessage: 'Added {label} in {dropGroupLabel} group at position {position}', + defaultMessage: + 'Added {label} in {dropGroupLabel} group at position {position} in layer {dropLayerNumber}', values: { label, dropGroupLabel, position, + dropLayerNumber, }, }) : i18n.translate('xpack.lens.dragDrop.announce.droppedNoPosition', { @@ -640,15 +760,21 @@ const defaultAnnouncements = { }), selectedTarget: ( { label }: HumanData, - { label: dropLabel, groupLabel: dropGroupLabel, position }: HumanData + { + label: dropLabel, + groupLabel: dropGroupLabel, + position, + layerNumber: dropLayerNumber, + }: HumanData ) => { return dropGroupLabel && position ? i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.default', { - defaultMessage: `Add {label} to {dropGroupLabel} group at position {position}. Press space or enter to add`, + defaultMessage: `Add {label} to {dropGroupLabel} group at position {position} in layer {dropLayerNumber}. Press space or enter to add`, values: { label, dropGroupLabel, position, + dropLayerNumber, }, }) : i18n.translate('xpack.lens.dragDrop.announce.selectedTarget.defaultNoPosition', { @@ -671,8 +797,15 @@ export const announce = { dropElement: HumanData, type?: DropType, announceModifierKeys?: boolean - ) => - (type && - announcements.selectedTarget?.[type]?.(draggedElement, dropElement, announceModifierKeys)) || - defaultAnnouncements.selectedTarget(draggedElement, dropElement), + ) => { + return ( + (type && + announcements.selectedTarget?.[type]?.( + draggedElement, + dropElement, + announceModifierKeys + )) || + defaultAnnouncements.selectedTarget(draggedElement, dropElement) + ); + }, }; diff --git a/x-pack/plugins/lens/public/drag_drop/providers/types.tsx b/x-pack/plugins/lens/public/drag_drop/providers/types.tsx index 921ab897706c0..363f0b41ef3a1 100644 --- a/x-pack/plugins/lens/public/drag_drop/providers/types.tsx +++ b/x-pack/plugins/lens/public/drag_drop/providers/types.tsx @@ -10,6 +10,7 @@ import { DropType } from '../../types'; export interface HumanData { label: string; groupLabel?: string; + layerNumber?: number; position?: number; nextLabel?: string; canSwap?: boolean; diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/draggable_dimension_button.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/draggable_dimension_button.tsx index f0e0911b708fd..32aba270e846b 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/draggable_dimension_button.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/draggable_dimension_button.tsx @@ -10,10 +10,10 @@ import { DragDrop, DragDropIdentifier, DragContext } from '../../../../drag_drop import { Datasource, VisualizationDimensionGroupConfig, - isDraggedOperation, + isOperation, DropType, + DatasourceLayers, } from '../../../../types'; -import { LayerDatasourceDropProps } from '../types'; import { getCustomDropTarget, getAdditionalClassesOnDroppable, @@ -29,45 +29,53 @@ export function DraggableDimensionButton({ layerIndex, columnId, group, - groups, onDrop, onDragStart, onDragEnd, children, - layerDatasourceDropProps, + state, layerDatasource, + datasourceLayers, registerNewButtonRef, }: { layerId: string; groupIndex: number; layerIndex: number; - onDrop: ( - droppedItem: DragDropIdentifier, - dropTarget: DragDropIdentifier, - dropType?: DropType - ) => void; + onDrop: (source: DragDropIdentifier, dropTarget: DragDropIdentifier, dropType?: DropType) => void; onDragStart: () => void; onDragEnd: () => void; group: VisualizationDimensionGroupConfig; - groups: VisualizationDimensionGroupConfig[]; label: string; children: ReactElement; layerDatasource: Datasource; - layerDatasourceDropProps: LayerDatasourceDropProps; + datasourceLayers: DatasourceLayers; + state: unknown; accessorIndex: number; columnId: string; registerNewButtonRef: (id: string, instance: HTMLDivElement | null) => void; }) { const { dragging } = useContext(DragContext); - const dropProps = getDropProps(layerDatasource, { - ...(layerDatasourceDropProps || {}), - dragging, - columnId, - filterOperations: group.filterOperations, - groupId: group.groupId, - dimensionGroups: groups, - }); + const sharedDatasource = + !isOperation(dragging) || + datasourceLayers?.[dragging.layerId]?.datasourceId === datasourceLayers?.[layerId]?.datasourceId + ? layerDatasource + : undefined; + + const dropProps = getDropProps( + { + state, + source: dragging, + target: { + layerId, + columnId, + groupId: group.groupId, + filterOperations: group.filterOperations, + prioritizedOperation: group.prioritizedOperation, + }, + }, + sharedDatasource + ); const dropTypes = dropProps?.dropTypes; const nextLabel = dropProps?.nextLabel; @@ -104,6 +112,7 @@ export function DraggableDimensionButton({ groupLabel: group.groupLabel, position: accessorIndex + 1, nextLabel: nextLabel || '', + layerNumber: layerIndex + 1, }, }), [ @@ -118,10 +127,10 @@ export function DraggableDimensionButton({ canDuplicate, canSwap, canCombine, + layerIndex, ] ); - // todo: simplify by id and use drop targets? const reorderableGroup = useMemo( () => group.accessors.map((g) => ({ @@ -136,7 +145,7 @@ export function DraggableDimensionButton({ ); const handleOnDrop = useCallback( - (droppedItem, selectedDropType) => onDrop(droppedItem, value, selectedDropType), + (source, selectedDropType) => onDrop(source, value, selectedDropType), [value, onDrop] ); return ( @@ -151,7 +160,7 @@ export function DraggableDimensionButton({ getAdditionalClassesOnDroppable={getAdditionalClassesOnDroppable} order={[2, layerIndex, groupIndex, accessorIndex]} draggable - dragType={isDraggedOperation(dragging) ? 'move' : 'copy'} + dragType={isOperation(dragging) ? 'move' : 'copy'} dropTypes={dropTypes} reorderableGroup={reorderableGroup.length > 1 ? reorderableGroup : undefined} value={value} diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/drop_targets_utils.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/drop_targets_utils.test.tsx new file mode 100644 index 0000000000000..dd5ec847fb5b5 --- /dev/null +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/drop_targets_utils.test.tsx @@ -0,0 +1,123 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getDropProps } from './drop_targets_utils'; +import { createMockDatasource } from '../../../../mocks'; + +describe('getDropProps', () => { + it('should run datasource getDropProps if exists', () => { + const mockDatasource = createMockDatasource('testDatasource'); + getDropProps( + { + state: 'datasourceState', + target: { + columnId: 'col1', + groupId: 'x', + layerId: 'first', + filterOperations: () => true, + }, + source: { + columnId: 'col1', + groupId: 'x', + layerId: 'first', + id: 'annotationColumn2', + humanData: { label: 'Event' }, + }, + }, + mockDatasource + ); + expect(mockDatasource.getDropProps).toHaveBeenCalled(); + }); + describe('no datasource', () => { + it('returns reorder for the same group existing columns', () => { + expect( + getDropProps({ + state: 'datasourceState', + target: { + columnId: 'annotationColumn', + groupId: 'xAnnotations', + layerId: 'second', + filterOperations: () => true, + }, + source: { + columnId: 'annotationColumn2', + groupId: 'xAnnotations', + layerId: 'second', + id: 'annotationColumn2', + humanData: { label: 'Event' }, + }, + }) + ).toEqual({ dropTypes: ['reorder'] }); + }); + it('returns duplicate for the same group existing column and not existing column', () => { + expect( + getDropProps({ + state: 'datasourceState', + target: { + columnId: 'annotationColumn', + groupId: 'xAnnotations', + layerId: 'second', + isNewColumn: true, + filterOperations: () => true, + }, + source: { + columnId: 'annotationColumn2', + groupId: 'xAnnotations', + layerId: 'second', + id: 'annotationColumn2', + humanData: { label: 'Event' }, + }, + }) + ).toEqual({ dropTypes: ['duplicate_compatible'] }); + }); + it('returns replace_duplicate and replace for replacing to different layer', () => { + expect( + getDropProps({ + state: 'datasourceState', + target: { + columnId: 'annotationColumn', + groupId: 'xAnnotations', + layerId: 'first', + filterOperations: () => true, + }, + source: { + columnId: 'annotationColumn2', + groupId: 'xAnnotations', + layerId: 'second', + id: 'annotationColumn2', + humanData: { label: 'Event' }, + }, + }) + ).toEqual({ + dropTypes: ['replace_compatible', 'replace_duplicate_compatible', 'swap_compatible'], + }); + }); + it('returns duplicate and move for replacing to different layer for empty column', () => { + expect( + getDropProps({ + state: 'datasourceState', + target: { + columnId: 'annotationColumn', + groupId: 'xAnnotations', + layerId: 'first', + isNewColumn: true, + filterOperations: () => true, + }, + source: { + columnId: 'annotationColumn2', + groupId: 'xAnnotations', + layerId: 'second', + id: 'annotationColumn2', + humanData: { label: 'Event' }, + }, + }) + ).toEqual({ + dropTypes: ['move_compatible', 'duplicate_compatible'], + }); + }); + }); +}); diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/drop_targets_utils.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/drop_targets_utils.tsx index 056efbf379d8a..8ce2a4c0cc975 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/drop_targets_utils.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/drop_targets_utils.tsx @@ -9,8 +9,17 @@ import React from 'react'; import classNames from 'classnames'; import { EuiIcon, EuiFlexItem, EuiFlexGroup, EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { DraggingIdentifier } from '../../../../drag_drop'; -import { Datasource, DropType, GetDropProps } from '../../../../types'; +import { DragDropIdentifier, DraggingIdentifier } from '../../../../drag_drop'; +import { + Datasource, + DropType, + FramePublicAPI, + GetDropPropsArgs, + isOperation, + Visualization, + DragDropOperation, + VisualizationDimensionGroupConfig, +} from '../../../../types'; function getPropsForDropType(type: 'swap' | 'duplicate' | 'combine') { switch (type) { @@ -131,35 +140,97 @@ export const getAdditionalClassesOnDroppable = (dropType?: string) => { } }; -const isOperationFromTheSameGroup = ( - op1?: DraggingIdentifier, - op2?: { layerId: string; groupId: string; columnId: string } -) => { +const isOperationFromCompatibleGroup = (op1?: DraggingIdentifier, op2?: DragDropOperation) => { return ( - op1 && - op2 && - 'columnId' in op1 && + isOperation(op1) && + isOperation(op2) && + op1.columnId !== op2.columnId && + op1.groupId === op2.groupId && + op1.layerId !== op2.layerId + ); +}; + +export const isOperationFromTheSameGroup = (op1?: DraggingIdentifier, op2?: DragDropOperation) => { + return ( + isOperation(op1) && + isOperation(op2) && op1.columnId !== op2.columnId && - 'groupId' in op1 && op1.groupId === op2.groupId && - 'layerId' in op1 && op1.layerId === op2.layerId ); }; +export function getDropPropsForSameGroup( + isNewColumn?: boolean +): { dropTypes: DropType[]; nextLabel?: string } | undefined { + return !isNewColumn ? { dropTypes: ['reorder'] } : { dropTypes: ['duplicate_compatible'] }; +} + export const getDropProps = ( - layerDatasource: Datasource, - dropProps: GetDropProps, - isNew?: boolean + dropProps: GetDropPropsArgs, + sharedDatasource?: Datasource ): { dropTypes: DropType[]; nextLabel?: string } | undefined => { - if (layerDatasource) { - return layerDatasource.getDropProps(dropProps); + if (sharedDatasource) { + return sharedDatasource?.getDropProps(dropProps); } else { - // TODO: refactor & test this - it's too annotations specific - // TODO: allow moving operations between layers for annotations - if (isOperationFromTheSameGroup(dropProps.dragging, dropProps)) { - return { dropTypes: [isNew ? 'duplicate_compatible' : 'reorder'], nextLabel: '' }; + if (isOperationFromTheSameGroup(dropProps.source, dropProps.target)) { + return getDropPropsForSameGroup(dropProps.target.isNewColumn); + } + if (isOperationFromCompatibleGroup(dropProps.source, dropProps.target)) { + return { + dropTypes: dropProps.target.isNewColumn + ? ['move_compatible', 'duplicate_compatible'] + : ['replace_compatible', 'replace_duplicate_compatible', 'swap_compatible'], + }; } } return; }; + +export interface OnVisDropProps { + prevState: T; + target: DragDropOperation; + source: DragDropIdentifier; + frame: FramePublicAPI; + dropType: DropType; + group?: VisualizationDimensionGroupConfig; +} + +export function onDropForVisualization( + props: OnVisDropProps, + activeVisualization: Visualization +) { + const { prevState, target, frame, dropType, source, group } = props; + const { layerId, columnId, groupId } = target; + + const previousColumn = + isOperation(source) && group?.requiresPreviousColumnOnDuplicate ? source.columnId : undefined; + + const newVisState = activeVisualization.setDimension({ + columnId, + groupId, + layerId, + prevState, + previousColumn, + frame, + }); + + // remove source + if ( + isOperation(source) && + (dropType === 'move_compatible' || + dropType === 'move_incompatible' || + dropType === 'combine_incompatible' || + dropType === 'combine_compatible' || + dropType === 'replace_compatible' || + dropType === 'replace_incompatible') + ) { + return activeVisualization.removeDimension({ + columnId: source?.columnId, + layerId: source?.layerId, + prevState: newVisState, + frame, + }); + } + return newVisState; +} diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/empty_dimension_button.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/empty_dimension_button.tsx index 867ce32ea700e..a35366611ae18 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/empty_dimension_button.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/buttons/empty_dimension_button.tsx @@ -12,8 +12,13 @@ import { i18n } from '@kbn/i18n'; import { generateId } from '../../../../id_generator'; import { DragDrop, DragDropIdentifier, DragContext } from '../../../../drag_drop'; -import { Datasource, VisualizationDimensionGroupConfig, DropType } from '../../../../types'; -import { LayerDatasourceDropProps } from '../types'; +import { + Datasource, + VisualizationDimensionGroupConfig, + DropType, + DatasourceLayers, + isOperation, +} from '../../../../types'; import { getCustomDropTarget, getAdditionalClassesOnDroppable, @@ -98,31 +103,31 @@ const SuggestedValueButton = ({ columnId, group, onClick }: EmptyButtonProps) => export function EmptyDimensionButton({ group, - groups, layerDatasource, - layerDatasourceDropProps, + state, layerId, groupIndex, layerIndex, onClick, onDrop, + datasourceLayers, }: { layerId: string; groupIndex: number; layerIndex: number; - onDrop: ( - droppedItem: DragDropIdentifier, - dropTarget: DragDropIdentifier, - dropType?: DropType - ) => void; + onDrop: (source: DragDropIdentifier, dropTarget: DragDropIdentifier, dropType?: DropType) => void; onClick: (id: string) => void; group: VisualizationDimensionGroupConfig; - groups: VisualizationDimensionGroupConfig[]; - layerDatasource: Datasource; - layerDatasourceDropProps: LayerDatasourceDropProps; + datasourceLayers: DatasourceLayers; + state: unknown; }) { const { dragging } = useContext(DragContext); + const sharedDatasource = + !isOperation(dragging) || + datasourceLayers?.[dragging.layerId]?.datasourceId === datasourceLayers?.[layerId]?.datasourceId + ? layerDatasource + : undefined; const itemIndex = group.accessors.length; @@ -132,16 +137,19 @@ export function EmptyDimensionButton({ }, [itemIndex]); const dropProps = getDropProps( - layerDatasource, { - ...(layerDatasourceDropProps || {}), - dragging, - columnId: newColumnId, - filterOperations: group.filterOperations, - groupId: group.groupId, - dimensionGroups: groups, + state, + source: dragging, + target: { + layerId, + columnId: newColumnId, + groupId: group.groupId, + filterOperations: group.filterOperations, + prioritizedOperation: group.prioritizedOperation, + isNewColumn: true, + }, }, - true + sharedDatasource ); const dropTypes = dropProps?.dropTypes; @@ -157,6 +165,7 @@ export function EmptyDimensionButton({ columnId: newColumnId, groupId: group.groupId, layerId, + filterOperations: group.filterOperations, id: newColumnId, humanData: { label, @@ -164,13 +173,24 @@ export function EmptyDimensionButton({ position: itemIndex + 1, nextLabel: nextLabel || '', canDuplicate, + layerNumber: layerIndex + 1, }, }), - [newColumnId, group.groupId, layerId, group.groupLabel, itemIndex, nextLabel, canDuplicate] + [ + newColumnId, + group.groupId, + layerId, + group.groupLabel, + group.filterOperations, + itemIndex, + nextLabel, + canDuplicate, + layerIndex, + ] ); const handleOnDrop = React.useCallback( - (droppedItem, selectedDropType) => onDrop(droppedItem, value, selectedDropType), + (source, selectedDropType) => onDrop(source, value, selectedDropType), [value, onDrop] ); diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx index e5da3b0feef03..02c5f1c23967f 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.test.tsx @@ -631,7 +631,7 @@ describe('LayerPanel', () => { expect(mockDatasource.getDropProps).toHaveBeenCalledWith( expect.objectContaining({ - dragging: draggingField, + source: draggingField, }) ); @@ -644,7 +644,7 @@ describe('LayerPanel', () => { expect(mockDatasource.onDrop).toHaveBeenCalledWith( expect.objectContaining({ - droppedItem: draggingField, + source: draggingField, }) ); }); @@ -663,8 +663,8 @@ describe('LayerPanel', () => { ], }); - mockDatasource.getDropProps.mockImplementation(({ columnId }) => - columnId !== 'a' ? { dropTypes: ['field_replace'], nextLabel: '' } : undefined + mockDatasource.getDropProps.mockImplementation(({ target }) => + target.columnId !== 'a' ? { dropTypes: ['field_replace'], nextLabel: '' } : undefined ); const { instance } = await mountWithProvider( @@ -674,7 +674,9 @@ describe('LayerPanel', () => { ); expect(mockDatasource.getDropProps).toHaveBeenCalledWith( - expect.objectContaining({ columnId: 'a' }) + expect.objectContaining({ + target: expect.objectContaining({ columnId: 'a', groupId: 'a', layerId: 'first' }), + }) ); expect( @@ -741,7 +743,7 @@ describe('LayerPanel', () => { expect(mockDatasource.getDropProps).toHaveBeenCalledWith( expect.objectContaining({ - dragging: draggingOperation, + source: draggingOperation, }) ); @@ -755,8 +757,8 @@ describe('LayerPanel', () => { expect(mockDatasource.onDrop).toHaveBeenCalledWith( expect.objectContaining({ - columnId: 'b', - droppedItem: draggingOperation, + target: expect.objectContaining({ columnId: 'b' }), + source: draggingOperation, }) ); @@ -771,8 +773,8 @@ describe('LayerPanel', () => { expect(mockDatasource.onDrop).toHaveBeenCalledWith( expect.objectContaining({ - columnId: 'newid', - droppedItem: draggingOperation, + target: expect.objectContaining({ columnId: 'newid' }), + source: draggingOperation, }) ); }); @@ -816,7 +818,7 @@ describe('LayerPanel', () => { expect(mockDatasource.onDrop).toHaveBeenCalledWith( expect.objectContaining({ dropType: 'reorder', - droppedItem: draggingOperation, + source: draggingOperation, }) ); const secondButton = instance @@ -865,9 +867,9 @@ describe('LayerPanel', () => { }); expect(mockDatasource.onDrop).toHaveBeenCalledWith( expect.objectContaining({ - columnId: 'newid', + target: expect.objectContaining({ columnId: 'newid' }), dropType: 'duplicate_compatible', - droppedItem: draggingOperation, + source: draggingOperation, }) ); }); @@ -907,7 +909,7 @@ describe('LayerPanel', () => { humanData: { label: 'Label' }, }; - mockDatasource.onDrop.mockReturnValue({ deleted: 'a' }); + mockDatasource.onDrop.mockReturnValue(true); const updateVisualization = jest.fn(); const { instance } = await mountWithProvider( @@ -925,9 +927,10 @@ describe('LayerPanel', () => { expect(mockDatasource.onDrop).toHaveBeenCalledWith( expect.objectContaining({ dropType: 'replace_compatible', - droppedItem: draggingOperation, + source: draggingOperation, }) ); + // testing default onDropForVisualization path expect(mockVis.setDimension).toHaveBeenCalledWith( expect.objectContaining({ columnId: 'c', @@ -945,6 +948,85 @@ describe('LayerPanel', () => { ); expect(updateVisualization).toHaveBeenCalledTimes(1); }); + it('should call onDrop and update visualization when replacing between compatible groups2', async () => { + const mockVis = { + ...mockVisualization, + removeDimension: jest.fn(), + setDimension: jest.fn(() => 'modifiedState'), + onDrop: jest.fn(() => 'modifiedState'), + }; + jest.spyOn(mockVis.onDrop, 'bind').mockImplementation((thisVal, ...args) => mockVis.onDrop); + + mockVis.getConfiguration.mockReturnValue({ + groups: [ + { + groupLabel: 'A', + groupId: 'a', + accessors: [{ columnId: 'a' }, { columnId: 'b' }], + filterOperations: () => true, + supportsMoreColumns: true, + dataTestSubj: 'lnsGroup', + }, + { + groupLabel: 'B', + groupId: 'b', + accessors: [{ columnId: 'c' }], + filterOperations: () => true, + supportsMoreColumns: true, + dataTestSubj: 'lnsGroup2', + }, + ], + }); + + const draggingOperation = { + layerId: 'first', + columnId: 'a', + groupId: 'a', + id: 'a', + humanData: { label: 'Label' }, + }; + + mockDatasource.onDrop.mockReturnValue(true); + const updateVisualization = jest.fn(); + + const { instance } = await mountWithProvider( + + + + ); + act(() => { + instance.find(DragDrop).at(3).prop('onDrop')!(draggingOperation, 'replace_compatible'); + }); + + expect(mockDatasource.onDrop).toHaveBeenCalledWith( + expect.objectContaining({ + dropType: 'replace_compatible', + source: draggingOperation, + }) + ); + + expect(mockVis.onDrop).toHaveBeenCalledWith( + expect.objectContaining({ + dropType: 'replace_compatible', + prevState: 'state', + source: draggingOperation, + target: expect.objectContaining({ + columnId: 'c', + groupId: 'b', + id: 'c', + layerId: 'first', + }), + }), + mockVis + ); + expect(mockVis.setDimension).not.toHaveBeenCalled(); + expect(mockVis.removeDimension).not.toHaveBeenCalled(); + expect(updateVisualization).toHaveBeenCalledTimes(1); + }); }); describe('add a new dimension', () => { diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx index c577bf89d6bd1..0c54ca0df5c71 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_panel.tsx @@ -19,7 +19,13 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { NativeRenderer } from '../../../native_renderer'; -import { StateSetter, Visualization, DraggedOperation, DropType } from '../../../types'; +import { + StateSetter, + Visualization, + DragDropOperation, + DropType, + isOperation, +} from '../../../types'; import { DragDropIdentifier, ReorderProvider } from '../../../drag_drop'; import { LayerSettings } from './layer_settings'; import { trackUiEvent } from '../../../lens_ui_telemetry'; @@ -36,6 +42,7 @@ import { selectResolvedDateRange, selectDatasourceStates, } from '../../../state_management'; +import { onDropForVisualization } from './buttons/drop_targets_utils'; const initialActiveDimensionState = { isNew: false, @@ -109,19 +116,12 @@ export function LayerPanel( const layerDatasourceState = datasourceStates?.[datasourceId]?.state; const layerDatasource = props.datasourceMap[datasourceId]; - const layerDatasourceDropProps = useMemo( - () => ({ - layerId, - state: layerDatasourceState, - setState: (newState: unknown) => { - updateDatasource(datasourceId, newState); - }, - }), - [layerId, layerDatasourceState, datasourceId, updateDatasource] - ); - const layerDatasourceConfigProps = { - ...layerDatasourceDropProps, + state: layerDatasourceState, + setState: (newState: unknown) => { + updateDatasource(datasourceId, newState); + }, + layerId, frame: props.framePublicAPI, dateRange, }; @@ -155,105 +155,70 @@ export function LayerPanel( registerNewRef: registerNewButtonRef, } = useFocusUpdate(allAccessors); - const layerDatasourceOnDrop = layerDatasource?.onDrop; - const onDrop = useMemo(() => { - return ( - droppedItem: DragDropIdentifier, - targetItem: DragDropIdentifier, - dropType?: DropType - ) => { + return (source: DragDropIdentifier, target: DragDropIdentifier, dropType?: DropType) => { if (!dropType) { return; } - const { - columnId, - groupId, - layerId: targetLayerId, - } = targetItem as unknown as DraggedOperation; + if (!isOperation(target)) { + throw new Error('Drop target should be an operation'); + } + if (dropType === 'reorder' || dropType === 'field_replace' || dropType === 'field_add') { - setNextFocusedButtonId(droppedItem.id); + setNextFocusedButtonId(source.id); } else { - setNextFocusedButtonId(columnId); + setNextFocusedButtonId(target.columnId); } + let hasDropSucceeded = true; if (layerDatasource) { - const group = groups.find(({ groupId: gId }) => gId === groupId); - const filterOperations = group?.filterOperations || (() => false); - const dropResult = layerDatasourceOnDrop({ - ...layerDatasourceDropProps, - droppedItem, - columnId, - layerId: targetLayerId, - filterOperations, - dimensionGroups: groups, - groupId, - dropType, - }); - if (dropResult) { - let previousColumn = - typeof droppedItem.column === 'string' ? droppedItem.column : undefined; - - // make it inherit only for moving and duplicate - if (!previousColumn) { - // when duplicating check if the previous column is required - if ( - dropType === 'duplicate_compatible' && - typeof droppedItem.columnId === 'string' && - group?.requiresPreviousColumnOnDuplicate - ) { - previousColumn = droppedItem.columnId; - } else { - previousColumn = typeof dropResult === 'object' ? dropResult.deleted : undefined; - } - } - const newVisState = activeVisualization.setDimension({ - columnId, - groupId, - layerId: targetLayerId, - prevState: props.visualizationState, - previousColumn, - frame: framePublicAPI, - }); + hasDropSucceeded = Boolean( + layerDatasource?.onDrop({ + state: layerDatasourceState, + setState: (newState: unknown) => { + updateDatasource(datasourceId, newState); + }, + source, + target: { + ...(target as unknown as DragDropOperation), + filterOperations: + groups.find(({ groupId: gId }) => gId === target.groupId)?.filterOperations || + Boolean, + }, + dimensionGroups: groups, + dropType, + }) + ); + } + if (hasDropSucceeded) { + activeVisualization.onDrop = activeVisualization.onDrop?.bind(activeVisualization); - if (typeof dropResult === 'object') { - // When a column is moved, we delete the reference to the old - updateVisualization( - activeVisualization.removeDimension({ - columnId: dropResult.deleted, - layerId: targetLayerId, - prevState: newVisState, - frame: framePublicAPI, - }) - ); - } else { - updateVisualization(newVisState); - } - } - } else { - if (dropType === 'duplicate_compatible' || dropType === 'reorder') { - const newVisState = activeVisualization.setDimension({ - columnId, - groupId, - layerId: targetLayerId, - prevState: props.visualizationState, - previousColumn: droppedItem.id, - frame: framePublicAPI, - }); - updateVisualization(newVisState); - } + updateVisualization( + (activeVisualization.onDrop || onDropForVisualization)?.( + { + prevState: props.visualizationState, + frame: framePublicAPI, + target, + source, + dropType, + group: groups.find(({ groupId: gId }) => gId === target.groupId), + }, + activeVisualization + ) + ); } }; }, [ layerDatasource, + layerDatasourceState, setNextFocusedButtonId, groups, - layerDatasourceOnDrop, - layerDatasourceDropProps, activeVisualization, props.visualizationState, framePublicAPI, updateVisualization, + datasourceId, + updateDatasource, ]); const isDimensionPanelOpen = Boolean(activeId); @@ -462,15 +427,15 @@ export function LayerPanel( return ( setHideTooltip(true)} @@ -562,12 +527,12 @@ export function LayerPanel( {group.supportsMoreColumns ? ( { props.onEmptyDimensionAdd(id, group); setActiveDimension({ diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/types.ts b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/types.ts index 66a30b0a405e8..172e0702f56e8 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/types.ts +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/types.ts @@ -29,7 +29,6 @@ export interface LayerPanelProps { } export interface LayerDatasourceDropProps { - layerId: string; state: unknown; setState: (newState: unknown) => void; } diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts deleted file mode 100644 index 66714f494bf53..0000000000000 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/droppable.test.ts +++ /dev/null @@ -1,2332 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; -import { DataPublicPluginStart } from '@kbn/data-plugin/public'; -import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; -import { IndexPatternDimensionEditorProps } from '../dimension_panel'; -import { onDrop } from './on_drop_handler'; -import { getDropProps } from './get_drop_props'; -import { - IUiSettingsClient, - SavedObjectsClientContract, - HttpSetup, - CoreSetup, -} from '@kbn/core/public'; -import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; -import { IndexPatternLayer, IndexPatternPrivateState } from '../../types'; -import { documentField } from '../../document_field'; -import { OperationMetadata, DropType } from '../../../types'; -import { - DateHistogramIndexPatternColumn, - GenericIndexPatternColumn, - MedianIndexPatternColumn, - TermsIndexPatternColumn, -} from '../../operations'; -import { getFieldByNameFactory } from '../../pure_helpers'; -import { generateId } from '../../../id_generator'; -import { layerTypes } from '../../../../common'; - -jest.mock('../../../id_generator'); - -const fields = [ - { - name: 'timestamp', - displayName: 'timestampLabel', - type: 'date', - aggregatable: true, - searchable: true, - exists: true, - }, - { - name: 'bytes', - displayName: 'bytes', - type: 'number', - aggregatable: true, - searchable: true, - exists: true, - }, - { - name: 'memory', - displayName: 'memory', - type: 'number', - aggregatable: true, - searchable: true, - exists: true, - }, - { - name: 'source', - displayName: 'source', - type: 'string', - aggregatable: true, - searchable: true, - exists: true, - }, - { - name: 'src', - displayName: 'src', - type: 'string', - aggregatable: true, - searchable: true, - exists: true, - }, - { - name: 'dest', - displayName: 'dest', - type: 'string', - aggregatable: true, - searchable: true, - exists: true, - }, - documentField, -]; - -const expectedIndexPatterns = { - foo: { - id: 'foo', - title: 'my-fake-index-pattern', - timeFieldName: 'timestamp', - hasExistence: true, - hasRestrictions: false, - fields, - getFieldByName: getFieldByNameFactory(fields), - }, -}; - -const dimensionGroups = [ - { - accessors: [], - groupId: 'a', - supportsMoreColumns: true, - hideGrouping: true, - groupLabel: '', - filterOperations: (op: OperationMetadata) => op.isBucketed, - }, - { - accessors: [{ columnId: 'col1' }, { columnId: 'col2' }, { columnId: 'col3' }], - groupId: 'b', - supportsMoreColumns: true, - hideGrouping: true, - groupLabel: '', - filterOperations: (op: OperationMetadata) => op.isBucketed, - }, - { - accessors: [{ columnId: 'col4' }], - groupId: 'c', - supportsMoreColumns: true, - hideGrouping: true, - groupLabel: '', - filterOperations: (op: OperationMetadata) => op.isBucketed === false, - }, -]; - -const oneColumnLayer: IndexPatternLayer = { - indexPatternId: 'foo', - columnOrder: ['col1'], - columns: { - col1: { - label: 'Date histogram of timestamp', - customLabel: true, - dataType: 'date', - isBucketed: true, - - // Private - operationType: 'date_histogram', - params: { - interval: '1d', - }, - sourceField: 'timestamp', - } as DateHistogramIndexPatternColumn, - }, - incompleteColumns: {}, -}; - -const multipleColumnsLayer: IndexPatternLayer = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2', 'col3', 'col4'], - columns: { - col1: oneColumnLayer.columns.col1, - col2: { - label: 'Top 10 values of src', - dataType: 'string', - isBucketed: true, - // Private - operationType: 'terms', - params: { - orderBy: { type: 'alphabetical' }, - orderDirection: 'desc', - size: 10, - }, - sourceField: 'src', - } as TermsIndexPatternColumn, - col3: { - label: 'Top 10 values of dest', - dataType: 'string', - isBucketed: true, - - // Private - operationType: 'terms', - params: { - orderBy: { type: 'alphabetical' }, - orderDirection: 'desc', - size: 10, - }, - sourceField: 'dest', - } as TermsIndexPatternColumn, - col4: { - label: 'Median of bytes', - dataType: 'number', - isBucketed: false, - - // Private - operationType: 'median', - sourceField: 'bytes', - }, - }, -}; - -const draggingField = { - field: { type: 'number', name: 'bytes', aggregatable: true }, - indexPatternId: 'foo', - id: 'bar', - humanData: { label: 'Label' }, -}; - -const draggingCol1 = { - columnId: 'col1', - groupId: 'a', - layerId: 'first', - id: 'col1', - humanData: { label: 'Column 1' }, -}; - -const draggingCol2 = { - columnId: 'col2', - groupId: 'b', - layerId: 'first', - id: 'col2', - humanData: { label: 'Column 2' }, - filterOperations: (op: OperationMetadata) => op.isBucketed, -}; - -const draggingCol3 = { - columnId: 'col3', - groupId: 'b', - layerId: 'first', - id: 'col3', - humanData: { - label: '', - }, -}; - -const draggingCol4 = { - columnId: 'col4', - groupId: 'c', - layerId: 'first', - id: 'col4', - humanData: { - label: '', - }, - filterOperations: (op: OperationMetadata) => op.isBucketed === false, -}; - -/** - * The datasource exposes four main pieces of code which are tested at - * an integration test level. The main reason for this fairly high level - * of testing is that there is a lot of UI logic that isn't easily - * unit tested, such as the transient invalid state. - * - * - Dimension trigger: Not tested here - * - Dimension editor component: First half of the tests - * - * - getDropProps: Returns drop types that are possible for the current dragging field or other dimension - * - onDrop: Correct application of drop logic - */ -describe('IndexPatternDimensionEditorPanel', () => { - let state: IndexPatternPrivateState; - let setState: jest.Mock; - let defaultProps: IndexPatternDimensionEditorProps; - - function getStateWithMultiFieldColumn() { - return { - ...state, - layers: { - ...state.layers, - first: { - ...state.layers.first, - columns: { - ...state.layers.first.columns, - col1: { - label: 'Top values of dest', - dataType: 'string', - isBucketed: true, - - // Private - operationType: 'terms', - params: { - orderBy: { type: 'alphabetical' }, - orderDirection: 'desc', - size: 10, - }, - sourceField: 'dest', - } as TermsIndexPatternColumn, - }, - }, - }, - }; - } - - beforeEach(() => { - state = { - indexPatternRefs: [], - indexPatterns: expectedIndexPatterns, - currentIndexPatternId: 'foo', - isFirstExistenceFetch: false, - existingFields: { - 'my-fake-index-pattern': { - timestamp: true, - bytes: true, - memory: true, - source: true, - }, - }, - layers: { first: { ...oneColumnLayer } }, - }; - - setState = jest.fn(); - - defaultProps = { - state, - setState, - dateRange: { fromDate: 'now-1d', toDate: 'now' }, - columnId: 'col1', - layerId: 'first', - uniqueLabel: 'stuff', - groupId: 'group1', - filterOperations: () => true, - storage: {} as IStorageWrapper, - uiSettings: {} as IUiSettingsClient, - savedObjectsClient: {} as SavedObjectsClientContract, - http: {} as HttpSetup, - data: { - fieldFormats: { - getType: jest.fn().mockReturnValue({ - id: 'number', - title: 'Number', - }), - getDefaultType: jest.fn().mockReturnValue({ - id: 'bytes', - title: 'Bytes', - }), - } as unknown as DataPublicPluginStart['fieldFormats'], - } as unknown as DataPublicPluginStart, - unifiedSearch: {} as UnifiedSearchPublicPluginStart, - dataViews: {} as DataViewsPublicPluginStart, - core: {} as CoreSetup, - dimensionGroups: [], - isFullscreen: false, - toggleFullscreen: () => {}, - supportStaticValue: false, - layerType: layerTypes.DATA, - }; - - jest.clearAllMocks(); - }); - - const groupId = 'a'; - - describe('getDropProps', () => { - it('returns undefined if no drag is happening', () => { - expect( - getDropProps({ - ...defaultProps, - groupId, - dragging: { name: 'bar', id: 'bar', humanData: { label: 'Label' } }, - }) - ).toBe(undefined); - }); - - it('returns undefined if the dragged item has no field', () => { - expect( - getDropProps({ - ...defaultProps, - groupId, - dragging: { - name: 'bar', - id: 'bar', - humanData: { label: 'Label' }, - }, - }) - ).toBe(undefined); - }); - - describe('dragging a field', () => { - it('returns undefined if field is not supported by filterOperations', () => { - expect( - getDropProps({ - ...defaultProps, - groupId, - dragging: draggingField, - filterOperations: () => false, - }) - ).toBe(undefined); - }); - - it('returns field_replace if the field is supported by filterOperations and the dropTarget is an existing column', () => { - expect( - getDropProps({ - ...defaultProps, - groupId, - dragging: draggingField, - filterOperations: (op: OperationMetadata) => op.dataType === 'number', - }) - ).toEqual({ dropTypes: ['field_replace'], nextLabel: 'Intervals' }); - }); - - it('returns field_add if the field is supported by filterOperations and the dropTarget is an empty column', () => { - expect( - getDropProps({ - ...defaultProps, - columnId: 'newId', - groupId, - dragging: draggingField, - filterOperations: (op: OperationMetadata) => op.dataType === 'number', - }) - ).toEqual({ dropTypes: ['field_add'], nextLabel: 'Intervals' }); - }); - - it('returns undefined if the field belongs to another index pattern', () => { - expect( - getDropProps({ - ...defaultProps, - groupId, - dragging: { - field: { type: 'number', name: 'bar', aggregatable: true }, - indexPatternId: 'foo2', - id: 'bar', - humanData: { label: 'Label' }, - }, - filterOperations: (op: OperationMetadata) => op.dataType === 'number', - }) - ).toBe(undefined); - }); - - it('returns undefined if the dragged field is already in use by this operation', () => { - expect( - getDropProps({ - ...defaultProps, - groupId, - dragging: { - field: { - name: 'timestamp', - displayName: 'timestampLabel', - type: 'date', - aggregatable: true, - searchable: true, - exists: true, - }, - indexPatternId: 'foo', - id: 'bar', - humanData: { label: 'Label' }, - }, - }) - ).toBe(undefined); - }); - - it('returns also field_combine if the field is supported by filterOperations and the dropTarget is an existing column that supports multiple fields', () => { - // replace the state with a top values column to enable the multi fields behaviour - state = getStateWithMultiFieldColumn(); - expect( - getDropProps({ - ...defaultProps, - state, - groupId, - dragging: draggingField, - filterOperations: (op: OperationMetadata) => op.dataType !== 'date', - }) - ).toEqual({ dropTypes: ['field_replace', 'field_combine'] }); - }); - }); - - describe('dragging a column', () => { - it('returns undefined if the dragged column from different group uses the same field as the dropTarget', () => { - state.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2', 'col3'], - columns: { - col1: state.layers.first.columns.col1, - - col2: { - label: 'Date histogram of timestamp (1)', - customLabel: true, - dataType: 'date', - isBucketed: true, - - // Private - operationType: 'date_histogram', - params: { - interval: '1d', - }, - sourceField: 'timestamp', - } as DateHistogramIndexPatternColumn, - }, - }; - - expect( - getDropProps({ - ...defaultProps, - groupId, - dragging: { - ...draggingCol1, - groupId: 'c', - }, - columnId: 'col2', - }) - ).toEqual(undefined); - }); - - it('returns undefined if the dragged column from different group uses the same fields as the dropTarget', () => { - state = getStateWithMultiFieldColumn(); - const sourceMultiFieldColumn = { - ...state.layers.first.columns.col1, - sourceField: 'bytes', - params: { - ...(state.layers.first.columns.col1 as TermsIndexPatternColumn).params, - secondaryFields: ['dest'], - }, - } as TermsIndexPatternColumn; - // invert the fields - const targetMultiFieldColumn = { - ...state.layers.first.columns.col1, - sourceField: 'dest', - params: { - ...(state.layers.first.columns.col1 as TermsIndexPatternColumn).params, - secondaryFields: ['bytes'], - }, - } as TermsIndexPatternColumn; - state.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2'], - columns: { - col1: sourceMultiFieldColumn, - col2: targetMultiFieldColumn, - }, - }; - - expect( - getDropProps({ - ...defaultProps, - state, - groupId, - dragging: { - ...draggingCol1, - groupId: 'c', - }, - columnId: 'col2', - }) - ).toEqual(undefined); - }); - - it('returns duplicate and replace if the dragged column from different group uses the same field as the dropTarget, but this last one is multifield, and can be swappable', () => { - state = getStateWithMultiFieldColumn(); - state.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2'], - columns: { - col1: state.layers.first.columns.col1, - - col2: { - ...state.layers.first.columns.col1, - sourceField: 'bytes', - params: { - ...(state.layers.first.columns.col1 as TermsIndexPatternColumn).params, - secondaryFields: ['dest'], - }, - } as TermsIndexPatternColumn, - }, - }; - - expect( - getDropProps({ - ...defaultProps, - state, - groupId, - dragging: { - ...draggingCol1, - groupId: 'c', - }, - columnId: 'col2', - }) - ).toEqual({ - dropTypes: ['replace_compatible', 'replace_duplicate_compatible'], - }); - }); - - it('returns swap, duplicate and replace if the dragged column from different group uses the same field as the dropTarget, but this last one is multifield', () => { - state = getStateWithMultiFieldColumn(); - state.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2'], - columns: { - col1: state.layers.first.columns.col1, - - col2: { - ...state.layers.first.columns.col1, - sourceField: 'bytes', - params: { - ...(state.layers.first.columns.col1 as TermsIndexPatternColumn).params, - secondaryFields: ['dest'], - }, - } as TermsIndexPatternColumn, - }, - }; - - expect( - getDropProps({ - ...defaultProps, - state, - // make it swappable - dimensionGroups: [ - { - accessors: [{ columnId: 'col1' }], - filterOperations: jest.fn(() => true), - groupId, - groupLabel: '', - supportsMoreColumns: false, - }, - ], - groupId, - dragging: { - ...draggingCol1, - groupId: 'c', - }, - columnId: 'col2', - }) - ).toEqual({ - dropTypes: ['replace_compatible', 'replace_duplicate_compatible', 'swap_compatible'], - }); - }); - - it('returns reorder if drop target and droppedItem columns are from the same group and both are existing', () => { - state.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2', 'col3'], - columns: { - col1: state.layers.first.columns.col1, - - col2: { - label: 'Sum of bytes', - dataType: 'number', - isBucketed: false, - - // Private - operationType: 'sum', - sourceField: 'bytes', - }, - }, - }; - - expect( - getDropProps({ - ...defaultProps, - groupId, - dragging: { ...draggingCol1, groupId }, - columnId: 'col2', - filterOperations: (op: OperationMetadata) => op.isBucketed === false, - }) - ).toEqual({ - dropTypes: ['reorder'], - }); - }); - - it('returns duplicate_compatible if drop target and droppedItem columns are from the same group and drop target id is a new column', () => { - expect( - getDropProps({ - ...defaultProps, - columnId: 'newId', - groupId, - dragging: { - ...draggingCol1, - groupId, - }, - }) - ).toEqual({ dropTypes: ['duplicate_compatible'] }); - }); - - it('returns compatible drop types if the dragged column is compatible', () => { - expect( - getDropProps({ - ...defaultProps, - groupId, - dragging: { - ...draggingCol1, - groupId: 'c', - }, - columnId: 'col2', - }) - ).toEqual({ dropTypes: ['move_compatible', 'duplicate_compatible'] }); - }); - - it('returns incompatible drop target types if dropping column to existing incompatible column', () => { - state.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2', 'col3'], - columns: { - col1: state.layers.first.columns.col1, - - col2: { - label: 'Sum of bytes', - dataType: 'number', - isBucketed: false, - - // Private - operationType: 'sum', - sourceField: 'bytes', - }, - }, - }; - - expect( - getDropProps({ - ...defaultProps, - groupId, - dragging: { - ...draggingCol1, - groupId: 'c', - }, - columnId: 'col2', - filterOperations: (op: OperationMetadata) => op.isBucketed === false, - }) - ).toEqual({ - dropTypes: [ - 'replace_incompatible', - 'replace_duplicate_incompatible', - 'swap_incompatible', - ], - nextLabel: 'Minimum', - }); - }); - - it('does not return swap_incompatible if current dropTarget column cannot be swapped to the group of dragging column', () => { - state.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2', 'col3'], - columns: { - col1: state.layers.first.columns.col1, - - col2: { - label: 'Count of records', - dataType: 'number', - isBucketed: false, - sourceField: '___records___', - operationType: 'count', - }, - }, - }; - - expect( - getDropProps({ - ...defaultProps, - groupId, - dragging: { - columnId: 'col1', - groupId: 'b', - layerId: 'first', - id: 'col1', - humanData: { label: 'Label' }, - filterOperations: (op: OperationMetadata) => op.isBucketed === true, - }, - columnId: 'col2', - filterOperations: (op: OperationMetadata) => op.isBucketed === false, - }) - ).toEqual({ - dropTypes: ['replace_incompatible', 'replace_duplicate_incompatible'], - nextLabel: 'Minimum', - }); - }); - - it('returns combine_compatible drop type if the dragged column is compatible and the target one support multiple fields', () => { - state = getStateWithMultiFieldColumn(); - state.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2'], - columns: { - col1: state.layers.first.columns.col1, - - col2: { - ...state.layers.first.columns.col1, - sourceField: 'bytes', - }, - }, - }; - - expect( - getDropProps({ - ...defaultProps, - state, - groupId, - dragging: { - ...draggingCol1, - groupId: 'c', - }, - columnId: 'col2', - }) - ).toEqual({ - dropTypes: ['replace_compatible', 'replace_duplicate_compatible', 'combine_compatible'], - }); - }); - - it('returns no combine_compatible drop type if the target column uses rarity ordering', () => { - state = getStateWithMultiFieldColumn(); - state.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2'], - columns: { - col1: state.layers.first.columns.col1, - - col2: { - ...state.layers.first.columns.col1, - sourceField: 'bytes', - params: { - ...(state.layers.first.columns.col1 as TermsIndexPatternColumn).params, - orderBy: { type: 'rare' }, - }, - } as TermsIndexPatternColumn, - }, - }; - - expect( - getDropProps({ - ...defaultProps, - state, - groupId, - dragging: { - ...draggingCol1, - groupId: 'c', - }, - columnId: 'col2', - }) - ).toEqual({ - dropTypes: ['replace_compatible', 'replace_duplicate_compatible'], - }); - }); - - it('returns no combine drop type if the dragged column is compatible, the target one supports multiple fields but there are too many fields', () => { - state = getStateWithMultiFieldColumn(); - state.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2'], - columns: { - col1: state.layers.first.columns.col1, - - col2: { - ...state.layers.first.columns.col1, - sourceField: 'source', - params: { - ...(state.layers.first.columns.col1 as TermsIndexPatternColumn).params, - secondaryFields: ['memory', 'bytes', 'geo.src'], // too many fields here - }, - } as TermsIndexPatternColumn, - }, - }; - - expect( - getDropProps({ - ...defaultProps, - state, - groupId, - dragging: { - ...draggingCol1, - groupId: 'c', - }, - columnId: 'col2', - }) - ).toEqual({ - dropTypes: ['replace_compatible', 'replace_duplicate_compatible'], - }); - }); - - it('returns combine_incompatible drop target types if dropping column to existing incompatible column which supports multiple fields', () => { - state = getStateWithMultiFieldColumn(); - state.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2', 'col3'], - columns: { - col1: state.layers.first.columns.col1, - - col2: { - label: 'Sum of bytes', - dataType: 'number', - isBucketed: false, - - // Private - operationType: 'sum', - sourceField: 'bytes', - }, - }, - }; - - expect( - getDropProps({ - ...defaultProps, - state, - groupId, - // drag the sum over the top values - dragging: { - ...draggingCol2, - groupId: 'c', - filterOperation: undefined, - }, - columnId: 'col1', - filterOperations: (op: OperationMetadata) => op.isBucketed, - }) - ).toEqual({ - dropTypes: [ - 'replace_incompatible', - 'replace_duplicate_incompatible', - 'swap_incompatible', - 'combine_incompatible', - ], - nextLabel: 'Top values', - }); - }); - }); - }); - - describe('onDrop', () => { - describe('dropping a field', () => { - it('updates a column when a field is dropped', () => { - onDrop({ - ...defaultProps, - droppedItem: draggingField, - filterOperations: (op: OperationMetadata) => op.dataType === 'number', - dropType: 'field_replace', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: expect.objectContaining({ - columns: expect.objectContaining({ - col1: expect.objectContaining({ - dataType: 'number', - sourceField: 'bytes', - }), - }), - }), - }, - }); - }); - it('selects the specific operation that was valid on drop', () => { - onDrop({ - ...defaultProps, - droppedItem: draggingField, - columnId: 'col2', - filterOperations: (op: OperationMetadata) => op.isBucketed, - dropType: 'field_replace', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columnOrder: ['col1', 'col2'], - columns: { - ...state.layers.first.columns, - col2: expect.objectContaining({ - dataType: 'number', - sourceField: 'bytes', - }), - }, - }, - }, - }); - }); - it('keeps the operation when dropping a different compatible field', () => { - onDrop({ - ...defaultProps, - droppedItem: { - field: { name: 'memory', type: 'number', aggregatable: true }, - indexPatternId: 'foo', - id: '1', - }, - state: { - ...state, - layers: { - first: { - indexPatternId: 'foo', - columnOrder: ['col1'], - columns: { - col1: { - label: 'Sum of bytes', - dataType: 'number', - isBucketed: false, - - // Private - operationType: 'sum', - sourceField: 'bytes', - }, - }, - }, - }, - }, - dropType: 'field_replace', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: expect.objectContaining({ - columns: expect.objectContaining({ - col1: expect.objectContaining({ - operationType: 'sum', - dataType: 'number', - sourceField: 'memory', - }), - }), - }), - }, - }); - }); - it('appends the dropped column when a field is dropped', () => { - onDrop({ - ...defaultProps, - droppedItem: draggingField, - dropType: 'field_replace', - columnId: 'col2', - filterOperations: (op: OperationMetadata) => op.dataType === 'number', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columnOrder: ['col1', 'col2'], - columns: { - ...state.layers.first.columns, - col2: expect.objectContaining({ - dataType: 'number', - sourceField: 'bytes', - }), - }, - }, - }, - }); - }); - it('dimensionGroups are defined - appends the dropped column in the right place when a field is dropped', () => { - const testState = { ...state }; - testState.layers.first = { ...multipleColumnsLayer }; - // config: - // a: - // b: col1, col2, col3 - // c: col4 - // dragging field into newCol in group a - - onDrop({ - ...defaultProps, - droppedItem: draggingField, - columnId: 'newCol', - filterOperations: (op: OperationMetadata) => op.dataType === 'number', - groupId: 'a', - dimensionGroups, - dropType: 'field_add', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['newCol', 'col1', 'col2', 'col3', 'col4'], - columns: { - newCol: expect.objectContaining({ - dataType: 'number', - sourceField: 'bytes', - }), - col1: testState.layers.first.columns.col1, - col2: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - col4: testState.layers.first.columns.col4, - }, - incompleteColumns: {}, - }, - }, - }); - }); - - it('appends the new field to the column that supports multiple fields when a field is dropped', () => { - state = getStateWithMultiFieldColumn(); - onDrop({ - ...defaultProps, - state, - droppedItem: draggingField, - filterOperations: (op: OperationMetadata) => op.dataType === 'number', - dropType: 'field_combine', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: expect.objectContaining({ - columns: expect.objectContaining({ - col1: expect.objectContaining({ - dataType: 'string', - sourceField: 'dest', - params: expect.objectContaining({ secondaryFields: ['bytes'] }), - }), - }), - }), - }, - }); - }); - }); - - describe('dropping a dimension', () => { - const dragging = { - columnId: 'col1', - groupId: 'a', - layerId: 'first', - id: 'col1', - humanData: { label: 'Label' }, - }; - - it('sets correct order in group for metric and bucket columns when duplicating a column in group', () => { - const testState: IndexPatternPrivateState = { - ...state, - layers: { - first: { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2', 'col3'], - columns: { - col1: { - label: 'Date histogram of timestamp', - dataType: 'date', - isBucketed: true, - operationType: 'date_histogram', - params: { - interval: '1d', - }, - sourceField: 'timestamp', - } as DateHistogramIndexPatternColumn, - col2: { - label: 'Top values of bar', - dataType: 'number', - isBucketed: true, - operationType: 'terms', - sourceField: 'bar', - params: { - orderBy: { type: 'alphabetical' }, - orderDirection: 'asc', - size: 5, - }, - } as TermsIndexPatternColumn, - col3: { - operationType: 'average', - sourceField: 'memory', - label: 'average of memory', - dataType: 'number', - isBucketed: false, - }, - }, - }, - }, - }; - - const referenceDragging = { - columnId: 'col3', - groupId: 'a', - layerId: 'first', - id: 'col3', - humanData: { label: 'Label' }, - }; - - onDrop({ - ...defaultProps, - droppedItem: referenceDragging, - state: testState, - dropType: 'duplicate_compatible', - columnId: 'newCol', - }); - // metric is appended - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'col2', 'col3', 'newCol'], - columns: { - col1: testState.layers.first.columns.col1, - col2: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - newCol: testState.layers.first.columns.col3, - }, - }, - }, - }); - - const bucketDragging = { - columnId: 'col2', - groupId: 'a', - layerId: 'first', - id: 'col2', - humanData: { label: 'Label' }, - }; - - onDrop({ - ...defaultProps, - droppedItem: bucketDragging, - state: testState, - dropType: 'duplicate_compatible', - columnId: 'newCol', - }); - - // bucket is placed after the last existing bucket - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'col2', 'newCol', 'col3'], - columns: { - col1: testState.layers.first.columns.col1, - col2: testState.layers.first.columns.col2, - newCol: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - }, - }, - }, - }); - }); - - it('when duplicating fullReference column, the referenced columns get duplicated too', () => { - (generateId as jest.Mock).mockReturnValue(`ref1Copy`); - const testState: IndexPatternPrivateState = { - ...state, - layers: { - first: { - indexPatternId: '1', - columnOrder: ['col1', 'ref1'], - columns: { - col1: { - label: 'Test reference', - dataType: 'number', - isBucketed: false, - operationType: 'cumulative_sum', - references: ['ref1'], - }, - ref1: { - label: 'Count of records', - dataType: 'number', - isBucketed: false, - sourceField: '___records___', - operationType: 'count', - }, - }, - }, - }, - }; - const referenceDragging = { - columnId: 'col1', - groupId: 'a', - layerId: 'first', - id: 'col1', - humanData: { label: 'Label' }, - }; - onDrop({ - ...defaultProps, - droppedItem: referenceDragging, - state: testState, - dropType: 'duplicate_compatible', - columnId: 'col1Copy', - }); - - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'ref1', 'ref1Copy', 'col1Copy'], - columns: { - ref1: testState.layers.first.columns.ref1, - col1: testState.layers.first.columns.col1, - ref1Copy: { ...testState.layers.first.columns.ref1 }, - col1Copy: { - ...testState.layers.first.columns.col1, - references: ['ref1Copy'], - }, - }, - }, - }, - }); - }); - - it('when duplicating fullReference column, the multiple referenced columns get duplicated too', () => { - (generateId as jest.Mock).mockReturnValueOnce(`ref1Copy`); - (generateId as jest.Mock).mockReturnValueOnce(`ref2Copy`); - const testState: IndexPatternPrivateState = { - ...state, - layers: { - first: { - indexPatternId: '1', - columnOrder: ['col1', 'ref1'], - columns: { - col1: { - label: 'Test reference', - dataType: 'number', - isBucketed: false, - operationType: 'cumulative_sum', - references: ['ref1', 'ref2'], - }, - ref1: { - label: 'Count of records', - dataType: 'number', - isBucketed: false, - sourceField: '___records___', - operationType: 'count', - }, - ref2: { - label: 'Unique count of bytes', - dataType: 'number', - isBucketed: false, - sourceField: 'bytes', - operationType: 'unique_count', - }, - }, - }, - }, - }; - const metricDragging = { - columnId: 'col1', - groupId: 'a', - layerId: 'first', - id: 'col1', - humanData: { label: 'Label' }, - }; - onDrop({ - ...defaultProps, - droppedItem: metricDragging, - state: testState, - dropType: 'duplicate_compatible', - columnId: 'col1Copy', - }); - - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'ref1', 'ref2', 'ref1Copy', 'col1Copy', 'ref2Copy'], - columns: { - ref1: testState.layers.first.columns.ref1, - ref2: testState.layers.first.columns.ref2, - col1: testState.layers.first.columns.col1, - ref2Copy: { ...testState.layers.first.columns.ref2 }, - ref1Copy: { ...testState.layers.first.columns.ref1 }, - col1Copy: { - ...testState.layers.first.columns.col1, - references: ['ref1Copy', 'ref2Copy'], - }, - }, - }, - }, - }); - }); - - it('when duplicating fullReference column, the referenced columns get duplicated recursively', () => { - (generateId as jest.Mock).mockReturnValueOnce(`ref1Copy`); - (generateId as jest.Mock).mockReturnValueOnce(`innerRef1Copy`); - (generateId as jest.Mock).mockReturnValueOnce(`ref2Copy`); - const testState: IndexPatternPrivateState = { - ...state, - layers: { - first: { - indexPatternId: '1', - columnOrder: ['innerRef1', 'ref2', 'ref1', 'col1'], - columns: { - col1: { - label: 'Test reference', - dataType: 'number', - isBucketed: false, - operationType: 'cumulative_sum', - references: ['ref1', 'ref2'], - }, - ref1: { - label: 'Reference that has a reference', - dataType: 'number', - isBucketed: false, - operationType: 'cumulative_sum', - references: ['innerRef1'], - }, - innerRef1: { - label: 'Count of records', - dataType: 'number', - isBucketed: false, - sourceField: '___records___', - operationType: 'count', - }, - ref2: { - label: 'Unique count of bytes', - dataType: 'number', - isBucketed: false, - sourceField: 'bytes', - operationType: 'unique_count', - }, - }, - }, - }, - }; - const refDragging = { - columnId: 'col1', - groupId: 'a', - layerId: 'first', - id: 'col1', - humanData: { label: 'Label' }, - }; - onDrop({ - ...defaultProps, - droppedItem: refDragging, - state: testState, - dropType: 'duplicate_compatible', - columnId: 'col1Copy', - }); - - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: [ - 'innerRef1', - 'ref2', - 'ref1', - 'col1', - 'innerRef1Copy', - 'ref1Copy', - 'col1Copy', - 'ref2Copy', - ], - columns: { - innerRef1: testState.layers.first.columns.innerRef1, - ref1: testState.layers.first.columns.ref1, - ref2: testState.layers.first.columns.ref2, - col1: testState.layers.first.columns.col1, - - innerRef1Copy: { ...testState.layers.first.columns.innerRef1 }, - ref2Copy: { ...testState.layers.first.columns.ref2 }, - ref1Copy: { - ...testState.layers.first.columns.ref1, - references: ['innerRef1Copy'], - }, - col1Copy: { - ...testState.layers.first.columns.col1, - references: ['ref1Copy', 'ref2Copy'], - }, - }, - }, - }, - }); - }); - - it('when duplicating fullReference column onto exisitng column, the state will not get modified', () => { - (generateId as jest.Mock).mockReturnValue(`ref1Copy`); - const testState: IndexPatternPrivateState = { - ...state, - layers: { - first: { - indexPatternId: '1', - columnOrder: ['col2', 'ref1', 'col1'], - columns: { - col1: { - label: 'Test reference', - dataType: 'number', - isBucketed: false, - operationType: 'cumulative_sum', - references: ['ref1'], - }, - ref1: { - label: 'Count of records', - dataType: 'number', - isBucketed: false, - sourceField: '___records___', - operationType: 'count', - }, - col2: { - label: 'Minimum', - dataType: 'number', - isBucketed: false, - - // Private - operationType: 'min', - sourceField: 'bytes', - customLabel: true, - }, - }, - }, - }, - }; - const referenceDragging = { - columnId: 'col1', - groupId: 'a', - layerId: 'first', - id: 'col1', - humanData: { label: 'Label' }, - }; - onDrop({ - ...defaultProps, - droppedItem: referenceDragging, - state: testState, - dropType: 'duplicate_compatible', - columnId: 'col2', - }); - - expect(setState).toHaveBeenCalledWith(testState); - }); - - it('sets correct order in group when reordering a column in group', () => { - const testState = { - ...state, - layers: { - first: { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2', 'col3'], - columns: { - col1: { - label: 'Date histogram of timestamp', - dataType: 'date', - isBucketed: true, - } as GenericIndexPatternColumn, - col2: { - label: 'Top values of bar', - dataType: 'number', - isBucketed: true, - } as GenericIndexPatternColumn, - col3: { - label: 'Top values of memory', - dataType: 'number', - isBucketed: true, - } as GenericIndexPatternColumn, - }, - }, - }, - }; - - const defaultReorderDropParams = { - ...defaultProps, - dragging, - droppedItem: draggingCol1, - state: testState, - filterOperations: (op: OperationMetadata) => op.dataType === 'number', - dropType: 'reorder' as DropType, - }; - - const stateWithColumnOrder = (columnOrder: string[]) => { - return { - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder, - columns: { - ...testState.layers.first.columns, - }, - }, - }, - }; - }; - - // first element to last - onDrop({ - ...defaultReorderDropParams, - columnId: 'col3', - }); - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith(stateWithColumnOrder(['col2', 'col3', 'col1'])); - - // last element to first - onDrop({ - ...defaultReorderDropParams, - columnId: 'col1', - droppedItem: { - columnId: 'col3', - groupId: 'a', - layerId: 'first', - id: 'col3', - }, - }); - expect(setState).toBeCalledTimes(2); - expect(setState).toHaveBeenCalledWith(stateWithColumnOrder(['col3', 'col1', 'col2'])); - - // middle column to first - onDrop({ - ...defaultReorderDropParams, - columnId: 'col1', - droppedItem: { - columnId: 'col2', - groupId: 'a', - layerId: 'first', - id: 'col2', - }, - }); - expect(setState).toBeCalledTimes(3); - expect(setState).toHaveBeenCalledWith(stateWithColumnOrder(['col2', 'col1', 'col3'])); - - // middle column to last - onDrop({ - ...defaultReorderDropParams, - columnId: 'col3', - droppedItem: { - columnId: 'col2', - groupId: 'a', - layerId: 'first', - id: 'col2', - }, - }); - expect(setState).toBeCalledTimes(4); - expect(setState).toHaveBeenCalledWith(stateWithColumnOrder(['col1', 'col3', 'col2'])); - }); - - it('updates the column id when moving an operation to an empty dimension', () => { - onDrop({ - ...defaultProps, - droppedItem: draggingCol1, - columnId: 'col2', - dropType: 'move_compatible', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...state.layers.first, - columnOrder: ['col2'], - columns: { - col2: state.layers.first.columns.col1, - }, - }, - }, - }); - }); - - it('replaces an operation when moving to a populated dimension', () => { - const testState = { ...state }; - testState.layers.first = { - indexPatternId: 'foo', - columnOrder: ['col1', 'col2', 'col3'], - columns: { - col1: testState.layers.first.columns.col1, - - col2: { - label: 'Top 10 values of src', - dataType: 'string', - isBucketed: true, - - // Private - operationType: 'terms', - params: { - orderBy: { type: 'column', columnId: 'col3' }, - orderDirection: 'desc', - size: 10, - }, - sourceField: 'src', - } as TermsIndexPatternColumn, - col3: { - label: 'Count', - dataType: 'number', - isBucketed: false, - - // Private - operationType: 'count', - sourceField: '___records___', - customLabel: true, - }, - }, - }; - - onDrop({ - ...defaultProps, - droppedItem: draggingCol2, - state: testState, - dropType: 'replace_compatible', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'col3'], - columns: { - col1: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - }, - }, - }, - }); - }); - - it('when combine compatible columns should append dropped column fields into the target one', () => { - state = getStateWithMultiFieldColumn(); - state.layers.first.columns = { - ...state.layers.first.columns, - col2: { - isBucketed: true, - label: 'Top values of source', - operationType: 'terms', - sourceField: 'bytes', - dataType: 'number', - params: { - orderBy: { - type: 'alphabetical', - }, - orderDirection: 'desc', - size: 10, - }, - } as TermsIndexPatternColumn, - }; - onDrop({ - ...defaultProps, - state, - droppedItem: { - columnId: 'col2', - groupId: 'a', - layerId: 'first', - id: 'col2', - humanData: { label: 'Label' }, - }, - filterOperations: (op: OperationMetadata) => op.isBucketed, - dropType: 'combine_compatible', - columnId: 'col1', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: expect.objectContaining({ - columns: expect.objectContaining({ - col1: expect.objectContaining({ - dataType: 'string', - sourceField: 'dest', - params: expect.objectContaining({ secondaryFields: ['bytes'] }), - }), - }), - }), - }, - }); - }); - - describe('dimension group aware ordering and copying', () => { - let testState: IndexPatternPrivateState; - beforeEach(() => { - testState = { ...state }; - testState.layers.first = { ...multipleColumnsLayer }; - }); - - it('respects groups on moving operations between compatible groups', () => { - // config: - // a: - // b: col1, col2, col3 - // c: col4 - // dragging col2 into newCol in group a - onDrop({ - ...defaultProps, - columnId: 'newCol', - droppedItem: draggingCol2, - state: testState, - groupId: 'a', - dimensionGroups, - dropType: 'move_compatible', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['newCol', 'col1', 'col3', 'col4'], - columns: { - newCol: testState.layers.first.columns.col2, - col1: testState.layers.first.columns.col1, - col3: testState.layers.first.columns.col3, - col4: testState.layers.first.columns.col4, - }, - }, - }, - }); - }); - - it('respects groups on duplicating operations between compatible groups', () => { - // config: - // a: - // b: col1, col2, col3 - // c: col4 - // dragging col2 into newCol in group a - onDrop({ - ...defaultProps, - columnId: 'newCol', - droppedItem: draggingCol2, - state: testState, - groupId: 'a', - dimensionGroups, - dropType: 'duplicate_compatible', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['newCol', 'col1', 'col2', 'col3', 'col4'], - columns: { - newCol: testState.layers.first.columns.col2, - col1: testState.layers.first.columns.col1, - col2: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - col4: testState.layers.first.columns.col4, - }, - }, - }, - }); - }); - - it('respects groups on moving operations between compatible groups with overwrite', () => { - // config: - // a: col1, - // b: col2, col3 - // c: col4 - // dragging col3 onto col1 in group a - onDrop({ - ...defaultProps, - columnId: 'col1', - droppedItem: draggingCol3, - state: testState, - groupId: 'a', - dimensionGroups: [ - { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, - { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, - { ...dimensionGroups[2] }, - ], - dropType: 'move_compatible', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'col2', 'col4'], - columns: { - col1: testState.layers.first.columns.col3, - col2: testState.layers.first.columns.col2, - col4: testState.layers.first.columns.col4, - }, - }, - }, - }); - }); - - it('respects groups on moving operations if some columns are not listed in groups', () => { - // config: - // a: col1, - // b: col2, col3 - // c: col4 - // col5, col6 not in visualization groups - // dragging col3 onto col1 in group a - onDrop({ - ...defaultProps, - columnId: 'col1', - droppedItem: draggingCol3, - state: { - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'col2', 'col3', 'col4', 'col5', 'col6'], - columns: { - ...testState.layers.first.columns, - col5: { - dataType: 'number', - operationType: 'count', - label: '', - isBucketed: false, - sourceField: '___records___', - customLabel: true, - }, - col6: { - dataType: 'number', - operationType: 'count', - label: '', - isBucketed: false, - sourceField: '___records___', - customLabel: true, - }, - }, - }, - }, - }, - groupId: 'a', - dimensionGroups: [ - { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, - { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, - { ...dimensionGroups[2] }, - ], - dropType: 'move_compatible', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'col2', 'col4', 'col5', 'col6'], - columns: { - col1: testState.layers.first.columns.col3, - col2: testState.layers.first.columns.col2, - col4: testState.layers.first.columns.col4, - col5: expect.objectContaining({ - dataType: 'number', - operationType: 'count', - label: '', - isBucketed: false, - sourceField: '___records___', - }), - col6: expect.objectContaining({ - dataType: 'number', - operationType: 'count', - label: '', - isBucketed: false, - sourceField: '___records___', - }), - }, - }, - }, - }); - }); - - it('respects groups on duplicating operations between compatible groups with overwrite', () => { - // config: - // a: col1, - // b: col2, col3 - // c: col4 - // dragging col3 onto col1 in group a - - onDrop({ - ...defaultProps, - columnId: 'col1', - droppedItem: draggingCol3, - state: testState, - groupId: 'a', - dimensionGroups: [ - { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, - { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, - { ...dimensionGroups[2] }, - ], - dropType: 'duplicate_compatible', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'col2', 'col3', 'col4'], - columns: { - col1: testState.layers.first.columns.col3, - col2: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - col4: testState.layers.first.columns.col4, - }, - }, - }, - }); - }); - - it('moves newly created dimension to the bottom of the current group', () => { - // config: - // a: col1 - // b: col2, col3 - // c: col4 - // dragging col1 into newCol in group b - onDrop({ - ...defaultProps, - columnId: 'newCol', - dropType: 'move_compatible', - droppedItem: draggingCol1, - state: testState, - groupId: 'b', - dimensionGroups: [ - { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, - { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, - { ...dimensionGroups[2] }, - ], - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col2', 'col3', 'newCol', 'col4'], - columns: { - newCol: testState.layers.first.columns.col1, - col2: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - col4: testState.layers.first.columns.col4, - }, - }, - }, - }); - }); - - it('copies column to the bottom of the current group', () => { - // config: - // a: col1 - // b: col2, col3 - // c: col4 - // copying col1 within group a - onDrop({ - ...defaultProps, - columnId: 'newCol', - dropType: 'duplicate_compatible', - droppedItem: draggingCol1, - state: testState, - groupId: 'a', - dimensionGroups: [ - { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, - { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, - { ...dimensionGroups[2] }, - ], - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'newCol', 'col2', 'col3', 'col4'], - columns: { - col1: testState.layers.first.columns.col1, - newCol: testState.layers.first.columns.col1, - col2: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - col4: testState.layers.first.columns.col4, - }, - }, - }, - }); - }); - - it('appends the dropped column in the right place respecting custom nestingOrder', () => { - // config: - // a: - // b: col1, col2, col3 - // c: col4 - // dragging field into newCol in group a - - onDrop({ - ...defaultProps, - droppedItem: draggingField, - columnId: 'newCol', - filterOperations: (op: OperationMetadata) => op.dataType === 'number', - groupId: 'a', - dimensionGroups: [ - // a and b are ordered in reverse visually, but nesting order keeps them in place for column order - { ...dimensionGroups[1], nestingOrder: 1 }, - { ...dimensionGroups[0], nestingOrder: 0 }, - { ...dimensionGroups[2] }, - ], - dropType: 'field_add', - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...state, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['newCol', 'col1', 'col2', 'col3', 'col4'], - columns: { - newCol: expect.objectContaining({ - dataType: 'number', - sourceField: 'bytes', - }), - col1: testState.layers.first.columns.col1, - col2: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - col4: testState.layers.first.columns.col4, - }, - incompleteColumns: {}, - }, - }, - }); - }); - - it('moves incompatible column to the bottom of the target group', () => { - // config: - // a: col1 - // b: col2, col3 - // c: col4 - // dragging col4 into newCol in group a - - onDrop({ - ...defaultProps, - columnId: 'newCol', - dropType: 'move_incompatible', - droppedItem: draggingCol4, - state: testState, - groupId: 'a', - dimensionGroups: [ - { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, - { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, - { ...dimensionGroups[2] }, - ], - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'newCol', 'col2', 'col3'], - columns: { - col1: testState.layers.first.columns.col1, - newCol: expect.objectContaining({ - sourceField: (testState.layers.first.columns.col4 as MedianIndexPatternColumn) - .sourceField, - }), - col2: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - }, - incompleteColumns: {}, - }, - }, - }); - }); - - it('copies incompatible column to the bottom of the target group', () => { - // config: - // a: col1 - // b: col2, col3 - // c: col4 - // dragging col4 into newCol in group a - - onDrop({ - ...defaultProps, - columnId: 'newCol', - dropType: 'duplicate_incompatible', - droppedItem: draggingCol4, - state: testState, - groupId: 'a', - dimensionGroups: [ - { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, - { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, - { ...dimensionGroups[2] }, - ], - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'newCol', 'col2', 'col3', 'col4'], - columns: { - col1: testState.layers.first.columns.col1, - newCol: expect.objectContaining({ - sourceField: (testState.layers.first.columns.col4 as MedianIndexPatternColumn) - .sourceField, - }), - col2: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - col4: testState.layers.first.columns.col4, - }, - incompleteColumns: {}, - }, - }, - }); - }); - - it('moves incompatible column with overwrite keeping order of target column', () => { - // config: - // a: col1 - // b: col2, col3 - // c: col4 - // dragging col4 into col2 in group b - - onDrop({ - ...defaultProps, - columnId: 'col2', - dropType: 'move_incompatible', - droppedItem: draggingCol4, - state: testState, - groupId: 'b', - dimensionGroups: [ - { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, - { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, - { ...dimensionGroups[2] }, - ], - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'col2', 'col3'], - columns: { - col1: testState.layers.first.columns.col1, - col2: { - isBucketed: true, - label: 'Top 10 values of bytes', - operationType: 'terms', - sourceField: 'bytes', - dataType: 'number', - params: { - orderBy: { - type: 'alphabetical', - }, - orderDirection: 'desc', - size: 10, - parentFormat: { id: 'terms' }, - }, - }, - col3: testState.layers.first.columns.col3, - }, - incompleteColumns: {}, - }, - }, - }); - }); - - it('when swapping compatibly, columns carry order', () => { - // config: - // a: col1 - // b: col2, col3 - // c: col4 - // dragging col4 into col1 - - onDrop({ - ...defaultProps, - columnId: 'col1', - dropType: 'swap_compatible', - droppedItem: draggingCol4, - state: testState, - groupId: 'a', - dimensionGroups: [ - { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, - { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, - { ...dimensionGroups[2] }, - ], - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'col2', 'col3', 'col4'], - columns: { - col1: testState.layers.first.columns.col4, - col2: testState.layers.first.columns.col2, - col3: testState.layers.first.columns.col3, - col4: testState.layers.first.columns.col1, - }, - }, - }, - }); - }); - - it('when swapping incompatibly, newly created columns take order from the columns they replace', () => { - // config: - // a: col1 - // b: col2, col3 - // c: col4 - // dragging col4 into col2 - - onDrop({ - ...defaultProps, - columnId: 'col2', - dropType: 'swap_incompatible', - droppedItem: draggingCol4, - state: testState, - groupId: 'b', - dimensionGroups: [ - { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, - { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, - { ...dimensionGroups[2] }, - ], - }); - - expect(setState).toBeCalledTimes(1); - expect(setState).toHaveBeenCalledWith({ - ...testState, - layers: { - first: { - ...testState.layers.first, - columnOrder: ['col1', 'col2', 'col3', 'col4'], - columns: { - col1: testState.layers.first.columns.col1, - col2: { - isBucketed: true, - label: 'Top 10 values of bytes', - operationType: 'terms', - sourceField: 'bytes', - dataType: 'number', - params: { - orderBy: { - type: 'alphabetical', - }, - orderDirection: 'desc', - parentFormat: { id: 'terms' }, - size: 10, - }, - }, - col3: testState.layers.first.columns.col3, - col4: { - isBucketed: false, - label: 'Unique count of src', - filter: undefined, - operationType: 'unique_count', - sourceField: 'src', - timeShift: undefined, - dataType: 'number', - params: { - emptyAsNull: true, - }, - scale: 'ratio', - }, - }, - incompleteColumns: {}, - }, - }, - }); - }); - }); - }); - }); -}); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/get_drop_props.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/get_drop_props.test.ts new file mode 100644 index 0000000000000..f9afc9a00c98f --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/get_drop_props.test.ts @@ -0,0 +1,767 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { DragDropOperation, OperationMetadata } from '../../../types'; +import { TermsIndexPatternColumn } from '../../operations'; +import { getDropProps } from './get_drop_props'; +import { + mockDataViews, + mockedLayers, + mockedDraggedField, + mockedDndOperations, + mockedColumns, +} from './mocks'; +import { generateId } from '../../../id_generator'; + +const getDefaultProps = () => ({ + state: { + indexPatternRefs: [], + indexPatterns: mockDataViews(), + currentIndexPatternId: 'first', + isFirstExistenceFetch: false, + existingFields: { + first: { + timestamp: true, + bytes: true, + memory: true, + source: true, + }, + }, + layers: { first: mockedLayers.doubleColumnLayer(), second: mockedLayers.emptyLayer() }, + }, + target: mockedDndOperations.notFiltering, + source: mockedDndOperations.bucket, +}); + +describe('IndexPatternDimensionEditorPanel#getDropProps', () => { + describe('not dragging', () => { + it('returns undefined if no drag is happening', () => { + expect(getDropProps({ ...getDefaultProps(), source: undefined })).toBe(undefined); + }); + + it('returns undefined if the dragged item has no field', () => { + expect( + getDropProps({ + ...getDefaultProps(), + source: { name: 'bar', id: 'bar', humanData: { label: 'Label' } }, + }) + ).toBe(undefined); + }); + }); + + describe('dragging a field', () => { + it('returns undefined if field is not supported by filterOperations', () => { + expect( + getDropProps({ + ...getDefaultProps(), + source: mockedDraggedField, + target: mockedDndOperations.staticValue, + }) + ).toBe(undefined); + }); + + it('returns field_replace if the field is supported by filterOperations and the dropTarget is an existing column', () => { + expect( + getDropProps({ + ...getDefaultProps(), + target: mockedDndOperations.numericalOnly, + source: mockedDraggedField, + }) + ).toEqual({ dropTypes: ['field_replace'], nextLabel: 'Intervals' }); + }); + + it('returns field_add if the field is supported by filterOperations and the dropTarget is an empty column', () => { + expect( + getDropProps({ + ...getDefaultProps(), + target: { + ...mockedDndOperations.numericalOnly, + columnId: 'newId', + }, + source: mockedDraggedField, + }) + ).toEqual({ dropTypes: ['field_add'], nextLabel: 'Intervals' }); + }); + + it('returns undefined if the field belongs to another data view', () => { + expect( + getDropProps({ + ...getDefaultProps(), + source: { + ...mockedDraggedField, + indexPatternId: 'first2', + }, + }) + ).toBe(undefined); + }); + + it('returns undefined if the dragged field is already in use by this operation', () => { + expect( + getDropProps({ + ...getDefaultProps(), + source: { + ...mockedDraggedField, + field: { + name: 'timestamp', + displayName: 'timestampLabel', + type: 'date', + aggregatable: true, + searchable: true, + exists: true, + }, + }, + }) + ).toBe(undefined); + }); + + it('returns also field_combine if the field is supported by filterOperations and the dropTarget is an existing column that supports multiple fields', () => { + // replace the state with a top values column to enable the multi fields behaviour + const props = getDefaultProps(); + expect( + getDropProps({ + ...props, + source: mockedDraggedField, + target: { + ...props.target, + columnId: 'col2', + filterOperations: (op: OperationMetadata) => op.dataType !== 'date', + }, + }) + ).toEqual({ dropTypes: ['field_replace', 'field_combine'] }); + }); + }); + + describe('dragging a column', () => { + it('allows replacing and replace-duplicating when two columns from compatible groups use the same field', () => { + const props = getDefaultProps(); + props.state.layers.first.columns.col2 = mockedColumns.dateHistogramCopy; + + expect( + getDropProps({ + ...props, + target: { + ...props.target, + columnId: 'col2', + }, + source: { + ...mockedDndOperations.metric, + groupId: 'c', + }, + }) + ).toEqual({ dropTypes: ['replace_compatible', 'replace_duplicate_compatible'] }); + }); + + it('returns correct dropTypes if the dragged column from different group uses the same fields as the dropTarget', () => { + const props = getDefaultProps(); + const sourceMultiFieldColumn = { + ...props.state.layers.first.columns.col1, + sourceField: 'bytes', + params: { + ...(props.state.layers.first.columns.col1 as TermsIndexPatternColumn).params, + secondaryFields: ['dest'], + }, + } as TermsIndexPatternColumn; + // invert the fields + const targetMultiFieldColumn = { + ...props.state.layers.first.columns.col1, + sourceField: 'dest', + params: { + ...(props.state.layers.first.columns.col1 as TermsIndexPatternColumn).params, + secondaryFields: ['bytes'], + }, + } as TermsIndexPatternColumn; + props.state.layers.first.columns = { + col1: sourceMultiFieldColumn, + col2: targetMultiFieldColumn, + }; + + expect( + getDropProps({ + ...props, + target: { + ...props.target, + columnId: 'col2', + }, + source: { + ...mockedDndOperations.metric, + groupId: 'c', + }, + }) + ).toEqual({ dropTypes: ['replace_compatible', 'replace_duplicate_compatible'] }); + }); + + it('returns duplicate and replace if the dragged column from different group uses the same field as the dropTarget, but this last one is multifield, and can be swappable', () => { + const props = getDefaultProps(); + props.state.layers.first.columns.col2 = { + ...props.state.layers.first.columns.col1, + sourceField: 'bytes', + params: { + ...(props.state.layers.first.columns.col1 as TermsIndexPatternColumn).params, + secondaryFields: ['dest'], + }, + } as TermsIndexPatternColumn; + + expect( + getDropProps({ + ...props, + target: { + ...props.target, + columnId: 'col2', + }, + source: { + ...mockedDndOperations.metric, + groupId: 'c', + }, + }) + ).toEqual({ + dropTypes: ['replace_compatible', 'replace_duplicate_compatible'], + }); + }); + + it('returns swap, duplicate and replace if the dragged column from different group uses the same field as the dropTarget, but this last one is multifield', () => { + const props = getDefaultProps(); + props.state.layers.first.columns.col2 = { + ...props.state.layers.first.columns.col1, + sourceField: 'bytes', + params: { + ...(props.state.layers.first.columns.col1 as TermsIndexPatternColumn).params, + secondaryFields: ['dest'], + }, + } as TermsIndexPatternColumn; + + expect( + getDropProps({ + ...props, + ...props, + // make it swappable + target: { + ...props.target, + filterOperations: (op: OperationMetadata) => op.isBucketed, + groupId: 'a', + columnId: 'col2', + }, + source: { + ...mockedDndOperations.metric, + filterOperations: (op: OperationMetadata) => op.isBucketed, + groupId: 'c', + }, + }) + ).toEqual({ + dropTypes: ['replace_compatible', 'replace_duplicate_compatible', 'swap_compatible'], + }); + }); + + it('returns reorder if drop target and source columns are from the same group and both are existing', () => { + const props = getDefaultProps(); + props.state.layers.first.columns.col2 = mockedColumns.sum; + + expect( + getDropProps({ + ...props, + source: { ...mockedDndOperations.metric, groupId: 'a' }, + target: { + ...props.target, + columnId: 'col2', + filterOperations: (op: OperationMetadata) => op.isBucketed === false, + }, + }) + ).toEqual({ + dropTypes: ['reorder'], + }); + }); + + it('returns duplicate_compatible if drop target and source columns are from the same group and drop target id is a new column', () => { + const props = getDefaultProps(); + expect( + getDropProps({ + ...props, + target: { + ...props.target, + groupId: 'a', + columnId: 'newId', + }, + source: { + ...mockedDndOperations.metric, + groupId: 'a', + }, + }) + ).toEqual({ dropTypes: ['duplicate_compatible'] }); + }); + + it('returns compatible drop types if the dragged column is compatible', () => { + const props = getDefaultProps(); + expect( + getDropProps({ + ...props, + target: { + ...props.target, + groupId: 'a', + columnId: 'col3', + }, + source: { + ...mockedDndOperations.metric, + groupId: 'c', + }, + }) + ).toEqual({ dropTypes: ['move_compatible', 'duplicate_compatible'] }); + }); + + it('returns incompatible drop target types if dropping column to existing incompatible column', () => { + const props = getDefaultProps(); + props.state.layers.first.columns = { + col1: mockedColumns.dateHistogram, + col2: mockedColumns.sum, + }; + + expect( + getDropProps({ + ...props, + target: { + ...props.target, + columnId: 'col2', + filterOperations: (op: OperationMetadata) => op.isBucketed === false, + }, + source: { + ...mockedDndOperations.metric, + groupId: 'c', + }, + }) + ).toEqual({ + dropTypes: ['replace_incompatible', 'replace_duplicate_incompatible', 'swap_incompatible'], + nextLabel: 'Minimum', + }); + }); + + it('does not return swap_incompatible if current dropTarget column cannot be swapped to the group of dragging column', () => { + const props = getDefaultProps(); + props.state.layers.first.columns = { + col1: mockedColumns.dateHistogram, + col2: mockedColumns.count, + }; + + expect( + getDropProps({ + ...props, + target: { + ...props.target, + columnId: 'col2', + filterOperations: (op: OperationMetadata) => op.isBucketed === false, + }, + source: { + columnId: 'col1', + groupId: 'b', + layerId: 'first', + id: 'col1', + humanData: { label: 'Label' }, + filterOperations: (op: OperationMetadata) => op.isBucketed === true, + }, + }) + ).toEqual({ + dropTypes: ['replace_incompatible', 'replace_duplicate_incompatible'], + nextLabel: 'Minimum', + }); + }); + + it('returns combine_compatible drop type if the dragged column is compatible and the target one support multiple fields', () => { + const props = getDefaultProps(); + props.state.layers.first.columns = { + col1: mockedColumns.terms, + col2: { + ...mockedColumns.terms, + sourceField: 'bytes', + }, + }; + expect( + getDropProps({ + ...props, + target: { + ...props.target, + columnId: 'col2', + }, + source: { + ...mockedDndOperations.metric, + groupId: 'c', + }, + }) + ).toEqual({ + dropTypes: ['replace_compatible', 'replace_duplicate_compatible', 'combine_compatible'], + }); + }); + + it('returns no combine_compatible drop type if the target column uses rarity ordering', () => { + const props = getDefaultProps(); + props.state.layers.first.columns = { + col1: mockedColumns.terms, + col2: { + ...mockedColumns.terms, + sourceField: 'bytes', + params: { + ...(props.state.layers.first.columns.col1 as TermsIndexPatternColumn).params, + orderBy: { type: 'rare' }, + }, + } as TermsIndexPatternColumn, + }; + + expect( + getDropProps({ + ...props, + target: { + ...props.target, + groupId: 'a', + columnId: 'col2', + }, + source: { + ...mockedDndOperations.metric, + groupId: 'c', + }, + }) + ).toEqual({ + dropTypes: ['replace_compatible', 'replace_duplicate_compatible'], + }); + }); + + it('returns no combine drop type if the dragged column is compatible, the target one supports multiple fields but there are too many fields', () => { + const props = getDefaultProps(); + props.state.layers.first.columns.col2 = { + ...props.state.layers.first.columns.col1, + sourceField: 'source', + params: { + ...(props.state.layers.first.columns.col1 as TermsIndexPatternColumn).params, + secondaryFields: ['memory', 'bytes', 'geo.src'], // too many fields here + }, + } as TermsIndexPatternColumn; + + expect( + getDropProps({ + ...props, + target: { + ...props.target, + groupId: 'a', + columnId: 'col2', + }, + source: { + ...mockedDndOperations.metric, + groupId: 'c', + }, + }) + ).toEqual({ + dropTypes: ['replace_compatible', 'replace_duplicate_compatible'], + }); + }); + + it('returns combine_incompatible drop target types if dropping column to existing incompatible column which supports multiple fields', () => { + const props = getDefaultProps(); + props.state.layers.first.columns = { + col1: mockedColumns.terms, + col2: mockedColumns.sum, + }; + + expect( + getDropProps({ + ...props, + target: { + ...props.target, + groupId: 'a', + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + // drag the sum over the top values + source: { + ...mockedDndOperations.bucket, + groupId: 'c', + filterOperation: undefined, + }, + }) + ).toEqual({ + dropTypes: [ + 'replace_incompatible', + 'replace_duplicate_incompatible', + 'swap_incompatible', + 'combine_incompatible', + ], + nextLabel: 'Top values', + }); + }); + }); + + describe('getDropProps between layers', () => { + it('allows dropping to the same group', () => { + const props = getDefaultProps(); + expect( + getDropProps({ + ...props, + source: { + ...mockedDndOperations.metric, + columnId: 'col1', + layerId: 'first', + groupId: 'c', + }, + target: { + ...props.target, + columnId: 'newId', + groupId: 'c', + layerId: 'second', + }, + }) + ).toEqual({ + dropTypes: ['move_compatible', 'duplicate_compatible'], + }); + }); + it('allows dropping to compatible groups', () => { + const props = getDefaultProps(); + expect( + getDropProps({ + ...props, + source: { + ...mockedDndOperations.metric, + columnId: 'col1', + layerId: 'first', + groupId: 'a', + }, + target: { + ...props.target, + columnId: 'newId', + groupId: 'c', + layerId: 'second', + }, + }) + ).toEqual({ + dropTypes: ['move_compatible', 'duplicate_compatible'], + }); + }); + it('allows incompatible drop', () => { + const props = getDefaultProps(); + expect( + getDropProps({ + ...props, + source: { + ...mockedDndOperations.metric, + columnId: 'col1', + layerId: 'first', + groupId: 'c', + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + target: { + ...props.target, + columnId: 'newId', + groupId: 'c', + layerId: 'second', + filterOperations: (op: OperationMetadata) => !op.isBucketed, + }, + })?.dropTypes + ).toEqual(['move_incompatible', 'duplicate_incompatible']); + }); + it('allows dropping references', () => { + const props = getDefaultProps(); + const referenceDragging = { + columnId: 'col1', + groupId: 'a', + layerId: 'first', + id: 'col1', + humanData: { label: 'Label' }, + }; + + (generateId as jest.Mock).mockReturnValue(`ref1Copy`); + props.state = { + ...props.state, + layers: { + ...props.state.layers, + first: { + indexPatternId: 'first', + columnOrder: ['col1', 'ref1'], + columns: { + col1: { + label: 'Test reference', + dataType: 'number', + isBucketed: false, + operationType: 'cumulative_sum', + references: ['ref1'], + }, + ref1: { + label: 'Count of records', + dataType: 'number', + isBucketed: false, + sourceField: '___records___', + operationType: 'count', + }, + }, + }, + }, + }; + + expect( + getDropProps({ + ...props, + source: referenceDragging, + target: { + ...props.target, + columnId: 'newColumnId', + groupId: 'c', + layerId: 'second', + filterOperations: (op: OperationMetadata) => !op.isBucketed, + }, + })?.dropTypes + ).toEqual(['move_compatible', 'duplicate_compatible']); + }); + it('doesnt allow dropping for different index patterns', () => { + const props = getDefaultProps(); + props.state.layers.second.indexPatternId = 'different index'; + expect( + getDropProps({ + ...props, + source: { + ...mockedDndOperations.metric, + columnId: 'col1', + layerId: 'first', + groupId: 'c', + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + target: { + ...props.target, + columnId: 'newId', + groupId: 'c', + layerId: 'second', + filterOperations: (op: OperationMetadata) => !op.isBucketed, + }, + })?.dropTypes + ).toEqual(undefined); + }); + + it('does not allow static value to be moved when not allowed', () => { + const props = getDefaultProps(); + props.state.layers = { + first: { + indexPatternId: 'first', + columns: { + col1: mockedColumns.dateHistogram, + colMetric: mockedColumns.count, + }, + columnOrder: ['col1', 'colMetric'], + incompleteColumns: {}, + }, + second: { + indexPatternId: 'first', + columns: { + staticValue: mockedColumns.staticValue, + }, + columnOrder: ['staticValue'], + incompleteColumns: {}, + }, + }; + expect( + getDropProps({ + ...props, + source: { + columnId: 'staticValue', + groupId: 'yReferenceLineLeft', + layerId: 'second', + id: 'staticValue', + humanData: { label: 'Label' }, + }, + target: { + layerId: 'first', + columnId: 'col1', + groupId: 'x', + } as DragDropOperation, + })?.dropTypes + ).toEqual(undefined); + }); + it('allow multiple drop types from terms to terms', () => { + const props = getDefaultProps(); + props.state.layers = { + first: { + indexPatternId: 'first', + columns: { + terms: mockedColumns.terms, + metric: mockedColumns.count, + }, + columnOrder: ['terms', 'metric'], + incompleteColumns: {}, + }, + second: { + indexPatternId: 'first', + columns: { + terms2: mockedColumns.terms2, + metric2: mockedColumns.count, + }, + columnOrder: ['terms2', 'metric2'], + incompleteColumns: {}, + }, + }; + expect( + getDropProps({ + ...props, + source: { + columnId: 'terms', + groupId: 'x', + layerId: 'first', + id: 'terms', + humanData: { label: 'Label' }, + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + target: { + columnId: 'terms2', + groupId: 'x', + layerId: 'second', + filterOperations: (op: OperationMetadata) => op.isBucketed, + } as DragDropOperation, + })?.dropTypes + ).toEqual([ + 'replace_compatible', + 'replace_duplicate_compatible', + 'swap_compatible', + 'combine_compatible', + ]); + }); + it('allow multiple drop types from metric on field to terms', () => { + const props = getDefaultProps(); + props.state.layers = { + first: { + indexPatternId: 'first', + columns: { + sum: mockedColumns.sum, + metric: mockedColumns.count, + }, + columnOrder: ['sum', 'metric'], + incompleteColumns: {}, + }, + second: { + indexPatternId: 'first', + columns: { + terms2: mockedColumns.terms2, + metric2: mockedColumns.count, + }, + columnOrder: ['terms2', 'metric2'], + incompleteColumns: {}, + }, + }; + expect( + getDropProps({ + ...props, + source: { + columnId: 'sum', + groupId: 'x', + layerId: 'first', + id: 'sum', + humanData: { label: 'Label' }, + filterOperations: (op: OperationMetadata) => !op.isBucketed, + }, + target: { + columnId: 'terms2', + groupId: 'x', + layerId: 'second', + filterOperations: (op: OperationMetadata) => op.isBucketed, + } as DragDropOperation, + })?.dropTypes + ).toEqual([ + 'replace_incompatible', + 'replace_duplicate_incompatible', + 'swap_incompatible', + 'combine_incompatible', + ]); + }); + }); +}); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/get_drop_props.ts b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/get_drop_props.ts index 3318b8c30909e..744033a2428fa 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/get_drop_props.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/get_drop_props.ts @@ -5,13 +5,7 @@ * 2.0. */ -import { - DatasourceDimensionDropProps, - isDraggedOperation, - DraggedOperation, - DropType, - VisualizationDimensionGroupConfig, -} from '../../../types'; +import { isOperation, DropType, DragDropOperation } from '../../../types'; import { getCurrentFieldsForOperation, getOperationDisplay, @@ -27,12 +21,18 @@ import { IndexPattern, IndexPatternField, DraggedField, + DataViewDragDropOperation, } from '../../types'; - -type GetDropProps = DatasourceDimensionDropProps & { - dragging?: DragContextState['dragging']; - groupId: string; -}; +import { + getDropPropsForSameGroup, + isOperationFromTheSameGroup, +} from '../../../editor_frame_service/editor_frame/config_panel/buttons/drop_targets_utils'; + +interface GetDropPropsArgs { + state: IndexPatternPrivateState; + source?: DragContextState['dragging']; + target: DragDropOperation; +} type DropProps = { dropTypes: DropType[]; nextLabel?: string } | undefined; @@ -41,7 +41,7 @@ const operationLabels = getOperationDisplay(); export function getNewOperation( field: IndexPatternField | undefined | false, filterOperations: (meta: OperationMetadata) => boolean, - targetColumn: GenericIndexPatternColumn, + targetColumn?: GenericIndexPatternColumn, prioritizedOperation?: GenericIndexPatternColumn['operationType'] ) { if (!field) { @@ -61,52 +61,50 @@ export function getNewOperation( return existsPrioritizedOperation ? prioritizedOperation : newOperations[0]; } -export function getField( - column: GenericIndexPatternColumn | undefined, - indexPattern: IndexPattern -) { +export function getField(column: GenericIndexPatternColumn | undefined, dataView: IndexPattern) { if (!column) { return; } - const field = (hasField(column) && indexPattern.getFieldByName(column.sourceField)) || undefined; + const field = (hasField(column) && dataView.getFieldByName(column.sourceField)) || undefined; return field; } -export function getDropProps(props: GetDropProps) { - const { state, columnId, layerId, dragging, groupId, filterOperations } = props; - if (!dragging) { +export function getDropProps(props: GetDropPropsArgs) { + const { state, source, target } = props; + if (!source) { return; } + const targetProps: DataViewDragDropOperation = { + ...target, + column: state.layers[target.layerId].columns[target.columnId], + dataView: state.indexPatterns[state.layers[target.layerId].indexPatternId], + }; - if (isDraggedField(dragging)) { - return getDropPropsForField({ ...props, dragging }); + if (isDraggedField(source)) { + return getDropPropsForField({ ...props, source, target: targetProps }); } - if ( - isDraggedOperation(dragging) && - dragging.layerId === layerId && - columnId !== dragging.columnId - ) { - const sourceColumn = state.layers[dragging.layerId].columns[dragging.columnId]; - const targetColumn = state.layers[layerId].columns[columnId]; - const isSameGroup = groupId === dragging.groupId; - if (isSameGroup) { - return getDropPropsForSameGroup(!targetColumn); - } - const layerIndexPattern = state.indexPatterns[state.layers[layerId].indexPatternId]; - - if (filterOperations(sourceColumn)) { - return getDropPropsForCompatibleGroup( - props.dimensionGroups, - dragging.columnId, - sourceColumn, - targetColumn, - layerIndexPattern - ); - } else if (hasTheSameField(sourceColumn, targetColumn)) { + if (isOperation(source)) { + const sourceProps: DataViewDragDropOperation = { + ...source, + column: state.layers[source.layerId]?.columns[source.columnId], + dataView: state.indexPatterns[state.layers[source.layerId]?.indexPatternId], + }; + if (!sourceProps.column) { return; - } else { - return getDropPropsFromIncompatibleGroup({ ...props, dragging }); + } + if (target.columnId !== source.columnId && targetProps.dataView === sourceProps.dataView) { + if (isOperationFromTheSameGroup(source, target)) { + return getDropPropsForSameGroup(!targetProps.column); + } + + if (targetProps.filterOperations?.(sourceProps?.column)) { + return getDropPropsForCompatibleGroup(sourceProps, targetProps); + } else if (hasTheSameField(sourceProps.column, targetProps.column)) { + return; + } else { + return getDropPropsFromIncompatibleGroup(sourceProps, targetProps); + } } } } @@ -126,14 +124,13 @@ function hasTheSameField( function getDropPropsForField({ state, - columnId, - layerId, - dragging, - filterOperations, -}: GetDropProps & { dragging: DraggedField }): DropProps { - const targetColumn = state.layers[layerId].columns[columnId]; - const isTheSameIndexPattern = state.layers[layerId].indexPatternId === dragging.indexPatternId; - const newOperation = getNewOperation(dragging.field, filterOperations, targetColumn); + source, + target, +}: GetDropPropsArgs & { source: DraggedField }): DropProps { + const targetColumn = state.layers[target.layerId].columns[target.columnId]; + const isTheSameIndexPattern = + state.layers[target.layerId].indexPatternId === source.indexPatternId; + const newOperation = getNewOperation(source.field, target.filterOperations, targetColumn); if (isTheSameIndexPattern && newOperation) { const nextLabel = operationLabels[newOperation].displayName; @@ -141,18 +138,13 @@ function getDropPropsForField({ if (!targetColumn) { return { dropTypes: ['field_add'], nextLabel }; } else if ( - (hasField(targetColumn) && targetColumn.sourceField !== dragging.field.name) || + (hasField(targetColumn) && targetColumn.sourceField !== source.field.name) || !hasField(targetColumn) ) { - const layerIndexPattern = state.indexPatterns[state.layers[layerId].indexPatternId]; + const layerDataView = state.indexPatterns[state.layers[target.layerId].indexPatternId]; return hasField(targetColumn) && - layerIndexPattern && - hasOperationSupportForMultipleFields( - layerIndexPattern, - targetColumn, - undefined, - dragging.field - ) + layerDataView && + hasOperationSupportForMultipleFields(layerDataView, targetColumn, undefined, source.field) ? { dropTypes: ['field_replace', 'field_combine'], } @@ -165,82 +157,68 @@ function getDropPropsForField({ return; } -function getDropPropsForSameGroup(isNew?: boolean): DropProps { - return !isNew ? { dropTypes: ['reorder'] } : { dropTypes: ['duplicate_compatible'] }; -} - function getDropPropsForCompatibleGroup( - dimensionGroups: VisualizationDimensionGroupConfig[], - sourceId: string, - sourceColumn?: GenericIndexPatternColumn, - targetColumn?: GenericIndexPatternColumn, - indexPattern?: IndexPattern + sourceProps: DataViewDragDropOperation, + targetProps: DataViewDragDropOperation ): DropProps { - const hasSameField = sourceColumn && hasTheSameField(sourceColumn, targetColumn); - - const canSwap = - targetColumn && - !hasSameField && - dimensionGroups - .find((group) => group.accessors.some((accessor) => accessor.columnId === sourceId)) - ?.filterOperations(targetColumn); - + if (!targetProps.column) { + return { dropTypes: ['move_compatible', 'duplicate_compatible'] }; + } + const canSwap = sourceProps.filterOperations?.(targetProps.column); const swapType: DropType[] = canSwap ? ['swap_compatible'] : []; - if (!targetColumn) { - return { dropTypes: ['move_compatible', 'duplicate_compatible', ...swapType] }; + const dropTypes: DropType[] = ['replace_compatible', 'replace_duplicate_compatible', ...swapType]; + if (!targetProps.dataView || !hasField(targetProps.column)) { + return { dropTypes }; } - if (!indexPattern || !hasField(targetColumn)) { - return { dropTypes: ['replace_compatible', 'replace_duplicate_compatible', ...swapType] }; - } - // With multi fields operations there are more combination of drops now - const dropTypes: DropType[] = []; - if (!hasSameField) { - dropTypes.push('replace_compatible', 'replace_duplicate_compatible'); - } - if (canSwap) { - dropTypes.push('swap_compatible'); - } - if (hasOperationSupportForMultipleFields(indexPattern, targetColumn, sourceColumn)) { + + if ( + hasOperationSupportForMultipleFields( + targetProps.dataView, + targetProps.column, + sourceProps.column + ) + ) { dropTypes.push('combine_compatible'); } - // return undefined if no drop action is available - if (!dropTypes.length) { - return; - } return { dropTypes, }; } -function getDropPropsFromIncompatibleGroup({ - state, - columnId, - layerId, - dragging, - filterOperations, -}: GetDropProps & { dragging: DraggedOperation }): DropProps { - const targetColumn = state.layers[layerId].columns[columnId]; - const sourceColumn = state.layers[dragging.layerId].columns[dragging.columnId]; - - const layerIndexPattern = state.indexPatterns[state.layers[layerId].indexPatternId]; - if (!layerIndexPattern) { +function getDropPropsFromIncompatibleGroup( + sourceProps: DataViewDragDropOperation, + targetProps: DataViewDragDropOperation +): DropProps { + if (!targetProps.dataView || !sourceProps.column) { return; } - const sourceField = getField(sourceColumn, layerIndexPattern); - const newOperationForSource = getNewOperation(sourceField, filterOperations, targetColumn); + const sourceField = getField(sourceProps.column, sourceProps.dataView); + const newOperationForSource = getNewOperation( + sourceField, + targetProps.filterOperations, + targetProps.column + ); if (newOperationForSource) { - const targetField = getField(targetColumn, layerIndexPattern); - const canSwap = Boolean(getNewOperation(targetField, dragging.filterOperations, sourceColumn)); + const targetField = getField(targetProps.column, targetProps.dataView); + const canSwap = Boolean( + getNewOperation(targetField, sourceProps.filterOperations, sourceProps.column) + ); const dropTypes: DropType[] = []; - if (targetColumn) { + if (targetProps.column) { dropTypes.push('replace_incompatible', 'replace_duplicate_incompatible'); if (canSwap) { dropTypes.push('swap_incompatible'); } - if (hasOperationSupportForMultipleFields(layerIndexPattern, targetColumn, sourceColumn)) { + if ( + hasOperationSupportForMultipleFields( + targetProps.dataView, + targetProps.column, + sourceProps.column + ) + ) { dropTypes.push('combine_incompatible'); } } else { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/mocks.ts b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/mocks.ts new file mode 100644 index 0000000000000..40121cf99f546 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/mocks.ts @@ -0,0 +1,292 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IndexPattern, IndexPatternLayer } from '../../types'; +import { documentField } from '../../document_field'; +import { OperationMetadata } from '../../../types'; +import { + DateHistogramIndexPatternColumn, + GenericIndexPatternColumn, + StaticValueIndexPatternColumn, + TermsIndexPatternColumn, +} from '../../operations'; +import { getFieldByNameFactory } from '../../pure_helpers'; +jest.mock('../../../id_generator'); + +export const mockDataViews = (): Record => { + const fields = [ + { + name: 'timestamp', + displayName: 'timestampLabel', + type: 'date', + aggregatable: true, + searchable: true, + exists: true, + }, + { + name: 'bytes', + displayName: 'bytes', + type: 'number', + aggregatable: true, + searchable: true, + exists: true, + }, + { + name: 'memory', + displayName: 'memory', + type: 'number', + aggregatable: true, + searchable: true, + exists: true, + }, + { + name: 'source', + displayName: 'source', + type: 'string', + aggregatable: true, + searchable: true, + exists: true, + }, + { + name: 'src', + displayName: 'src', + type: 'string', + aggregatable: true, + searchable: true, + exists: true, + }, + { + name: 'dest', + displayName: 'dest', + type: 'string', + aggregatable: true, + searchable: true, + exists: true, + }, + documentField, + ]; + return { + first: { + id: 'first', + title: 'first', + timeFieldName: 'timestamp', + hasRestrictions: false, + fields, + getFieldByName: getFieldByNameFactory(fields), + }, + second: { + id: 'second', + title: 'my-fake-restricted-pattern', + hasRestrictions: true, + timeFieldName: 'timestamp', + fields: [fields[0]], + getFieldByName: getFieldByNameFactory([fields[0]]), + }, + }; +}; + +export const mockedColumns: Record = { + count: { + label: 'Count of records', + dataType: 'number', + isBucketed: false, + sourceField: '___records___', + operationType: 'count', + }, + staticValue: { + label: 'Static value: 0.75', + dataType: 'number', + operationType: 'static_value', + isStaticValue: true, + isBucketed: false, + scale: 'ratio', + params: { + value: '0.75', + }, + references: [], + } as StaticValueIndexPatternColumn, + dateHistogram: { + label: 'Date histogram of timestamp', + customLabel: true, + dataType: 'date', + isBucketed: true, + + // Private + operationType: 'date_histogram', + params: { + interval: '1d', + }, + sourceField: 'timestamp', + } as DateHistogramIndexPatternColumn, + dateHistogramCopy: { + label: 'Date histogram of timestamp (1)', + customLabel: true, + dataType: 'date', + isBucketed: true, + + // Private + operationType: 'date_histogram', + params: { + interval: '1d', + }, + sourceField: 'timestamp', + } as DateHistogramIndexPatternColumn, + terms: { + label: 'Top 10 values of src', + dataType: 'string', + isBucketed: true, + // Private + operationType: 'terms', + params: { + orderBy: { type: 'alphabetical' }, + orderDirection: 'desc', + size: 10, + }, + sourceField: 'src', + } as TermsIndexPatternColumn, + terms2: { + label: 'Top 10 values of dest', + dataType: 'string', + isBucketed: true, + + // Private + operationType: 'terms', + params: { + orderBy: { type: 'alphabetical' }, + orderDirection: 'desc', + size: 10, + }, + sourceField: 'dest', + } as TermsIndexPatternColumn, + sum: { + label: 'Sum of bytes', + dataType: 'number', + isBucketed: false, + operationType: 'sum', + sourceField: 'bytes', + } as GenericIndexPatternColumn, + median: { + label: 'Median of bytes', + dataType: 'number', + isBucketed: false, + + // Private + operationType: 'median', + sourceField: 'bytes', + } as GenericIndexPatternColumn, + uniqueCount: { + label: 'Unique count of bytes', + dataType: 'number', + isBucketed: false, + sourceField: 'bytes', + operationType: 'unique_count', + } as GenericIndexPatternColumn, +}; + +export const mockedLayers: Record IndexPatternLayer> = { + singleColumnLayer: (id = 'col1') => ({ + indexPatternId: 'first', + columnOrder: [id], + columns: { + [id]: mockedColumns.dateHistogram, + }, + incompleteColumns: {}, + }), + doubleColumnLayer: (id1 = 'col1', id2 = 'col2') => ({ + indexPatternId: 'first', + columnOrder: [id1, id2], + columns: { + [id1]: mockedColumns.dateHistogram, + [id2]: mockedColumns.terms, + }, + incompleteColumns: {}, + }), + multipleColumnsLayer: (id1 = 'col1', id2 = 'col2', id3 = 'col3', id4 = 'col4') => ({ + indexPatternId: 'first', + columnOrder: [id1, id2, id3, id4], + columns: { + [id1]: mockedColumns.dateHistogram, + [id2]: mockedColumns.terms, + [id3]: mockedColumns.terms2, + [id4]: mockedColumns.median, + }, + }), + emptyLayer: () => ({ + indexPatternId: 'first', + columnOrder: [], + columns: {}, + }), +}; + +export const mockedDraggedField = { + field: { type: 'number', name: 'bytes', aggregatable: true }, + indexPatternId: 'first', + id: 'bar', + humanData: { label: 'Label' }, +}; + +export const mockedDndOperations = { + notFiltering: { + layerId: 'first', + groupId: 'a', + filterOperations: () => true, + columnId: 'col1', + id: 'col1', + humanData: { label: 'Column 1' }, + }, + metric: { + layerId: 'first', + groupId: 'a', + columnId: 'col1', + filterOperations: (op: OperationMetadata) => !op.isBucketed, + id: 'col1', + humanData: { label: 'Column 1' }, + }, + numericalOnly: { + layerId: 'first', + groupId: 'a', + columnId: 'col1', + filterOperations: (op: OperationMetadata) => op.dataType === 'number', + id: 'col1', + humanData: { label: 'Column 1' }, + }, + bucket: { + columnId: 'col2', + groupId: 'b', + layerId: 'first', + id: 'col2', + humanData: { label: 'Column 2' }, + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + staticValue: { + columnId: 'col1', + groupId: 'b', + layerId: 'first', + id: 'col1', + humanData: { label: 'Column 2' }, + filterOperations: (op: OperationMetadata) => !!op.isStaticValue, + }, + bucket2: { + columnId: 'col3', + groupId: 'b', + layerId: 'first', + id: 'col3', + humanData: { + label: '', + }, + }, + metricC: { + columnId: 'col4', + groupId: 'c', + layerId: 'first', + id: 'col4', + humanData: { + label: '', + }, + filterOperations: (op: OperationMetadata) => !op.isBucketed, + }, +}; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.test.ts new file mode 100644 index 0000000000000..12acf46c58380 --- /dev/null +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.test.ts @@ -0,0 +1,2259 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { onDrop } from './on_drop_handler'; +import { IndexPatternPrivateState } from '../../types'; +import { OperationMetadata, DropType, DatasourceDimensionDropHandlerProps } from '../../../types'; +import { FormulaIndexPatternColumn, MedianIndexPatternColumn } from '../../operations'; +import { generateId } from '../../../id_generator'; +import { + mockDataViews, + mockedLayers, + mockedDraggedField, + mockedDndOperations, + mockedColumns, +} from './mocks'; + +jest.mock('../../../id_generator'); + +const dimensionGroups = [ + { + accessors: [], + groupId: 'a', + supportsMoreColumns: true, + hideGrouping: true, + groupLabel: '', + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + { + accessors: [{ columnId: 'col1' }, { columnId: 'col2' }, { columnId: 'col3' }], + groupId: 'b', + supportsMoreColumns: true, + hideGrouping: true, + groupLabel: '', + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + { + accessors: [{ columnId: 'col4' }], + groupId: 'c', + supportsMoreColumns: true, + hideGrouping: true, + groupLabel: '', + filterOperations: (op: OperationMetadata) => op.isBucketed === false, + }, +]; + +function getStateWithMultiFieldColumn(state: IndexPatternPrivateState) { + return { + ...state, + layers: { + ...state.layers, + first: { + ...state.layers.first, + columns: { + col1: mockedColumns.terms2, + }, + }, + }, + }; +} + +describe('IndexPatternDimensionEditorPanel: onDrop', () => { + let state: IndexPatternPrivateState; + let setState: jest.Mock; + let defaultProps: DatasourceDimensionDropHandlerProps; + + beforeEach(() => { + state = { + indexPatternRefs: [], + indexPatterns: mockDataViews(), + currentIndexPatternId: 'first', + isFirstExistenceFetch: false, + existingFields: { + first: { + timestamp: true, + bytes: true, + memory: true, + source: true, + }, + }, + layers: { + first: mockedLayers.singleColumnLayer(), + second: mockedLayers.emptyLayer(), + }, + }; + + setState = jest.fn(); + + defaultProps = { + dropType: 'reorder', + source: { name: 'bar', id: 'bar', humanData: { label: 'Label' } }, + target: mockedDndOperations.notFiltering, + state, + setState, + dimensionGroups: [], + }; + + jest.clearAllMocks(); + }); + + describe('dropping a field', () => { + it('updates a column when a field is dropped', () => { + onDrop({ + ...defaultProps, + source: mockedDraggedField, + dropType: 'field_replace', + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...state, + layers: { + ...state.layers, + first: expect.objectContaining({ + columns: expect.objectContaining({ + col1: expect.objectContaining({ + dataType: 'number', + sourceField: mockedDraggedField.field.name, + }), + }), + }), + }, + }); + }); + it('selects the specific operation that was valid on drop', () => { + onDrop({ + ...defaultProps, + source: mockedDraggedField, + dropType: 'field_replace', + target: { + ...defaultProps.target, + filterOperations: (op: OperationMetadata) => op.isBucketed, + columnId: 'col2', + }, + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...state, + layers: { + ...state.layers, + first: { + ...state.layers.first, + columnOrder: ['col1', 'col2'], + columns: { + ...state.layers.first.columns, + col2: expect.objectContaining({ + dataType: 'number', + sourceField: mockedDraggedField.field.name, + }), + }, + }, + }, + }); + }); + it('keeps the operation when dropping a different compatible field', () => { + onDrop({ + ...defaultProps, + source: { + humanData: { label: 'Label1' }, + field: { name: 'memory', type: 'number', aggregatable: true }, + indexPatternId: 'first', + id: '1', + }, + state: { + ...state, + layers: { + ...state.layers, + first: { + indexPatternId: 'first', + columnOrder: ['col1'], + columns: { + col1: mockedColumns.sum, + }, + }, + }, + }, + dropType: 'field_replace', + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...state, + layers: { + ...state.layers, + first: expect.objectContaining({ + columns: expect.objectContaining({ + col1: expect.objectContaining({ + operationType: 'sum', + dataType: 'number', + sourceField: 'memory', + }), + }), + }), + }, + }); + }); + it('appends the dropped column when a field is dropped', () => { + onDrop({ + ...defaultProps, + source: mockedDraggedField, + dropType: 'field_replace', + target: { + ...defaultProps.target, + columnId: 'col2', + filterOperations: (op: OperationMetadata) => op.dataType === 'number', + }, + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...state, + layers: { + ...state.layers, + first: { + ...state.layers.first, + columnOrder: ['col1', 'col2'], + columns: { + ...state.layers.first.columns, + col2: expect.objectContaining({ + dataType: 'number', + sourceField: mockedDraggedField.field.name, + }), + }, + }, + }, + }); + }); + it('dimensionGroups are defined - appends the dropped column in the right place when a field is dropped', () => { + const testState = { ...state }; + testState.layers.first = { ...mockedLayers.multipleColumnsLayer() }; + // config: + // a: + // b: col1, col2, col3 + // c: col4 + // dragging field into newCol in group a + + onDrop({ + ...defaultProps, + source: mockedDraggedField, + dimensionGroups, + dropType: 'field_add', + target: { + ...defaultProps.target, + filterOperations: (op: OperationMetadata) => op.dataType === 'number', + groupId: 'a', + columnId: 'newCol', + }, + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['newCol', 'col1', 'col2', 'col3', 'col4'], + columns: { + newCol: expect.objectContaining({ + dataType: 'number', + sourceField: mockedDraggedField.field.name, + }), + col1: testState.layers.first.columns.col1, + col2: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + col4: testState.layers.first.columns.col4, + }, + incompleteColumns: {}, + }, + }, + }); + }); + + it('appends the new field to the column that supports multiple fields when a field is dropped', () => { + state = getStateWithMultiFieldColumn(state); + onDrop({ + ...defaultProps, + state, + source: mockedDraggedField, + dropType: 'field_combine', + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...state, + layers: { + ...state.layers, + first: expect.objectContaining({ + columns: expect.objectContaining({ + col1: expect.objectContaining({ + dataType: 'string', + sourceField: 'dest', + params: expect.objectContaining({ + secondaryFields: [mockedDraggedField.field.name], + }), + }), + }), + }), + }, + }); + }); + }); + + describe('dropping a dimension', () => { + it('sets correct order in group for metric and bucket columns when duplicating a column in group', () => { + const testState: IndexPatternPrivateState = { + ...state, + layers: { + ...state.layers, + first: { + indexPatternId: 'first', + columnOrder: ['col1', 'col2', 'col3'], + columns: { + col1: mockedColumns.dateHistogram, + col2: mockedColumns.terms, + col3: mockedColumns.sum, + }, + }, + }, + }; + + const referenceDragging = { + columnId: 'col3', + groupId: 'a', + layerId: 'first', + id: 'col3', + humanData: { label: 'Label' }, + }; + + onDrop({ + ...defaultProps, + source: referenceDragging, + state: testState, + dropType: 'duplicate_compatible', + target: { + ...defaultProps.target, + columnId: 'newCol', + }, + }); + // metric is appended + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'col2', 'col3', 'newCol'], + columns: { + col1: testState.layers.first.columns.col1, + col2: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + newCol: testState.layers.first.columns.col3, + }, + }, + }, + }); + + const bucketDragging = { + columnId: 'col2', + groupId: 'a', + layerId: 'first', + id: 'col2', + humanData: { label: 'Label' }, + }; + + onDrop({ + ...defaultProps, + state: testState, + dropType: 'duplicate_compatible', + source: bucketDragging, + target: { + ...defaultProps.target, + columnId: 'newCol', + }, + }); + + // bucket is placed after the last existing bucket + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'col2', 'newCol', 'col3'], + columns: { + col1: testState.layers.first.columns.col1, + col2: testState.layers.first.columns.col2, + newCol: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + }, + }, + }, + }); + }); + + it('when duplicating fullReference column, the referenced columns get duplicated too', () => { + (generateId as jest.Mock).mockReturnValue(`ref1Copy`); + const testState: IndexPatternPrivateState = { + ...state, + layers: { + ...state.layers, + first: { + indexPatternId: '1', + columnOrder: ['col1', 'ref1'], + columns: { + col1: { + label: 'Test reference', + dataType: 'number', + isBucketed: false, + operationType: 'cumulative_sum', + references: ['ref1'], + }, + ref1: mockedColumns.count, + }, + }, + }, + }; + const referenceDragging = { + columnId: 'col1', + groupId: 'a', + layerId: 'first', + id: 'col1', + humanData: { label: 'Label' }, + }; + onDrop({ + ...defaultProps, + source: referenceDragging, + state: testState, + dropType: 'duplicate_compatible', + target: { + ...defaultProps.target, + columnId: 'col1Copy', + }, + }); + + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'ref1', 'ref1Copy', 'col1Copy'], + columns: { + ref1: testState.layers.first.columns.ref1, + col1: testState.layers.first.columns.col1, + ref1Copy: { ...testState.layers.first.columns.ref1 }, + col1Copy: { + ...testState.layers.first.columns.col1, + references: ['ref1Copy'], + }, + }, + }, + }, + }); + }); + + it('when duplicating fullReference column, the multiple referenced columns get duplicated too', () => { + (generateId as jest.Mock).mockReturnValueOnce(`ref1Copy`); + (generateId as jest.Mock).mockReturnValueOnce(`ref2Copy`); + const testState: IndexPatternPrivateState = { + ...state, + layers: { + ...state.layers, + first: { + indexPatternId: '1', + columnOrder: ['col1', 'ref1'], + columns: { + col1: { + label: 'Test reference', + dataType: 'number', + isBucketed: false, + operationType: 'cumulative_sum', + references: ['ref1', 'ref2'], + }, + ref1: mockedColumns.count, + ref2: mockedColumns.uniqueCount, + }, + }, + }, + }; + const metricDragging = { + columnId: 'col1', + groupId: 'a', + layerId: 'first', + id: 'col1', + humanData: { label: 'Label' }, + }; + onDrop({ + ...defaultProps, + source: metricDragging, + state: testState, + dropType: 'duplicate_compatible', + target: { + ...defaultProps.target, + columnId: 'col1Copy', + }, + }); + + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'ref1', 'ref2', 'ref1Copy', 'ref2Copy', 'col1Copy'], + columns: { + ref1: testState.layers.first.columns.ref1, + ref2: testState.layers.first.columns.ref2, + col1: testState.layers.first.columns.col1, + ref2Copy: { ...testState.layers.first.columns.ref2 }, + ref1Copy: { ...testState.layers.first.columns.ref1 }, + col1Copy: { + ...testState.layers.first.columns.col1, + references: ['ref1Copy', 'ref2Copy'], + }, + }, + }, + }, + }); + }); + + it('when duplicating fullReference column, the referenced columns get duplicated', () => { + (generateId as jest.Mock).mockReturnValueOnce(`ref1Copy`); + (generateId as jest.Mock).mockReturnValueOnce(`ref2Copy`); + const testState: IndexPatternPrivateState = { + ...state, + layers: { + ...state.layers, + first: { + indexPatternId: '1', + columnOrder: ['ref2', 'ref1', 'col1'], + columns: { + col1: { + label: 'Test reference', + dataType: 'number', + isBucketed: false, + operationType: 'cumulative_sum', + references: ['ref1', 'ref2'], + }, + ref1: mockedColumns.count, + ref2: { + label: 'Unique count of bytes', + dataType: 'number', + isBucketed: false, + sourceField: 'bytes', + operationType: 'unique_count', + }, + }, + }, + }, + }; + const refDragging = { + columnId: 'col1', + groupId: 'a', + layerId: 'first', + id: 'col1', + humanData: { label: 'Label' }, + }; + onDrop({ + ...defaultProps, + source: refDragging, + state: testState, + dropType: 'duplicate_compatible', + target: { + ...defaultProps.target, + columnId: 'col1Copy', + }, + }); + + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['ref2', 'ref1', 'col1', 'ref1Copy', 'ref2Copy', 'col1Copy'], + columns: { + ref1: testState.layers.first.columns.ref1, + ref2: testState.layers.first.columns.ref2, + col1: testState.layers.first.columns.col1, + ref2Copy: { ...testState.layers.first.columns.ref2 }, + ref1Copy: { + ...testState.layers.first.columns.ref1, + }, + col1Copy: { + ...testState.layers.first.columns.col1, + references: ['ref1Copy', 'ref2Copy'], + }, + }, + }, + }, + }); + }); + + it('sets correct order in group when reordering a column in group', () => { + const testState = { + ...state, + layers: { + ...state.layers, + first: { + indexPatternId: 'first', + columnOrder: ['col1', 'col2', 'col3'], + columns: { + col1: mockedColumns.dateHistogram, + col2: mockedColumns.terms, + col3: mockedColumns.terms2, + }, + }, + }, + }; + + const defaultReorderDropParams = { + ...defaultProps, + target: { + ...defaultProps.target, + filterOperations: (op: OperationMetadata) => op.dataType === 'number', + }, + source: mockedDndOperations.metric, + state: testState, + dropType: 'reorder' as DropType, + }; + + const stateWithColumnOrder = (columnOrder: string[]) => { + return { + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder, + columns: { + ...testState.layers.first.columns, + }, + }, + }, + }; + }; + + // first element to last + onDrop({ + ...defaultReorderDropParams, + target: { + ...defaultReorderDropParams.target, + columnId: 'col3', + }, + }); + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith(stateWithColumnOrder(['col2', 'col3', 'col1'])); + + // last element to first + onDrop({ + ...defaultReorderDropParams, + target: { + ...defaultReorderDropParams.target, + columnId: 'col1', + }, + source: { + humanData: { label: 'Label1' }, + columnId: 'col3', + groupId: 'a', + layerId: 'first', + id: 'col3', + }, + }); + expect(setState).toBeCalledTimes(2); + expect(setState).toHaveBeenCalledWith(stateWithColumnOrder(['col3', 'col1', 'col2'])); + + // middle column to first + onDrop({ + ...defaultReorderDropParams, + target: { + ...defaultReorderDropParams.target, + columnId: 'col1', + }, + source: { + humanData: { label: 'Label1' }, + columnId: 'col2', + groupId: 'a', + layerId: 'first', + id: 'col2', + }, + }); + expect(setState).toBeCalledTimes(3); + expect(setState).toHaveBeenCalledWith(stateWithColumnOrder(['col2', 'col1', 'col3'])); + + // middle column to last + onDrop({ + ...defaultReorderDropParams, + target: { + ...defaultReorderDropParams.target, + columnId: 'col3', + }, + source: { + humanData: { label: 'Label1' }, + columnId: 'col2', + groupId: 'a', + layerId: 'first', + id: 'col2', + }, + }); + expect(setState).toBeCalledTimes(4); + expect(setState).toHaveBeenCalledWith(stateWithColumnOrder(['col1', 'col3', 'col2'])); + }); + + it('updates the column id when moving an operation to an empty dimension', () => { + onDrop({ + ...defaultProps, + source: mockedDndOperations.metric, + target: { + ...defaultProps.target, + columnId: 'col2', + }, + dropType: 'move_compatible', + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...state, + layers: { + ...state.layers, + first: { + ...state.layers.first, + columnOrder: ['col2'], + columns: { + col2: state.layers.first.columns.col1, + }, + }, + }, + }); + }); + + it('replaces an operation when moving to a populated dimension', () => { + const testState = { ...state }; + testState.layers.first = { + indexPatternId: 'first', + columnOrder: ['col1', 'col2', 'col3'], + columns: { + col1: testState.layers.first.columns.col1, + col2: mockedColumns.terms, + col3: mockedColumns.count, + }, + }; + + onDrop({ + ...defaultProps, + source: mockedDndOperations.bucket, + state: testState, + dropType: 'replace_compatible', + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + incompleteColumns: {}, + columnOrder: ['col1', 'col3'], + columns: { + col1: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + }, + }, + }, + }); + }); + + it('when combine compatible columns should append dropped column fields into the target one', () => { + state = getStateWithMultiFieldColumn(state); + state.layers.first.columns = { + ...state.layers.first.columns, + col2: mockedColumns.terms, + }; + onDrop({ + ...defaultProps, + state, + source: { + columnId: 'col2', + groupId: 'a', + layerId: 'first', + id: 'col2', + humanData: { label: 'Label' }, + }, + dropType: 'combine_compatible', + target: { + ...defaultProps.target, + columnId: 'col1', + groupId: 'a', + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...state, + layers: { + ...state.layers, + first: expect.objectContaining({ + columns: expect.objectContaining({ + col1: expect.objectContaining({ + dataType: 'string', + sourceField: 'dest', + params: expect.objectContaining({ secondaryFields: ['src'] }), + }), + }), + }), + }, + }); + }); + + describe('dimension group aware ordering and copying', () => { + let testState: IndexPatternPrivateState; + beforeEach(() => { + testState = { ...state }; + testState.layers.first = { ...mockedLayers.multipleColumnsLayer() }; + }); + + it('respects groups on moving operations between compatible groups', () => { + // config: + // a: + // b: col1, col2, col3 + // c: col4 + // dragging col2 into newCol in group a + onDrop({ + ...defaultProps, + target: { + ...defaultProps.target, + columnId: 'newCol', + groupId: 'a', + }, + source: mockedDndOperations.bucket, + state: testState, + dimensionGroups, + dropType: 'move_compatible', + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + incompleteColumns: {}, + columnOrder: ['newCol', 'col1', 'col3', 'col4'], + columns: { + newCol: testState.layers.first.columns.col2, + col1: testState.layers.first.columns.col1, + col3: testState.layers.first.columns.col3, + col4: testState.layers.first.columns.col4, + }, + }, + }, + }); + }); + + it('respects groups on duplicating operations between compatible groups', () => { + // config: + // a: + // b: col1, col2, col3 + // c: col4 + // dragging col2 into newCol in group a + onDrop({ + ...defaultProps, + target: { + ...defaultProps.target, + columnId: 'newCol', + groupId: 'a', + }, + source: mockedDndOperations.bucket, + state: testState, + dimensionGroups, + dropType: 'duplicate_compatible', + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['newCol', 'col1', 'col2', 'col3', 'col4'], + columns: { + newCol: testState.layers.first.columns.col2, + col1: testState.layers.first.columns.col1, + col2: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + col4: testState.layers.first.columns.col4, + }, + }, + }, + }); + }); + + it('respects groups on moving operations between compatible groups with overwrite', () => { + // config: + // a: col1, + // b: col2, col3 + // c: col4 + // dragging col3 onto col1 in group a + onDrop({ + ...defaultProps, + target: { + ...defaultProps.target, + columnId: 'col1', + groupId: 'a', + }, + source: mockedDndOperations.bucket2, + state: testState, + dimensionGroups: [ + { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, + { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, + { ...dimensionGroups[2] }, + ], + dropType: 'move_compatible', + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + incompleteColumns: {}, + columnOrder: ['col1', 'col2', 'col4'], + columns: { + col1: testState.layers.first.columns.col3, + col2: testState.layers.first.columns.col2, + col4: testState.layers.first.columns.col4, + }, + }, + }, + }); + }); + + it('respects groups on moving operations if some columns are not listed in groups', () => { + // config: + // a: col1, + // b: col2, col3 + // c: col4 + // col5, col6 not in visualization groups + // dragging col3 onto col1 in group a + onDrop({ + ...defaultProps, + source: mockedDndOperations.bucket2, + target: { + ...defaultProps.target, + columnId: 'col1', + groupId: 'a', + }, + state: { + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'col2', 'col3', 'col4', 'col5', 'col6'], + columns: { + ...testState.layers.first.columns, + col5: { + dataType: 'number', + operationType: 'count', + label: '', + isBucketed: false, + sourceField: '___records___', + customLabel: true, + }, + col6: { + dataType: 'number', + operationType: 'count', + label: '', + isBucketed: false, + sourceField: '___records___', + customLabel: true, + }, + }, + }, + }, + }, + dimensionGroups: [ + { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, + { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, + { ...dimensionGroups[2] }, + ], + dropType: 'move_compatible', + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + incompleteColumns: {}, + columnOrder: ['col1', 'col2', 'col4', 'col5', 'col6'], + columns: { + col1: testState.layers.first.columns.col3, + col2: testState.layers.first.columns.col2, + col4: testState.layers.first.columns.col4, + col5: expect.objectContaining({ + dataType: 'number', + operationType: 'count', + label: '', + isBucketed: false, + sourceField: '___records___', + }), + col6: expect.objectContaining({ + dataType: 'number', + operationType: 'count', + label: '', + isBucketed: false, + sourceField: '___records___', + }), + }, + }, + }, + }); + }); + + it('respects groups on duplicating operations between compatible groups with overwrite', () => { + // config: + // a: col1, + // b: col2, col3 + // c: col4 + // dragging col3 onto col1 in group a + + onDrop({ + ...defaultProps, + source: mockedDndOperations.bucket2, + state: testState, + target: { + ...defaultProps.target, + columnId: 'col1', + groupId: 'a', + }, + dimensionGroups: [ + { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, + { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, + { ...dimensionGroups[2] }, + ], + dropType: 'duplicate_compatible', + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'col2', 'col3', 'col4'], + columns: { + col1: testState.layers.first.columns.col3, + col2: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + col4: testState.layers.first.columns.col4, + }, + }, + }, + }); + }); + + it('moves newly created dimension to the bottom of the current group', () => { + // config: + // a: col1 + // b: col2, col3 + // c: col4 + // dragging col1 into newCol in group b + onDrop({ + ...defaultProps, + dropType: 'move_compatible', + source: mockedDndOperations.metric, + state: testState, + target: { + ...defaultProps.target, + columnId: 'newCol', + groupId: 'b', + }, + dimensionGroups: [ + { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, + { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, + { ...dimensionGroups[2] }, + ], + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + incompleteColumns: {}, + columnOrder: ['col2', 'col3', 'newCol', 'col4'], + columns: { + newCol: testState.layers.first.columns.col1, + col2: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + col4: testState.layers.first.columns.col4, + }, + }, + }, + }); + }); + + it('copies column to the bottom of the current group', () => { + // config: + // a: col1 + // b: col2, col3 + // c: col4 + // copying col1 within group a + onDrop({ + ...defaultProps, + dropType: 'duplicate_compatible', + target: { + ...defaultProps.target, + columnId: 'newCol', + groupId: 'a', + }, + source: mockedDndOperations.metric, + state: testState, + dimensionGroups: [ + { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, + { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, + { ...dimensionGroups[2] }, + ], + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'newCol', 'col2', 'col3', 'col4'], + columns: { + col1: testState.layers.first.columns.col1, + newCol: testState.layers.first.columns.col1, + col2: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + col4: testState.layers.first.columns.col4, + }, + }, + }, + }); + }); + + it('appends the dropped column in the right place respecting custom nestingOrder', () => { + // config: + // a: + // b: col1, col2, col3 + // c: col4 + // dragging field into newCol in group a + + onDrop({ + ...defaultProps, + source: mockedDraggedField, + target: { + ...defaultProps.target, + columnId: 'newCol', + groupId: 'a', + filterOperations: (op: OperationMetadata) => op.dataType === 'number', + }, + dimensionGroups: [ + // a and b are ordered in reverse visually, but nesting order keeps them in place for column order + { ...dimensionGroups[1], nestingOrder: 1 }, + { ...dimensionGroups[0], nestingOrder: 0 }, + { ...dimensionGroups[2] }, + ], + dropType: 'field_add', + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...state, + layers: { + ...state.layers, + first: { + ...testState.layers.first, + columnOrder: ['newCol', 'col1', 'col2', 'col3', 'col4'], + columns: { + newCol: expect.objectContaining({ + dataType: 'number', + sourceField: mockedDraggedField.field.name, + }), + col1: testState.layers.first.columns.col1, + col2: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + col4: testState.layers.first.columns.col4, + }, + incompleteColumns: {}, + }, + }, + }); + }); + + it('moves incompatible column to the bottom of the target group', () => { + // config: + // a: col1 + // b: col2, col3 + // c: col4 + // dragging col4 into newCol in group a + + onDrop({ + ...defaultProps, + dropType: 'move_incompatible', + source: mockedDndOperations.metricC, + state: testState, + target: { + ...defaultProps.target, + columnId: 'newCol', + groupId: 'a', + }, + dimensionGroups: [ + { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, + { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, + { ...dimensionGroups[2] }, + ], + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'newCol', 'col2', 'col3'], + columns: { + col1: testState.layers.first.columns.col1, + newCol: expect.objectContaining({ + sourceField: (testState.layers.first.columns.col4 as MedianIndexPatternColumn) + .sourceField, + }), + col2: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + }, + incompleteColumns: {}, + }, + }, + }); + }); + + it('copies incompatible column to the bottom of the target group', () => { + // config: + // a: col1 + // b: col2, col3 + // c: col4 + // dragging col4 into newCol in group a + + onDrop({ + ...defaultProps, + dropType: 'duplicate_incompatible', + source: mockedDndOperations.metricC, + state: testState, + target: { + ...defaultProps.target, + columnId: 'newCol', + groupId: 'a', + }, + dimensionGroups: [ + { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, + { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, + { ...dimensionGroups[2] }, + ], + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'newCol', 'col2', 'col3', 'col4'], + columns: { + col1: testState.layers.first.columns.col1, + newCol: expect.objectContaining({ + sourceField: (testState.layers.first.columns.col4 as MedianIndexPatternColumn) + .sourceField, + }), + col2: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + col4: testState.layers.first.columns.col4, + }, + incompleteColumns: {}, + }, + }, + }); + }); + + it('moves incompatible column with overwrite keeping order of target column', () => { + // config: + // a: col1 + // b: col2, col3 + // c: col4 + // dragging col4 into col2 in group b + + onDrop({ + ...defaultProps, + dropType: 'move_incompatible', + source: mockedDndOperations.metricC, + state: testState, + target: { + ...defaultProps.target, + columnId: 'col2', + groupId: 'b', + }, + dimensionGroups: [ + { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, + { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, + { ...dimensionGroups[2] }, + ], + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'col2', 'col3'], + columns: { + col1: testState.layers.first.columns.col1, + col2: { + isBucketed: true, + label: 'Top 10 values of bytes', + operationType: 'terms', + sourceField: 'bytes', + dataType: 'number', + params: { + orderBy: { + type: 'alphabetical', + }, + orderDirection: 'desc', + size: 10, + parentFormat: { id: 'terms' }, + }, + }, + col3: testState.layers.first.columns.col3, + }, + incompleteColumns: {}, + }, + }, + }); + }); + + it('when swapping compatibly, columns carry order', () => { + // config: + // a: col1 + // b: col2, col3 + // c: col4 + // dragging col4 into col1 + + onDrop({ + ...defaultProps, + target: { + ...defaultProps.target, + columnId: 'col1', + groupId: 'a', + }, + source: mockedDndOperations.metricC, + dropType: 'swap_compatible', + state: testState, + dimensionGroups: [ + { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, + { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, + { ...dimensionGroups[2] }, + ], + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'col2', 'col3', 'col4'], + columns: { + col1: testState.layers.first.columns.col4, + col2: testState.layers.first.columns.col2, + col3: testState.layers.first.columns.col3, + col4: testState.layers.first.columns.col1, + }, + }, + }, + }); + }); + + it('when swapping incompatibly, newly created columns take order from the columns they replace', () => { + // config: + // a: col1 + // b: col2, col3 + // c: col4 + // dragging col4 into col2 + + onDrop({ + ...defaultProps, + target: { + ...defaultProps.target, + columnId: 'col2', + groupId: 'b', + }, + dropType: 'swap_incompatible', + source: mockedDndOperations.metricC, + state: testState, + dimensionGroups: [ + { ...dimensionGroups[0], accessors: [{ columnId: 'col1' }] }, + { ...dimensionGroups[1], accessors: [{ columnId: 'col2' }, { columnId: 'col3' }] }, + { ...dimensionGroups[2] }, + ], + }); + + expect(setState).toBeCalledTimes(1); + expect(setState).toHaveBeenCalledWith({ + ...testState, + layers: { + ...testState.layers, + first: { + ...testState.layers.first, + columnOrder: ['col1', 'col2', 'col3', 'col4'], + columns: { + col1: testState.layers.first.columns.col1, + col2: { + isBucketed: true, + label: 'Top 10 values of bytes', + operationType: 'terms', + sourceField: 'bytes', + dataType: 'number', + params: { + orderBy: { + type: 'alphabetical', + }, + orderDirection: 'desc', + parentFormat: { id: 'terms' }, + size: 10, + }, + }, + col3: testState.layers.first.columns.col3, + col4: { + isBucketed: false, + label: 'Unique count of src', + filter: undefined, + operationType: 'unique_count', + sourceField: 'src', + timeShift: undefined, + dataType: 'number', + params: { + emptyAsNull: true, + }, + scale: 'ratio', + }, + }, + incompleteColumns: {}, + }, + }, + }); + }); + }); + + describe('onDrop between layers', () => { + const defaultDimensionGroups = [ + { + groupId: 'x', + groupLabel: 'Horizontal axis', + accessors: [], + supportsMoreColumns: true, + dataTestSubj: 'lnsXY_xDimensionPanel', + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + { + groupId: 'y', + groupLabel: 'Vertical axis', + accessors: [], + supportsMoreColumns: true, + required: true, + dataTestSubj: 'lnsXY_yDimensionPanel', + enableDimensionEditor: true, + filterOperations: (op: OperationMetadata) => !op.isBucketed, + }, + { + groupId: 'breakdown', + groupLabel: 'Break down by', + accessors: [], + supportsMoreColumns: true, + dataTestSubj: 'lnsXY_splitDimensionPanel', + required: false, + enableDimensionEditor: true, + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + ]; + describe('simple operations', () => { + let props: DatasourceDimensionDropHandlerProps; + beforeEach(() => { + setState = jest.fn(); + + props = { + state: { + indexPatternRefs: [], + indexPatterns: mockDataViews(), + currentIndexPatternId: 'first', + isFirstExistenceFetch: false, + existingFields: { + first: { + timestamp: true, + bytes: true, + memory: true, + source: true, + }, + }, + layers: { + first: mockedLayers.singleColumnLayer(), + second: mockedLayers.multipleColumnsLayer('col2', 'col3', 'col4', 'col5'), + }, + }, + setState: jest.fn(), + source: { + id: 'col1', + humanData: { label: '2' }, + columnId: 'col1', + groupId: 'x', + layerId: 'first', + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + target: { + filterOperations: (op: OperationMetadata) => op.isBucketed, + columnId: 'newCol', + groupId: 'x', + layerId: 'second', + }, + dimensionGroups: defaultDimensionGroups, + dropType: 'move_compatible', + }; + jest.clearAllMocks(); + }); + it('doesnt allow dropping for different data views', () => { + props.state.layers.second.indexPatternId = 'second'; + expect(onDrop(props)).toEqual(false); + expect(props.setState).not.toHaveBeenCalled(); + }); + it('move_compatible; allows dropping to the compatible group in different layer to empty column', () => { + expect(onDrop(props)).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + first: { + ...mockedLayers.emptyLayer(), + incompleteColumns: {}, + }, + second: { + columnOrder: ['col2', 'col3', 'col4', 'newCol', 'col5'], + columns: { + ...props.state.layers.second.columns, + newCol: mockedColumns.dateHistogram, + }, + indexPatternId: 'first', + }, + }, + }); + }); + it('duplicate_compatible: allows dropping to the compatible group in different layer to empty column', () => { + expect(onDrop({ ...props, dropType: 'duplicate_compatible' })).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + second: { + columnOrder: ['col2', 'col3', 'col4', 'newCol', 'col5'], + columns: { + ...props.state.layers.second.columns, + newCol: mockedColumns.dateHistogram, + }, + indexPatternId: 'first', + }, + }, + }); + }); + it('swap_compatible: allows dropping to compatible group to replace an existing column', () => { + props = { + ...props, + + target: { + ...props.target, + columnId: 'col4', + groupId: 'breakdown', + layerId: 'second', + }, + dropType: 'swap_compatible', + }; + + expect(onDrop(props)).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + first: { + ...props.state.layers.first, + columns: { + col1: props.state.layers.second.columns.col4, + }, + }, + second: { + ...props.state.layers.second, + columns: { + ...props.state.layers.second.columns, + col4: props.state.layers.first.columns.col1, + }, + }, + }, + }); + }); + it('replace_compatible: allows dropping to compatible group to replace an existing column', () => { + props = { + ...props, + target: { + ...props.target, + columnId: 'col4', + groupId: 'breakdown', + layerId: 'second', + }, + dropType: 'replace_compatible', + }; + expect(onDrop(props)).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + first: { + ...mockedLayers.emptyLayer(), + incompleteColumns: {}, + }, + second: { + columnOrder: ['col2', 'col3', 'col4', 'col5'], + columns: { + ...props.state.layers.second.columns, + col4: mockedColumns.dateHistogram, + }, + indexPatternId: 'first', + }, + }, + }); + }); + it('replace_duplicate_compatible: allows dropping to compatible group to replace an existing column', () => { + props = { + ...props, + target: { + ...props.target, + columnId: 'col4', + groupId: 'breakdown', + layerId: 'second', + }, + dropType: 'replace_duplicate_compatible', + }; + + expect(onDrop(props)).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + second: { + columnOrder: ['col2', 'col3', 'col4', 'col5'], + columns: { + ...props.state.layers.second.columns, + col4: mockedColumns.dateHistogram, + }, + indexPatternId: 'first', + }, + }, + }); + }); + it('replace_duplicate_incompatible: allows dropping to compatible group to replace an existing column', () => { + props = { + ...props, + target: { + ...props.target, + columnId: 'col5', + groupId: 'y', + layerId: 'second', + filterOperations: (op) => !op.isBucketed, + }, + dropType: 'replace_duplicate_incompatible', + }; + + expect(onDrop(props)).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + second: { + columnOrder: ['col2', 'col3', 'col4', 'col5'], + columns: { + ...props.state.layers.second.columns, + col5: { + dataType: 'date', + isBucketed: false, + label: 'Minimum of timestampLabel', + operationType: 'min', + params: { + emptyAsNull: true, + }, + scale: 'ratio', + sourceField: 'timestamp', + }, + }, + incompleteColumns: {}, + indexPatternId: 'first', + }, + }, + }); + }); + it('replace_incompatible: allows dropping to compatible group to replace an existing column', () => { + props = { + ...props, + target: { + ...props.target, + columnId: 'col5', + groupId: 'y', + layerId: 'second', + filterOperations: (op) => !op.isBucketed, + }, + dropType: 'replace_incompatible', + }; + + expect(onDrop(props)).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + first: { + ...mockedLayers.emptyLayer(), + incompleteColumns: {}, + }, + second: { + columnOrder: ['col2', 'col3', 'col4', 'col5'], + columns: { + ...props.state.layers.second.columns, + col5: { + dataType: 'date', + isBucketed: false, + label: 'Minimum of timestampLabel', + operationType: 'min', + params: { + emptyAsNull: true, + }, + scale: 'ratio', + sourceField: 'timestamp', + }, + }, + incompleteColumns: {}, + indexPatternId: 'first', + }, + }, + }); + }); + it('move_incompatible: allows dropping to compatible group to replace an existing column', () => { + props = { + ...props, + target: { + ...props.target, + columnId: 'newCol', + groupId: 'y', + layerId: 'second', + filterOperations: (op) => !op.isBucketed, + }, + dropType: 'move_incompatible', + }; + + expect(onDrop(props)).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + first: { + ...mockedLayers.emptyLayer(), + incompleteColumns: {}, + }, + second: { + columnOrder: ['col2', 'col3', 'col4', 'col5', 'newCol'], + columns: { + ...props.state.layers.second.columns, + newCol: { + dataType: 'date', + isBucketed: false, + label: 'Minimum of timestampLabel', + operationType: 'min', + params: { + emptyAsNull: true, + }, + scale: 'ratio', + sourceField: 'timestamp', + }, + }, + incompleteColumns: {}, + indexPatternId: 'first', + }, + }, + }); + }); + it('duplicate_incompatible: allows dropping to compatible group to replace an existing column', () => { + props = { + ...props, + target: { + ...props.target, + columnId: 'newCol', + groupId: 'y', + layerId: 'second', + filterOperations: (op) => !op.isBucketed, + }, + dropType: 'duplicate_incompatible', + }; + + expect(onDrop(props)).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + second: { + columnOrder: ['col2', 'col3', 'col4', 'col5', 'newCol'], + columns: { + ...props.state.layers.second.columns, + newCol: { + dataType: 'date', + isBucketed: false, + label: 'Minimum of timestampLabel', + operationType: 'min', + params: { + emptyAsNull: true, + }, + scale: 'ratio', + sourceField: 'timestamp', + }, + }, + incompleteColumns: {}, + indexPatternId: 'first', + }, + }, + }); + }); + it('swap_incompatible: allows dropping to compatible group to replace an existing column', () => { + props = { + ...props, + target: { + ...props.target, + columnId: 'col5', + groupId: 'y', + layerId: 'second', + filterOperations: (op) => !op.isBucketed, + }, + dropType: 'swap_incompatible', + }; + + expect(onDrop(props)).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + first: { + ...props.state.layers.first, + columns: { + ...props.state.layers.first.columns, + col1: { + dataType: 'number', + isBucketed: true, + label: 'bytes', + operationType: 'range', + params: { + includeEmptyRows: true, + maxBars: 'auto', + ranges: [ + { + from: 0, + label: '', + to: 1000, + }, + ], + type: 'histogram', + }, + scale: 'interval', + sourceField: 'bytes', + }, + }, + }, + second: { + columnOrder: ['col2', 'col3', 'col4', 'col5'], + columns: { + ...props.state.layers.second.columns, + col5: { + dataType: 'date', + isBucketed: false, + label: 'Minimum of timestampLabel', + operationType: 'min', + params: { + emptyAsNull: true, + }, + scale: 'ratio', + sourceField: 'timestamp', + }, + }, + incompleteColumns: {}, + indexPatternId: 'first', + }, + }, + }); + }); + it('combine_compatible: allows dropping to combine to multiterms', () => { + onDrop({ + ...props, + state: { + ...props.state, + layers: { + ...props.state.layers, + first: { + ...props.state.layers.first, + columns: { + terms1: mockedColumns.terms, + }, + }, + }, + }, + source: { + columnId: 'terms1', + groupId: 'a', + layerId: 'first', + id: 'terms1', + humanData: { label: 'Label' }, + }, + dropType: 'combine_compatible', + target: { + ...props.target, + columnId: 'col4', + groupId: 'a', + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + }); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + first: { ...mockedLayers.emptyLayer(), incompleteColumns: {} }, + second: { + ...props.state.layers.second, + incompleteColumns: {}, + columns: { + ...props.state.layers.second.columns, + col4: { + dataType: 'string', + isBucketed: true, + label: 'Top values of dest + 1 other', + operationType: 'terms', + params: { + orderBy: { + type: 'alphabetical', + }, + orderDirection: 'desc', + parentFormat: { + id: 'multi_terms', + }, + secondaryFields: ['src'], + size: 10, + }, + sourceField: 'dest', + }, + }, + }, + }, + }); + }); + it('combine_incompatible: allows dropping to combine to multiterms', () => { + onDrop({ + ...props, + state: { + ...props.state, + layers: { + ...props.state.layers, + first: { + ...props.state.layers.first, + columns: { + median: mockedColumns.median, + }, + }, + }, + }, + source: { + columnId: 'median', + groupId: 'x', + layerId: 'first', + id: 'median', + humanData: { label: 'Label' }, + filterOperations: (op: OperationMetadata) => !op.isBucketed, + }, + dropType: 'combine_incompatible', + target: { + ...props.target, + columnId: 'col4', + groupId: 'breakdown', + filterOperations: (op: OperationMetadata) => op.isBucketed, + }, + }); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + first: { ...mockedLayers.emptyLayer(), incompleteColumns: {} }, + second: { + ...props.state.layers.second, + incompleteColumns: {}, + columns: { + ...props.state.layers.second.columns, + col4: { + dataType: 'string', + isBucketed: true, + label: 'Top values of dest + 1 other', + operationType: 'terms', + params: { + orderBy: { + type: 'alphabetical', + }, + orderDirection: 'desc', + parentFormat: { + id: 'multi_terms', + }, + secondaryFields: ['bytes'], + size: 10, + }, + sourceField: 'dest', + }, + }, + }, + }, + }); + }); + }); + describe('references', () => { + let props: DatasourceDimensionDropHandlerProps; + beforeEach(() => { + props = { + dimensionGroups: defaultDimensionGroups, + setState: jest.fn(), + dropType: 'move_compatible', + + state: { + layers: { + first: { + indexPatternId: 'first', + columns: { + firstColumnX0: { + label: 'Part of count()', + dataType: 'number', + operationType: 'count', + isBucketed: false, + scale: 'ratio', + sourceField: '___records___', + customLabel: true, + }, + firstColumn: { + label: 'count()', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { formula: 'count()' }, + references: ['firstColumnX0'], + } as FormulaIndexPatternColumn, + }, + columnOrder: ['firstColumn', 'firstColumnX0'], + incompleteColumns: {}, + }, + second: { + indexPatternId: 'first', + columns: { + secondX0: { + label: 'Part of count()', + dataType: 'number', + operationType: 'count', + isBucketed: false, + scale: 'ratio', + sourceField: '___records___', + customLabel: true, + }, + second: { + label: 'count()', + dataType: 'number', + operationType: 'formula', + isBucketed: false, + scale: 'ratio', + params: { formula: 'count()' }, + references: ['secondX0'], + } as FormulaIndexPatternColumn, + }, + columnOrder: ['second', 'secondX0'], + }, + }, + indexPatternRefs: [], + indexPatterns: mockDataViews(), + currentIndexPatternId: 'first', + isFirstExistenceFetch: false, + existingFields: { + first: { + timestamp: true, + bytes: true, + memory: true, + source: true, + }, + }, + }, + source: { + columnId: 'firstColumn', + groupId: 'y', + layerId: 'first', + id: 'firstColumn', + humanData: { + label: 'count()', + }, + }, + target: { + columnId: 'newColumn', + groupId: 'y', + layerId: 'second', + filterOperations: (op) => !op.isBucketed, + }, + }; + + jest.clearAllMocks(); + }); + + it('move_compatible; allows dropping to the compatible group in different layer to empty column', () => { + expect(onDrop(props)).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + first: { + ...mockedLayers.emptyLayer(), + incompleteColumns: {}, + }, + second: { + columnOrder: ['second', 'secondX0', 'newColumnX0', 'newColumn'], + columns: { + ...props.state.layers.second.columns, + newColumn: { + dataType: 'number', + isBucketed: false, + label: 'count()', + operationType: 'formula', + params: { + formula: 'count()', + isFormulaBroken: false, + }, + references: ['newColumnX0'], + scale: 'ratio', + }, + newColumnX0: { + customLabel: true, + dataType: 'number', + filter: undefined, + isBucketed: false, + label: 'Part of count()', + operationType: 'count', + params: { + emptyAsNull: false, + }, + scale: 'ratio', + sourceField: '___records___', + timeScale: undefined, + timeShift: undefined, + }, + }, + indexPatternId: 'first', + }, + }, + }); + }); + it('replace_compatible: allows dropping to compatible group to replace an existing column', () => { + expect( + onDrop({ + ...props, + target: { + columnId: 'second', + groupId: 'y', + layerId: 'second', + filterOperations: (op) => !op.isBucketed, + }, + }) + ).toEqual(true); + expect(props.setState).toBeCalledTimes(1); + expect(props.setState).toHaveBeenCalledWith({ + ...props.state, + layers: { + ...props.state.layers, + first: { + ...mockedLayers.emptyLayer(), + incompleteColumns: {}, + }, + second: { + columnOrder: ['second', 'secondX0'], + columns: { + ...props.state.layers.second.columns, + second: { + dataType: 'number', + isBucketed: false, + label: 'count()', + operationType: 'formula', + params: { + formula: 'count()', + isFormulaBroken: false, + }, + references: ['secondX0'], + scale: 'ratio', + }, + secondX0: { + customLabel: true, + dataType: 'number', + filter: undefined, + isBucketed: false, + label: 'Part of count()', + operationType: 'count', + params: { + emptyAsNull: false, + }, + scale: 'ratio', + sourceField: '___records___', + timeScale: undefined, + timeShift: undefined, + }, + }, + indexPatternId: 'first', + }, + }, + }); + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.ts b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.ts index c9e806050caad..3d57e21e73387 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/droppable/on_drop_handler.ts @@ -4,7 +4,14 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { DatasourceDimensionDropHandlerProps, DraggedOperation } from '../../../types'; +import { + DatasourceDimensionDropHandlerProps, + DragDropOperation, + DropType, + isOperation, + StateSetter, + VisualizationDimensionGroupConfig, +} from '../../../types'; import { insertOrReplaceColumn, deleteColumn, @@ -14,160 +21,125 @@ import { hasOperationSupportForMultipleFields, getOperationHelperForMultipleFields, replaceColumn, + deleteColumnInLayers, } from '../../operations'; -import { mergeLayer } from '../../state_helpers'; +import { mergeLayer, mergeLayers } from '../../state_helpers'; import { isDraggedField } from '../../pure_utils'; import { getNewOperation, getField } from './get_drop_props'; -import { IndexPatternPrivateState, DraggedField } from '../../types'; +import { IndexPatternPrivateState, DraggedField, DataViewDragDropOperation } from '../../types'; import { trackUiEvent } from '../../../lens_ui_telemetry'; -type DropHandlerProps = DatasourceDimensionDropHandlerProps & { - droppedItem: T; -}; +interface DropHandlerProps { + state: IndexPatternPrivateState; + setState: StateSetter< + IndexPatternPrivateState, + { + isDimensionComplete?: boolean; + forceRender?: boolean; + } + >; + dimensionGroups: VisualizationDimensionGroupConfig[]; + dropType?: DropType; + source: T; + target: DataViewDragDropOperation; +} export function onDrop(props: DatasourceDimensionDropHandlerProps) { - const { droppedItem, dropType } = props; - - if (dropType === 'field_add' || dropType === 'field_replace' || dropType === 'field_combine') { - return operationOnDropMap[dropType]({ - ...props, - droppedItem: droppedItem as DraggedField, - }); + const { target, source, dropType, state } = props; + + if (isDraggedField(source) && isFieldDropType(dropType)) { + return onFieldDrop( + { + ...props, + target: { + ...target, + dataView: state.indexPatterns[state.layers[target.layerId].indexPatternId], + }, + source, + }, + dropType === 'field_combine' + ); } - return operationOnDropMap[dropType]({ - ...props, - droppedItem: droppedItem as DraggedOperation, - }); -} - -const operationOnDropMap = { - field_add: onFieldDrop, - field_replace: onFieldDrop, - field_combine: (props: DropHandlerProps) => onFieldDrop(props, true), - - reorder: onReorder, - - move_compatible: (props: DropHandlerProps) => onMoveCompatible(props, true), - replace_compatible: (props: DropHandlerProps) => onMoveCompatible(props, true), - duplicate_compatible: onMoveCompatible, - replace_duplicate_compatible: onMoveCompatible, - move_incompatible: (props: DropHandlerProps) => onMoveIncompatible(props, true), - replace_incompatible: (props: DropHandlerProps) => - onMoveIncompatible(props, true), - duplicate_incompatible: onMoveIncompatible, - replace_duplicate_incompatible: onMoveIncompatible, - - swap_compatible: onSwapCompatible, - swap_incompatible: onSwapIncompatible, - combine_compatible: onCombineCompatible, - combine_incompatible: onCombineCompatible, -}; - -function onCombineCompatible({ - columnId, - setState, - state, - layerId, - droppedItem, - dimensionGroups, - groupId, -}: DropHandlerProps) { - const layer = state.layers[layerId]; - const sourceId = droppedItem.columnId; - const targetId = columnId; - const indexPattern = state.indexPatterns[layer.indexPatternId]; - const sourceColumn = layer.columns[sourceId]; - const targetColumn = layer.columns[targetId]; - - // extract the field from the source column - const sourceField = getField(sourceColumn, indexPattern); - const targetField = getField(targetColumn, indexPattern); - if (!sourceField || !targetField) { + if (!isOperation(source)) { + return false; + } + const sourceDataView = state.indexPatterns[state.layers[source.layerId].indexPatternId]; + const targetDataView = state.indexPatterns[state.layers[target.layerId].indexPatternId]; + if (sourceDataView !== targetDataView) { return false; } - // pass it to the target column and delete the source column - const initialParams = { - params: - getOperationHelperForMultipleFields(targetColumn.operationType)?.({ - targetColumn, - sourceColumn, - indexPattern, - }) ?? {}, - }; - - const modifiedLayer = replaceColumn({ - layer, - columnId, - indexPattern, - op: targetColumn.operationType, - field: targetField, - visualizationGroups: dimensionGroups, - targetGroup: groupId, - initialParams, - shouldCombineField: true, - }); - const newLayer = deleteColumn({ - layer: modifiedLayer, - columnId: sourceId, - indexPattern, - }); - // Time to replace - setState( - mergeLayer({ - state, - layerId, - newLayer, - }) - ); + const operationProps = { + ...props, + target: { + ...target, + dataView: targetDataView, + }, + source: { + ...source, + dataView: sourceDataView, + }, + }; + if (dropType === 'reorder') { + return onReorder(operationProps); + } - return { deleted: sourceId }; + if (['move_compatible', 'replace_compatible'].includes(dropType)) { + return onMoveCompatible(operationProps, true); + } + if (['duplicate_compatible', 'replace_duplicate_compatible'].includes(dropType)) { + return onMoveCompatible(operationProps); + } + if (['move_incompatible', 'replace_incompatible'].includes(dropType)) { + return onMoveIncompatible(operationProps, true); + } + if (['duplicate_incompatible', 'replace_duplicate_incompatible'].includes(dropType)) { + return onMoveIncompatible(operationProps); + } + if (dropType === 'swap_compatible') { + return onSwapCompatible(operationProps); + } + if (dropType === 'swap_incompatible') { + return onSwapIncompatible(operationProps); + } + if (['combine_incompatible', 'combine_compatible'].includes(dropType)) { + return onCombine(operationProps); + } } +const isFieldDropType = (dropType: DropType) => + ['field_add', 'field_replace', 'field_combine'].includes(dropType); + function onFieldDrop(props: DropHandlerProps, shouldAddField?: boolean) { - const { - columnId, - setState, - state, - layerId, - droppedItem, - filterOperations, - groupId, - dimensionGroups, - } = props; + const { setState, state, source, target, dimensionGroups } = props; const prioritizedOperation = dimensionGroups.find( - (g) => g.groupId === groupId + (g) => g.groupId === target.groupId )?.prioritizedOperation; - const layer = state.layers[layerId]; + const layer = state.layers[target.layerId]; const indexPattern = state.indexPatterns[layer.indexPatternId]; - const targetColumn = layer.columns[columnId]; + const targetColumn = layer.columns[target.columnId]; const newOperation = shouldAddField ? targetColumn.operationType - : getNewOperation(droppedItem.field, filterOperations, targetColumn, prioritizedOperation); + : getNewOperation(source.field, target.filterOperations, targetColumn, prioritizedOperation); if ( - !isDraggedField(droppedItem) || + !isDraggedField(source) || !newOperation || (shouldAddField && - !hasOperationSupportForMultipleFields( - indexPattern, - targetColumn, - undefined, - droppedItem.field - )) + !hasOperationSupportForMultipleFields(indexPattern, targetColumn, undefined, source.field)) ) { return false; } - const field = shouldAddField ? getField(targetColumn, indexPattern) : droppedItem.field; + const field = shouldAddField ? getField(targetColumn, indexPattern) : source.field; const initialParams = shouldAddField ? { params: getOperationHelperForMultipleFields(targetColumn.operationType)?.({ targetColumn, - field: droppedItem.field, + field: source.field, indexPattern, }) || {}, } @@ -175,12 +147,12 @@ function onFieldDrop(props: DropHandlerProps, shouldAddField?: boo const newLayer = insertOrReplaceColumn({ layer, - columnId, + columnId: target.columnId, indexPattern, op: newOperation, field, visualizationGroups: dimensionGroups, - targetGroup: groupId, + targetGroup: target.groupId, shouldCombineField: shouldAddField, initialParams, }); @@ -188,82 +160,76 @@ function onFieldDrop(props: DropHandlerProps, shouldAddField?: boo trackUiEvent('drop_onto_dimension'); const hasData = Object.values(state.layers).some(({ columns }) => columns.length); trackUiEvent(hasData ? 'drop_non_empty' : 'drop_empty'); - setState(mergeLayer({ state, layerId, newLayer })); + setState(mergeLayer({ state, layerId: target.layerId, newLayer })); return true; } function onMoveCompatible( - { - columnId, - setState, - state, - layerId, - droppedItem, - dimensionGroups, - groupId, - }: DropHandlerProps, + { setState, state, source, target, dimensionGroups }: DropHandlerProps, shouldDeleteSource?: boolean ) { - const layer = state.layers[layerId]; - const sourceColumn = layer.columns[droppedItem.columnId]; - const indexPattern = state.indexPatterns[layer.indexPatternId]; - - const modifiedLayer = copyColumn({ - layer, - targetId: columnId, - sourceColumnId: droppedItem.columnId, - sourceColumn, + const modifiedLayers = copyColumn({ + layers: state.layers, + target, + source, shouldDeleteSource, - indexPattern, }); - const updatedColumnOrder = reorderByGroups( - dimensionGroups, - groupId, - getColumnOrder(modifiedLayer), - columnId - ); + if (target.layerId === source.layerId) { + const updatedColumnOrder = reorderByGroups( + dimensionGroups, + getColumnOrder(modifiedLayers[target.layerId]), + target.groupId, + target.columnId + ); + + const newLayer = { + ...modifiedLayers[target.layerId], + columnOrder: updatedColumnOrder, + columns: modifiedLayers[target.layerId].columns, + }; + + // Time to replace + setState( + mergeLayer({ + state, + layerId: target.layerId, + newLayer, + }) + ); + return true; + } else { + setState(mergeLayers({ state, newLayers: modifiedLayers })); - // Time to replace - setState( - mergeLayer({ - state, - layerId, - newLayer: { - columnOrder: updatedColumnOrder, - columns: modifiedLayer.columns, - }, - }) - ); - return shouldDeleteSource ? { deleted: droppedItem.columnId } : true; + return true; + } } function onReorder({ - columnId, setState, state, - layerId, - droppedItem, -}: DropHandlerProps) { - function reorderElements(items: string[], dest: string, src: string) { - const result = items.filter((c) => c !== src); - const targetIndex = items.findIndex((c) => c === src); - const sourceIndex = items.findIndex((c) => c === dest); - - const targetPosition = result.indexOf(dest); - result.splice(targetIndex < sourceIndex ? targetPosition + 1 : targetPosition, 0, src); + source, + target, +}: DropHandlerProps) { + function reorderElements(items: string[], targetId: string, sourceId: string) { + const result = items.filter((c) => c !== sourceId); + const targetIndex = items.findIndex((c) => c === sourceId); + const sourceIndex = items.findIndex((c) => c === targetId); + + const targetPosition = result.indexOf(targetId); + result.splice(targetIndex < sourceIndex ? targetPosition + 1 : targetPosition, 0, sourceId); return result; } setState( mergeLayer({ state, - layerId, + layerId: target.layerId, newLayer: { columnOrder: reorderElements( - state.layers[layerId].columnOrder, - columnId, - droppedItem.columnId + state.layers[target.layerId].columnOrder, + target.columnId, + source.columnId ), }, }) @@ -272,124 +238,158 @@ function onReorder({ } function onMoveIncompatible( - { - columnId, - setState, - state, - layerId, - droppedItem, - filterOperations, - dimensionGroups, - groupId, - }: DropHandlerProps, + { setState, state, source, dimensionGroups, target }: DropHandlerProps, shouldDeleteSource?: boolean ) { - const layer = state.layers[layerId]; - const indexPattern = state.indexPatterns[layer.indexPatternId]; - const sourceColumn = layer.columns[droppedItem.columnId]; - const targetColumn = layer.columns[columnId] || null; - + const targetLayer = state.layers[target.layerId]; + const targetColumn = targetLayer.columns[target.columnId] || null; + const sourceLayer = state.layers[source.layerId]; + const indexPattern = state.indexPatterns[sourceLayer.indexPatternId]; + const sourceColumn = sourceLayer.columns[source.columnId]; const sourceField = getField(sourceColumn, indexPattern); - const newOperation = getNewOperation(sourceField, filterOperations, targetColumn); + const newOperation = getNewOperation(sourceField, target.filterOperations, targetColumn); if (!newOperation) { return false; } - const modifiedLayer = shouldDeleteSource + const outputSourceLayer = shouldDeleteSource ? deleteColumn({ - layer, - columnId: droppedItem.columnId, + layer: sourceLayer, + columnId: source.columnId, indexPattern, }) - : layer; + : sourceLayer; - const newLayer = insertOrReplaceColumn({ - layer: modifiedLayer, - columnId, - indexPattern, - op: newOperation, - field: sourceField, - visualizationGroups: dimensionGroups, - targetGroup: groupId, - shouldResetLabel: true, - }); + if (target.layerId === source.layerId) { + const newLayer = insertOrReplaceColumn({ + layer: outputSourceLayer, + columnId: target.columnId, + indexPattern, + op: newOperation, + field: sourceField, + visualizationGroups: dimensionGroups, + targetGroup: target.groupId, + shouldResetLabel: true, + }); - trackUiEvent('drop_onto_dimension'); - setState( - mergeLayer({ - state, - layerId, - newLayer, - }) - ); - return shouldDeleteSource ? { deleted: droppedItem.columnId } : true; + trackUiEvent('drop_onto_dimension'); + setState( + mergeLayer({ + state, + layerId: target.layerId, + newLayer, + }) + ); + return true; + } else { + const outputTargetLayer = insertOrReplaceColumn({ + layer: targetLayer, + columnId: target.columnId, + indexPattern, + op: newOperation, + field: sourceField, + visualizationGroups: dimensionGroups, + targetGroup: target.groupId, + shouldResetLabel: true, + }); + + trackUiEvent('drop_onto_dimension'); + setState( + mergeLayers({ + state, + newLayers: { + [source.layerId]: outputSourceLayer, + [target.layerId]: outputTargetLayer, + }, + }) + ); + return true; + } } function onSwapIncompatible({ - columnId, setState, state, - layerId, - droppedItem, - filterOperations, + source, dimensionGroups, - groupId, -}: DropHandlerProps) { - const layer = state.layers[layerId]; - const indexPattern = state.indexPatterns[layer.indexPatternId]; - const sourceColumn = layer.columns[droppedItem.columnId]; - const targetColumn = layer.columns[columnId]; + target, +}: DropHandlerProps) { + const targetLayer = state.layers[target.layerId]; + const sourceLayer = state.layers[source.layerId]; + const indexPattern = state.indexPatterns[targetLayer.indexPatternId]; + const sourceColumn = sourceLayer.columns[source.columnId]; + const targetColumn = targetLayer.columns[target.columnId]; const sourceField = getField(sourceColumn, indexPattern); const targetField = getField(targetColumn, indexPattern); - const newOperationForSource = getNewOperation(sourceField, filterOperations, targetColumn); - const newOperationForTarget = getNewOperation( - targetField, - droppedItem.filterOperations, - sourceColumn - ); + const newOperationForSource = getNewOperation(sourceField, target.filterOperations, targetColumn); + const newOperationForTarget = getNewOperation(targetField, source.filterOperations, sourceColumn); if (!newOperationForSource || !newOperationForTarget) { return false; } - const newLayer = insertOrReplaceColumn({ - layer: insertOrReplaceColumn({ - layer, - columnId, - targetGroup: groupId, - indexPattern, - op: newOperationForSource, - field: sourceField, - visualizationGroups: dimensionGroups, - shouldResetLabel: true, - }), - columnId: droppedItem.columnId, + const outputTargetLayer = insertOrReplaceColumn({ + layer: targetLayer, + columnId: target.columnId, + targetGroup: target.groupId, indexPattern, - op: newOperationForTarget, - field: targetField, + op: newOperationForSource, + field: sourceField, visualizationGroups: dimensionGroups, - targetGroup: droppedItem.groupId, shouldResetLabel: true, }); - trackUiEvent('drop_onto_dimension'); - setState( - mergeLayer({ - state, - layerId, - newLayer, - }) - ); - return true; + if (source.layerId === target.layerId) { + const newLayer = insertOrReplaceColumn({ + layer: outputTargetLayer, + columnId: source.columnId, + indexPattern, + op: newOperationForTarget, + field: targetField, + visualizationGroups: dimensionGroups, + targetGroup: source.groupId, + shouldResetLabel: true, + }); + + trackUiEvent('drop_onto_dimension'); + setState( + mergeLayer({ + state, + layerId: target.layerId, + newLayer, + }) + ); + return true; + } else { + const outputSourceLayer = insertOrReplaceColumn({ + layer: sourceLayer, + columnId: source.columnId, + indexPattern, + op: newOperationForTarget, + field: targetField, + visualizationGroups: dimensionGroups, + targetGroup: source.groupId, + shouldResetLabel: true, + }); + + trackUiEvent('drop_onto_dimension'); + setState( + mergeLayers({ + state, + newLayers: { [source.layerId]: outputSourceLayer, [target.layerId]: outputTargetLayer }, + }) + ); + return true; + } } const swapColumnOrder = (columnOrder: string[], sourceId: string, targetId: string) => { - const newColumnOrder = [...columnOrder]; - const sourceIndex = newColumnOrder.findIndex((c) => c === sourceId); - const targetIndex = newColumnOrder.findIndex((c) => c === targetId); + const sourceIndex = columnOrder.findIndex((c) => c === sourceId); + const targetIndex = columnOrder.findIndex((c) => c === targetId); + const newColumnOrder = [...columnOrder]; newColumnOrder[sourceIndex] = targetId; newColumnOrder[targetIndex] = sourceId; @@ -397,38 +397,114 @@ const swapColumnOrder = (columnOrder: string[], sourceId: string, targetId: stri }; function onSwapCompatible({ - columnId, setState, state, - layerId, - droppedItem, + source, dimensionGroups, - groupId, -}: DropHandlerProps) { - const layer = state.layers[layerId]; - const sourceId = droppedItem.columnId; - const targetId = columnId; - - const sourceColumn = { ...layer.columns[sourceId] }; - const targetColumn = { ...layer.columns[targetId] }; - const newColumns = { ...layer.columns }; - newColumns[targetId] = sourceColumn; - newColumns[sourceId] = targetColumn; - - let updatedColumnOrder = swapColumnOrder(layer.columnOrder, sourceId, targetId); - updatedColumnOrder = reorderByGroups(dimensionGroups, groupId, updatedColumnOrder, columnId); - - // Time to replace - setState( - mergeLayer({ - state, - layerId, - newLayer: { - columnOrder: updatedColumnOrder, - columns: newColumns, - }, - }) - ); + target, +}: DropHandlerProps) { + if (target.layerId === source.layerId) { + const layer = state.layers[target.layerId]; + const newColumns = { + ...layer.columns, + [target.columnId]: { ...layer.columns[source.columnId] }, + [source.columnId]: { ...layer.columns[target.columnId] }, + }; + + let updatedColumnOrder = swapColumnOrder(layer.columnOrder, source.columnId, target.columnId); + updatedColumnOrder = reorderByGroups( + dimensionGroups, + updatedColumnOrder, + target.groupId, + target.columnId + ); + + setState( + mergeLayer({ + state, + layerId: target.layerId, + newLayer: { + columnOrder: updatedColumnOrder, + columns: newColumns, + }, + }) + ); + + return true; + } else { + const newTargetLayer = copyColumn({ + layers: state.layers, + target, + source, + shouldDeleteSource: true, + })[target.layerId]; + + const newSourceLayer = copyColumn({ + layers: state.layers, + target: source, + source: target, + shouldDeleteSource: true, + })[source.layerId]; + + setState( + mergeLayers({ + state, + newLayers: { + [source.layerId]: newSourceLayer, + [target.layerId]: newTargetLayer, + }, + }) + ); + + return true; + } +} + +function onCombine({ + state, + setState, + source, + target, + dimensionGroups, +}: DropHandlerProps) { + const targetLayer = state.layers[target.layerId]; + const targetColumn = targetLayer.columns[target.columnId]; + const targetField = getField(targetColumn, target.dataView); + const indexPattern = state.indexPatterns[targetLayer.indexPatternId]; + + const sourceLayer = state.layers[source.layerId]; + const sourceColumn = sourceLayer.columns[source.columnId]; + const sourceField = getField(sourceColumn, indexPattern); + // extract the field from the source column + if (!sourceField || !targetField) { + return false; + } + // pass it to the target column and delete the source column + const initialParams = { + params: + getOperationHelperForMultipleFields(targetColumn.operationType)?.({ + targetColumn, + sourceColumn, + indexPattern, + }) ?? {}, + }; + const outputTargetLayer = replaceColumn({ + layer: targetLayer, + columnId: target.columnId, + indexPattern, + op: targetColumn.operationType, + field: targetField, + visualizationGroups: dimensionGroups, + targetGroup: target.groupId, + initialParams, + shouldCombineField: true, + }); + + const newLayers = deleteColumnInLayers({ + layers: { ...state.layers, [target.layerId]: outputTargetLayer }, + source, + }); + setState(mergeLayers({ state, newLayers })); return true; } diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/operation_support.ts b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/operation_support.ts index 7a7297e77bcf2..2f703547219ec 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/operation_support.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/dimension_panel/operation_support.ts @@ -18,9 +18,9 @@ export interface OperationSupportMatrix { } type Props = Pick< - DatasourceDimensionDropProps, - 'layerId' | 'columnId' | 'state' | 'filterOperations' ->; + DatasourceDimensionDropProps['target'], + 'layerId' | 'columnId' | 'filterOperations' +> & { state: IndexPatternPrivateState }; function computeOperationMatrix( operationsByMetadata: Array<{ diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx index 437ee4bf8b22d..104b85651a876 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/count.tsx @@ -150,12 +150,8 @@ export const countOperation: OperationDefinition - adjustTimeScaleOnOtherColumnChange( - layer, - thisColumnId, - changedColumnId - ), + onOtherColumnChanged: (layer, thisColumnId) => + adjustTimeScaleOnOtherColumnChange(layer, thisColumnId), toEsAggsFn: (column, columnId) => { return buildExpressionFunction('aggCount', { id: columnId, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.tsx index 1d08873a160e9..72aace21479ac 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/formula.tsx @@ -174,13 +174,23 @@ export const formulaOperation: OperationDefinition { return true; }, - createCopy(layer, sourceId, targetId, indexPattern, operationDefinitionMap) { - const currentColumn = layer.columns[sourceId] as FormulaIndexPatternColumn; - - return insertOrReplaceFormulaColumn(targetId, currentColumn, layer, { - indexPattern, - operations: operationDefinitionMap, - }).layer; + createCopy(layers, source, target, operationDefinitionMap) { + const currentColumn = layers[source.layerId].columns[ + source.columnId + ] as FormulaIndexPatternColumn; + const modifiedLayer = insertOrReplaceFormulaColumn( + target.columnId, + currentColumn, + layers[target.layerId], + { + indexPattern: target.dataView, + operations: operationDefinitionMap, + } + ); + return { + ...layers, + [target.layerId]: modifiedLayer.layer, + }; }, timeScalingMode: 'optional', paramEditor: WrappedFormulaEditor, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/math.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/math.tsx index 85c2ea707b123..d7f25275f63a2 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/math.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/formula/math.tsx @@ -67,8 +67,8 @@ export const mathOperation: OperationDefinition { - return { ...layer }; + createCopy: (layers) => { + return { ...layers }; }, }; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts index 74d635cac02dc..cdf2b0249529e 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/index.ts @@ -54,7 +54,12 @@ import type { GenericIndexPatternColumn, ReferenceBasedIndexPatternColumn, } from './column_types'; -import { IndexPattern, IndexPatternField, IndexPatternLayer } from '../../types'; +import { + DataViewDragDropOperation, + IndexPattern, + IndexPatternField, + IndexPatternLayer, +} from '../../types'; import { DateRange, LayerType } from '../../../../common'; import { rangeOperation } from './ranges'; import { IndexPatternDimensionEditorProps, OperationSupportMatrix } from '../../dimension_panel'; @@ -249,11 +254,7 @@ interface BaseOperationDefinitionProps * Based on the current column and the other updated columns, this function has to * return an updated column. If not implemented, the `id` function is used instead. */ - onOtherColumnChanged?: ( - layer: IndexPatternLayer, - thisColumnId: string, - changedColumnId: string - ) => C; + onOtherColumnChanged?: (layer: IndexPatternLayer, thisColumnId: string) => C; /** * React component for operation specific settings shown in the flyout editor */ @@ -623,12 +624,11 @@ interface ManagedReferenceOperationDefinition * root level */ createCopy: ( - layer: IndexPatternLayer, - sourceColumnId: string, - targetColumnId: string, - indexPattern: IndexPattern, + layers: Record, + source: DataViewDragDropOperation, + target: DataViewDragDropOperation, operationDefinitionMap: Record - ) => IndexPatternLayer; + ) => Record; } interface OperationDefinitionMap { diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx index 55df2b8e0ff1a..10c4310e820b2 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/metrics.tsx @@ -108,9 +108,9 @@ function buildMetricOperation>({ (!newField.aggregationRestrictions || newField.aggregationRestrictions![type]) ); }, - onOtherColumnChanged: (layer, thisColumnId, changedColumnId) => + onOtherColumnChanged: (layer, thisColumnId) => optionalTimeScaling - ? (adjustTimeScaleOnOtherColumnChange(layer, thisColumnId, changedColumnId) as T) + ? (adjustTimeScaleOnOtherColumnChange(layer, thisColumnId) as T) : (layer.columns[thisColumnId] as T), getDefaultLabel: (column, indexPattern, columns) => labelLookup(getSafeName(column.sourceField, indexPattern), column), diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/static_value.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/static_value.tsx index 555360a2f7f6c..5642c06c6b642 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/static_value.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/static_value.tsx @@ -16,6 +16,7 @@ import { import type { IndexPattern } from '../../types'; import { useDebouncedValue } from '../../../shared_components'; import { getFormatFromPreviousColumn, isValidNumber } from './helpers'; +import { getColumnOrder } from '../layer_helpers'; const defaultLabel = i18n.translate('xpack.lens.indexPattern.staticValueLabelDefault', { defaultMessage: 'Static value', @@ -132,13 +133,21 @@ export const staticValueOperation: OperationDefinition< isTransferable: (column) => { return true; }, - createCopy(layer, sourceId, targetId, indexPattern, operationDefinitionMap) { - const currentColumn = layer.columns[sourceId] as StaticValueIndexPatternColumn; + createCopy(layers, source, target) { + const currentColumn = layers[source.layerId].columns[ + source.columnId + ] as StaticValueIndexPatternColumn; + const targetLayer = layers[target.layerId]; + const columns = { + ...targetLayer.columns, + [target.columnId]: { ...currentColumn }, + }; return { - ...layer, - columns: { - ...layer.columns, - [targetId]: { ...currentColumn }, + ...layers, + [target.layerId]: { + ...targetLayer, + columns, + columnOrder: getColumnOrder({ ...targetLayer, columns }), }, }; }, diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx index 419e087411810..62aed475df42a 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/index.tsx @@ -325,7 +325,7 @@ export const termsOperation: OperationDefinition { + onOtherColumnChanged: (layer, thisColumnId) => { const columns = layer.columns; const currentColumn = columns[thisColumnId] as TermsIndexPatternColumn; if ( diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/terms.test.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/terms.test.tsx index 1cce6c5b06cd6..99c20bbd8bca6 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/terms.test.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/definitions/terms/terms.test.tsx @@ -755,8 +755,7 @@ describe('terms', () => { }, }, }, - 'col2', - 'col1' + 'col2' ); expect(updatedColumn).toBe(initialColumn); @@ -796,8 +795,7 @@ describe('terms', () => { columnOrder: [], indexPatternId: '', }, - 'col2', - 'col1' + 'col2' ); expect(updatedColumn.params).toEqual( expect.objectContaining({ @@ -843,8 +841,7 @@ describe('terms', () => { columnOrder: [], indexPatternId: '', }, - 'col2', - 'col1' + 'col2' ); expect(updatedColumn.params).toEqual( expect.objectContaining({ @@ -875,8 +872,7 @@ describe('terms', () => { columnOrder: [], indexPatternId: '', }, - 'col2', - 'col1' + 'col2' ); expect(termsColumn.params).toEqual( expect.objectContaining({ @@ -919,8 +915,7 @@ describe('terms', () => { columnOrder: [], indexPatternId: '', }, - 'col2', - 'col1' + 'col2' ); expect(termsColumn.params).toEqual( expect.objectContaining({ @@ -951,8 +946,7 @@ describe('terms', () => { columnOrder: [], indexPatternId: '', }, - 'col2', - 'col1' + 'col2' ); expect(termsColumn.params).toEqual( expect.objectContaining({ @@ -991,8 +985,7 @@ describe('terms', () => { }, }, }, - 'col2', - 'col1' + 'col2' ); expect(updatedColumn.params).toEqual( diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.test.ts index 4fdd82439fc22..ab9319957afca 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.test.ts @@ -159,24 +159,38 @@ describe('state_helpers', () => { params: { window: 5 }, references: ['formulaX0'], }; + expect( copyColumn({ - layer: { - indexPatternId: '', - columnOrder: [], - columns: { - source, - formulaX0: sum, - formulaX1: movingAvg, - formulaX2: math, + layers: { + layer: { + indexPatternId: '', + columnOrder: [], + columns: { + source, + formulaX0: sum, + formulaX1: movingAvg, + formulaX2: math, + }, }, }, - targetId: 'copy', - sourceColumn: source, + source: { + column: source, + groupId: 'one', + columnId: 'source', + layerId: 'layer', + dataView: indexPattern, + filterOperations: () => true, + }, + target: { + columnId: 'copy', + groupId: 'one', + dataView: indexPattern, + layerId: 'layer', + filterOperations: () => true, + }, shouldDeleteSource: false, - indexPattern, - sourceColumnId: 'source', - }) + }).layer ).toEqual({ indexPatternId: '', columnOrder: [ @@ -1355,8 +1369,7 @@ describe('state_helpers', () => { }, incompleteColumns: {}, }, - 'col1', - 'col2' + 'col1' ); }); @@ -1422,8 +1435,7 @@ describe('state_helpers', () => { }, incompleteColumns: {}, }), - 'col1', - 'willBeReference' + 'col1' ); }); @@ -2374,8 +2386,7 @@ describe('state_helpers', () => { expect(operationDefinitionMap.terms.onOtherColumnChanged).toHaveBeenCalledWith( { indexPatternId: '1', columnOrder: ['col1', 'col2'], columns: { col1: termsColumn } }, - 'col1', - 'col2' + 'col1' ); }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.ts index 8376a57ddc19d..434370943fbc1 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/layer_helpers.ts @@ -26,6 +26,7 @@ import { TermsIndexPatternColumn, } from './definitions'; import type { + DataViewDragDropOperation, IndexPattern, IndexPatternField, IndexPatternLayer, @@ -68,96 +69,84 @@ interface ColumnChange { } interface ColumnCopy { - layer: IndexPatternLayer; - targetId: string; - sourceColumn: GenericIndexPatternColumn; - sourceColumnId: string; - indexPattern: IndexPattern; + layers: Record; + target: DataViewDragDropOperation; + source: DataViewDragDropOperation; shouldDeleteSource?: boolean; } +export const deleteColumnInLayers = ({ + layers, + source, +}: { + layers: Record; + source: DataViewDragDropOperation; +}) => ({ + ...layers, + [source.layerId]: deleteColumn({ + layer: layers[source.layerId], + columnId: source.columnId, + indexPattern: source.dataView, + }), +}); + export function copyColumn({ - layer, - targetId, - sourceColumn, + layers, + source, + target, shouldDeleteSource, - indexPattern, - sourceColumnId, -}: ColumnCopy): IndexPatternLayer { - let modifiedLayer = copyReferencesRecursively( - layer, - sourceColumn, - sourceColumnId, - targetId, - indexPattern - ); - - if (shouldDeleteSource) { - modifiedLayer = deleteColumn({ - layer: modifiedLayer, - columnId: sourceColumnId, - indexPattern, - }); - } - - return modifiedLayer; +}: ColumnCopy): Record { + const outputLayers = createCopiedColumn(layers, target, source); + return shouldDeleteSource + ? deleteColumnInLayers({ + layers: outputLayers, + source, + }) + : outputLayers; } -function copyReferencesRecursively( - layer: IndexPatternLayer, - sourceColumn: GenericIndexPatternColumn, - sourceId: string, - targetId: string, - indexPattern: IndexPattern -): IndexPatternLayer { - let columns = { ...layer.columns }; +function createCopiedColumn( + layers: Record, + target: DataViewDragDropOperation, + source: DataViewDragDropOperation +): Record { + const sourceLayer = layers[source.layerId]; + const sourceColumn = sourceLayer.columns[source.columnId]; + const targetLayer = layers[target.layerId]; + let columns = { ...targetLayer.columns }; if ('references' in sourceColumn) { - if (columns[targetId]) { - return layer; - } - const def = operationDefinitionMap[sourceColumn.operationType]; if ('createCopy' in def) { - // Allow managed references to recursively insert new columns - return def.createCopy(layer, sourceId, targetId, indexPattern, operationDefinitionMap); + return def.createCopy(layers, source, target, operationDefinitionMap); // Allow managed references to recursively insert new columns } + const referenceColumns = sourceColumn.references.reduce((refs, sourceRef) => { + const newRefId = generateId(); + return { ...refs, [newRefId]: { ...sourceLayer.columns[sourceRef] } }; + }, {}); - sourceColumn?.references.forEach((ref, index) => { - const newId = generateId(); - const refColumn = { ...columns[ref] }; - - // TODO: For fullReference types, now all references are hidden columns, - // but in the future we will have references to visible columns - // and visible columns shouldn't be copied - const refColumnWithInnerRefs = - 'references' in refColumn - ? copyReferencesRecursively(layer, refColumn, sourceId, newId, indexPattern).columns // if a column has references, copy them too - : { [newId]: refColumn }; - - const newColumn = columns[targetId]; - let references = [newId]; - if (newColumn && 'references' in newColumn) { - references = newColumn.references; - references[index] = newId; - } - - columns = { - ...columns, - ...refColumnWithInnerRefs, - [targetId]: { - ...sourceColumn, - references, - }, - }; - }); + columns = { + ...columns, + ...referenceColumns, + [target.columnId]: { + ...sourceColumn, + references: Object.keys(referenceColumns), + }, + }; } else { columns = { ...columns, - [targetId]: sourceColumn, + [target.columnId]: { ...sourceColumn }, }; } - return { ...layer, columns, columnOrder: getColumnOrder({ ...layer, columns }) }; + return { + ...layers, + [target.layerId]: adjustColumnReferences({ + ...targetLayer, + columns, + columnOrder: getColumnOrder({ ...targetLayer, columns }), + }), + }; } export function insertOrReplaceColumn(args: ColumnChange): IndexPatternLayer { @@ -1046,8 +1035,8 @@ function addBucket( } updatedColumnOrder = reorderByGroups( visualizationGroups, - targetGroup, updatedColumnOrder, + targetGroup, addedColumnId ); const tempLayer = { @@ -1064,8 +1053,8 @@ function addBucket( export function reorderByGroups( visualizationGroups: VisualizationDimensionGroupConfig[], - targetGroup: string | undefined, updatedColumnOrder: string[], + targetGroup: string | undefined, addedColumnId: string ) { const hidesColumnGrouping = @@ -1184,6 +1173,26 @@ export function updateColumnParam({ }; } +export function adjustColumnReferences(layer: IndexPatternLayer) { + const newColumns = { ...layer.columns }; + Object.keys(newColumns).forEach((currentColumnId) => { + const currentColumn = newColumns[currentColumnId]; + if (currentColumn?.operationType) { + const operationDefinition = operationDefinitionMap[currentColumn.operationType]; + newColumns[currentColumnId] = operationDefinition.onOtherColumnChanged + ? operationDefinition.onOtherColumnChanged( + { ...layer, columns: newColumns }, + currentColumnId + ) + : currentColumn; + } + }); + return { + ...layer, + columns: newColumns, + }; +} + export function adjustColumnReferencesForChangedColumn( layer: IndexPatternLayer, changedColumnId: string @@ -1196,8 +1205,7 @@ export function adjustColumnReferencesForChangedColumn( newColumns[currentColumnId] = operationDefinition.onOtherColumnChanged ? operationDefinition.onOtherColumnChanged( { ...layer, columns: newColumns }, - currentColumnId, - changedColumnId + currentColumnId ) : currentColumn; } @@ -1561,6 +1569,9 @@ export function isColumnValidAsReference({ if (!column) return false; const operationType = column.operationType; const operationDefinition = operationDefinitionMap[operationType]; + if (!operationDefinition) { + throw new Error('No suitable operation definition found for ' + operationType); + } return ( validation.input.includes(operationDefinition.input) && maybeValidateOperations({ diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/time_scale_utils.test.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/time_scale_utils.test.ts index 1eb02fa82ceef..fd8952ad9e077 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/time_scale_utils.test.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/time_scale_utils.test.ts @@ -113,11 +113,7 @@ describe('time scale utils', () => { it('should keep column if there is no time scale', () => { const column = { ...baseColumn, timeScale: undefined }; expect( - adjustTimeScaleOnOtherColumnChange( - { ...baseLayer, columns: { col1: column } }, - 'col1', - 'col2' - ) + adjustTimeScaleOnOtherColumnChange({ ...baseLayer, columns: { col1: column } }, 'col1') ).toBe(column); }); @@ -138,14 +134,13 @@ describe('time scale utils', () => { } as DateHistogramIndexPatternColumn, }, }, - 'col1', - 'col2' + 'col1' ) ).toBe(baseColumn); }); it('should remove time scale if there is no date histogram', () => { - expect(adjustTimeScaleOnOtherColumnChange(baseLayer, 'col1', 'col2')).toHaveProperty( + expect(adjustTimeScaleOnOtherColumnChange(baseLayer, 'col1')).toHaveProperty( 'timeScale', undefined ); @@ -153,22 +148,14 @@ describe('time scale utils', () => { it('should remove suffix from label', () => { expect( - adjustTimeScaleOnOtherColumnChange( - { ...baseLayer, columns: { col1: baseColumn } }, - 'col1', - 'col2' - ) + adjustTimeScaleOnOtherColumnChange({ ...baseLayer, columns: { col1: baseColumn } }, 'col1') ).toHaveProperty('label', 'Count of records'); }); it('should keep custom label', () => { const column = { ...baseColumn, label: 'abc', customLabel: true }; expect( - adjustTimeScaleOnOtherColumnChange( - { ...baseLayer, columns: { col1: column } }, - 'col1', - 'col2' - ) + adjustTimeScaleOnOtherColumnChange({ ...baseLayer, columns: { col1: column } }, 'col1') ).toHaveProperty('label', 'abc'); }); }); diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/operations/time_scale_utils.ts b/x-pack/plugins/lens/public/indexpattern_datasource/operations/time_scale_utils.ts index a8e71c0fd86e5..c6cd343504253 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/operations/time_scale_utils.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/operations/time_scale_utils.ts @@ -46,8 +46,7 @@ export function adjustTimeScaleLabelSuffix( export function adjustTimeScaleOnOtherColumnChange( layer: IndexPatternLayer, - thisColumnId: string, - changedColumnId: string + thisColumnId: string ): T { const columns = layer.columns; const column = columns[thisColumnId] as T; diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts b/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts index 5d48922a66d8a..6e16ebe5e8d53 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/state_helpers.ts @@ -24,3 +24,19 @@ export function mergeLayer({ }, }; } + +export function mergeLayers({ + state, + newLayers, +}: { + state: IndexPatternPrivateState; + newLayers: Record; +}) { + return { + ...state, + layers: { + ...state.layers, + ...newLayers, + }, + }; +} diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/types.ts b/x-pack/plugins/lens/public/indexpattern_datasource/types.ts index 7e25509c3b2dd..cbf02bddb8814 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/types.ts +++ b/x-pack/plugins/lens/public/indexpattern_datasource/types.ts @@ -10,6 +10,7 @@ import type { FieldSpec } from '@kbn/data-plugin/common'; import type { FieldFormatParams } from '@kbn/field-formats-plugin/common'; import type { DragDropIdentifier } from '../drag_drop/providers'; import type { IncompleteColumn, GenericIndexPatternColumn } from './operations'; +import { DragDropOperation } from '../types'; export type { GenericIndexPatternColumn, @@ -109,3 +110,8 @@ export interface IndexPatternRef { title: string; name?: string; } + +export interface DataViewDragDropOperation extends DragDropOperation { + dataView: IndexPattern; + column?: GenericIndexPatternColumn; +} diff --git a/x-pack/plugins/lens/public/types.ts b/x-pack/plugins/lens/public/types.ts index 873159562dc8f..770f4bee7eecd 100644 --- a/x-pack/plugins/lens/public/types.ts +++ b/x-pack/plugins/lens/public/types.ts @@ -199,11 +199,18 @@ interface ChartSettings { }; } -export type GetDropProps = DatasourceDimensionDropProps & { - groupId: string; - dragging: DragContextState['dragging']; - prioritizedOperation?: string; -}; +export interface GetDropPropsArgs { + state: T; + source?: DraggingIdentifier; + target: { + layerId: string; + groupId: string; + columnId: string; + filterOperations: (meta: OperationMetadata) => boolean; + prioritizedOperation?: string; + isNewColumn?: boolean; + }; +} /** * Interface for the datasource registry @@ -257,9 +264,9 @@ export interface Datasource { props: DatasourceLayerPanelProps ) => ((cleanupElement: Element) => void) | void; getDropProps: ( - props: GetDropProps + props: GetDropPropsArgs ) => { dropTypes: DropType[]; nextLabel?: string } | undefined; - onDrop: (props: DatasourceDimensionDropHandlerProps) => false | true | { deleted: string }; + onDrop: (props: DatasourceDimensionDropHandlerProps) => boolean | undefined; /** * The datasource is allowed to cancel a close event on the dimension editor, * mainly used for formulas @@ -454,16 +461,14 @@ export interface DatasourceLayerPanelProps { activeData?: Record; } -export interface DraggedOperation extends DraggingIdentifier { +export interface DragDropOperation { layerId: string; groupId: string; columnId: string; filterOperations: (operation: OperationMetadata) => boolean; } -export function isDraggedOperation( - operationCandidate: unknown -): operationCandidate is DraggedOperation { +export function isOperation(operationCandidate: unknown): operationCandidate is DragDropOperation { return ( typeof operationCandidate === 'object' && operationCandidate !== null && @@ -471,10 +476,8 @@ export function isDraggedOperation( ); } -export type DatasourceDimensionDropProps = SharedDimensionProps & { - layerId: string; - groupId: string; - columnId: string; +export interface DatasourceDimensionDropProps { + target: DragDropOperation; state: T; setState: StateSetter< T, @@ -484,10 +487,10 @@ export type DatasourceDimensionDropProps = SharedDimensionProps & { } >; dimensionGroups: VisualizationDimensionGroupConfig[]; -}; +} -export type DatasourceDimensionDropHandlerProps = DatasourceDimensionDropProps & { - droppedItem: unknown; +export type DatasourceDimensionDropHandlerProps = DatasourceDimensionDropProps & { + source: DragDropIdentifier; dropType: DropType; }; @@ -851,7 +854,17 @@ export interface Visualization { * look at its internal state to determine which dimension is being affected. */ removeDimension: (props: VisualizationDimensionChangeProps) => T; - + /** + * Allow defining custom behavior for the visualization when the drop action occurs. + */ + onDrop?: (props: { + prevState: T; + target: DragDropOperation; + source: DragDropIdentifier; + frame: FramePublicAPI; + dropType: DropType; + group?: VisualizationDimensionGroupConfig; + }) => T; /** * Update the configuration for the visualization. This is used to update the state */ diff --git a/x-pack/plugins/lens/public/xy_visualization/annotations/helpers.tsx b/x-pack/plugins/lens/public/xy_visualization/annotations/helpers.tsx index 35a40623b72aa..692d0f02725b2 100644 --- a/x-pack/plugins/lens/public/xy_visualization/annotations/helpers.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/annotations/helpers.tsx @@ -118,6 +118,207 @@ export const getAnnotationsSupportedLayer = ( }; }; +const getDefaultAnnotationConfig = (id: string, timestamp: string): EventAnnotationConfig => ({ + label: defaultAnnotationLabel, + key: { + type: 'point_in_time', + timestamp, + }, + icon: 'triangle', + id, +}); + +const createCopiedAnnotation = ( + newId: string, + timestamp: string, + source?: EventAnnotationConfig +): EventAnnotationConfig => { + if (!source) { + return getDefaultAnnotationConfig(newId, timestamp); + } + return { + ...source, + id: newId, + }; +}; + +export const onAnnotationDrop: Visualization['onDrop'] = ({ + prevState, + frame, + source, + target, + dropType, +}) => { + const targetLayer = prevState.layers.find((l) => l.layerId === target.layerId); + const sourceLayer = prevState.layers.find((l) => l.layerId === source.layerId); + if ( + !targetLayer || + !isAnnotationsLayer(targetLayer) || + !sourceLayer || + !isAnnotationsLayer(sourceLayer) + ) { + return prevState; + } + const targetAnnotation = targetLayer.annotations.find(({ id }) => id === target.columnId); + const sourceAnnotation = sourceLayer.annotations.find(({ id }) => id === source.columnId); + switch (dropType) { + case 'reorder': + if (!targetAnnotation || !sourceAnnotation || source.layerId !== target.layerId) { + return prevState; + } + const newAnnotations = targetLayer.annotations.filter((c) => c.id !== sourceAnnotation.id); + const targetPosition = newAnnotations.findIndex((c) => c.id === targetAnnotation.id); + const targetIndex = targetLayer.annotations.indexOf(sourceAnnotation); + const sourceIndex = targetLayer.annotations.indexOf(targetAnnotation); + newAnnotations.splice( + targetIndex < sourceIndex ? targetPosition + 1 : targetPosition, + 0, + sourceAnnotation + ); + return { + ...prevState, + layers: prevState.layers.map((l) => + l.layerId === target.layerId ? { ...targetLayer, annotations: newAnnotations } : l + ), + }; + case 'swap_compatible': + if (!targetAnnotation || !sourceAnnotation) { + return prevState; + } + return { + ...prevState, + layers: prevState.layers.map((l): XYLayerConfig => { + if (!isAnnotationsLayer(l) || !isAnnotationsLayer(targetLayer)) { + return l; + } + if (l.layerId === target.layerId) { + return { + ...targetLayer, + annotations: [ + ...targetLayer.annotations.map( + (a): EventAnnotationConfig => (a === targetAnnotation ? sourceAnnotation : a) + ), + ], + }; + } + if (l.layerId === source.layerId) { + return { + ...sourceLayer, + annotations: [ + ...sourceLayer.annotations.map( + (a): EventAnnotationConfig => (a === sourceAnnotation ? targetAnnotation : a) + ), + ], + }; + } + return l; + }), + }; + case 'replace_compatible': + if (!targetAnnotation || !sourceAnnotation) { + return prevState; + } + + return { + ...prevState, + layers: prevState.layers.map((l) => { + if (l.layerId === source.layerId) { + return { + ...sourceLayer, + annotations: sourceLayer.annotations.filter((a) => a !== sourceAnnotation), + }; + } + if (l.layerId === target.layerId) { + return { + ...targetLayer, + annotations: [ + ...targetLayer.annotations.map((a) => + a === targetAnnotation ? sourceAnnotation : a + ), + ], + }; + } + return l; + }), + }; + case 'duplicate_compatible': + if (targetAnnotation) { + return prevState; + } + return { + ...prevState, + layers: prevState.layers.map( + (l): XYLayerConfig => + l.layerId === target.layerId + ? { + ...targetLayer, + annotations: [ + ...targetLayer.annotations, + createCopiedAnnotation( + target.columnId, + getStaticDate(getDataLayers(prevState.layers), frame), + sourceAnnotation + ), + ], + } + : l + ), + }; + case 'replace_duplicate_compatible': + if (!targetAnnotation) { + return prevState; + } + return { + ...prevState, + layers: prevState.layers.map((l) => { + if (l.layerId === target.layerId) { + return { + ...targetLayer, + annotations: [ + ...targetLayer.annotations.map((a) => + a === targetAnnotation + ? createCopiedAnnotation( + target.columnId, + getStaticDate(getDataLayers(prevState.layers), frame), + sourceAnnotation + ) + : a + ), + ], + }; + } + return l; + }), + }; + case 'move_compatible': + if (targetAnnotation || !sourceAnnotation) { + return prevState; + } + + return { + ...prevState, + layers: prevState.layers.map((l): XYLayerConfig => { + if (l.layerId === source.layerId) { + return { + ...sourceLayer, + annotations: sourceLayer.annotations.filter((a) => a !== sourceAnnotation), + }; + } + if (l.layerId === target.layerId) { + return { + ...targetLayer, + annotations: [...targetLayer.annotations, sourceAnnotation], + }; + } + return l; + }), + }; + default: + return prevState; + } + return prevState; +}; + export const setAnnotationsDimension: Visualization['setDimension'] = ({ prevState, layerId, @@ -125,46 +326,30 @@ export const setAnnotationsDimension: Visualization['setDimension'] = ( previousColumn, frame, }) => { - const foundLayer = prevState.layers.find((l) => l.layerId === layerId); - if (!foundLayer || !isAnnotationsLayer(foundLayer)) { + const targetLayer = prevState.layers.find((l) => l.layerId === layerId); + if (!targetLayer || !isAnnotationsLayer(targetLayer)) { return prevState; } - const inputAnnotations = foundLayer.annotations as XYAnnotationLayerConfig['annotations']; - const currentConfig = inputAnnotations?.find(({ id }) => id === columnId); - const previousConfig = previousColumn - ? inputAnnotations?.find(({ id }) => id === previousColumn) + const sourceAnnotation = previousColumn + ? targetLayer.annotations?.find(({ id }) => id === previousColumn) : undefined; - let resultAnnotations = [...inputAnnotations] as XYAnnotationLayerConfig['annotations']; - - if (!currentConfig) { - resultAnnotations.push({ - label: defaultAnnotationLabel, - key: { - type: 'point_in_time', - timestamp: getStaticDate(getDataLayers(prevState.layers), frame), - }, - icon: 'triangle', - ...previousConfig, - id: columnId, - }); - } else if (currentConfig && previousConfig) { - // TODO: reordering should not live in setDimension, to be refactored - resultAnnotations = inputAnnotations.filter((c) => c.id !== previousConfig.id); - const targetPosition = resultAnnotations.findIndex((c) => c.id === currentConfig.id); - const targetIndex = inputAnnotations.indexOf(previousConfig); - const sourceIndex = inputAnnotations.indexOf(currentConfig); - resultAnnotations.splice( - targetIndex < sourceIndex ? targetPosition + 1 : targetPosition, - 0, - previousConfig - ); - } - return { ...prevState, layers: prevState.layers.map((l) => - l.layerId === layerId ? { ...foundLayer, annotations: resultAnnotations } : l + l.layerId === layerId + ? { + ...targetLayer, + annotations: [ + ...targetLayer.annotations, + createCopiedAnnotation( + columnId, + getStaticDate(getDataLayers(prevState.layers), frame), + sourceAnnotation + ), + ], + } + : l ), }; }; @@ -224,7 +409,6 @@ export const getAnnotationsConfiguration = ({ defaultMessage: 'Annotations require a time based chart to work. Add a date histogram.', }), required: false, - requiresPreviousColumnOnDuplicate: true, supportsMoreColumns: true, supportFieldFormat: false, enableDimensionEditor: true, diff --git a/x-pack/plugins/lens/public/xy_visualization/reference_line_helpers.tsx b/x-pack/plugins/lens/public/xy_visualization/reference_line_helpers.tsx index 3f0e8816cf6b1..ece9a6d28893e 100644 --- a/x-pack/plugins/lens/public/xy_visualization/reference_line_helpers.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/reference_line_helpers.tsx @@ -18,6 +18,7 @@ import { checkScaleOperation, getAxisName, getDataLayers, + getReferenceLayers, isNumericMetric, isReferenceLayer, } from './visualization_helpers'; @@ -342,7 +343,10 @@ export const setReferenceDimension: Visualization['setDimension'] = ({ newLayer.accessors = [...newLayer.accessors.filter((a) => a !== columnId), columnId]; const hasYConfig = newLayer.yConfig?.some(({ forAccessor }) => forAccessor === columnId); const previousYConfig = previousColumn - ? newLayer.yConfig?.find(({ forAccessor }) => forAccessor === previousColumn) + ? getReferenceLayers(prevState.layers) + .map(({ yConfig }) => yConfig) + .flat() + ?.find((yConfig) => yConfig?.forAccessor === previousColumn) : false; if (!hasYConfig) { const axisMode: YAxisMode = diff --git a/x-pack/plugins/lens/public/xy_visualization/visualization.test.ts b/x-pack/plugins/lens/public/xy_visualization/visualization.test.ts index 1cc3df6b5ca96..0092bb78a6d71 100644 --- a/x-pack/plugins/lens/public/xy_visualization/visualization.test.ts +++ b/x-pack/plugins/lens/public/xy_visualization/visualization.test.ts @@ -476,7 +476,7 @@ describe('xy_visualization', () => { }); it('should copy previous column if passed and assign a new id', () => { expect( - xyVisualization.setDimension({ + xyVisualization.onDrop!({ frame, prevState: { ...exampleState(), @@ -488,10 +488,20 @@ describe('xy_visualization', () => { }, ], }, - layerId: 'annotation', - groupId: 'xAnnotation', - previousColumn: 'an2', - columnId: 'newColId', + dropType: 'duplicate_compatible', + source: { + layerId: 'annotation', + groupId: 'xAnnotation', + columnId: 'an2', + id: 'an2', + humanData: { label: 'an2' }, + }, + target: { + layerId: 'annotation', + groupId: 'xAnnotation', + columnId: 'newColId', + filterOperations: Boolean, + }, }).layers[0] ).toEqual({ layerId: 'annotation', @@ -501,7 +511,7 @@ describe('xy_visualization', () => { }); it('should reorder a dimension to a annotation layer', () => { expect( - xyVisualization.setDimension({ + xyVisualization.onDrop!({ frame, prevState: { ...exampleState(), @@ -513,10 +523,21 @@ describe('xy_visualization', () => { }, ], }, - layerId: 'annotation', - groupId: 'xAnnotation', - previousColumn: 'an2', - columnId: 'an1', + source: { + layerId: 'annotation', + groupId: 'xAnnotation', + columnId: 'an2', + id: 'an2', + humanData: { label: 'label' }, + filterOperations: () => true, + }, + target: { + layerId: 'annotation', + groupId: 'xAnnotation', + columnId: 'an1', + filterOperations: () => true, + }, + dropType: 'reorder', }).layers[0] ).toEqual({ layerId: 'annotation', @@ -524,6 +545,199 @@ describe('xy_visualization', () => { annotations: [exampleAnnotation2, exampleAnnotation], }); }); + + it('should duplicate the annotations and replace the target in another annotation layer', () => { + expect( + xyVisualization.onDrop!({ + frame, + prevState: { + ...exampleState(), + layers: [ + { + layerId: 'first', + layerType: 'annotations', + annotations: [exampleAnnotation], + }, + { + layerId: 'second', + layerType: 'annotations', + annotations: [exampleAnnotation2], + }, + ], + }, + source: { + layerId: 'first', + groupId: 'xAnnotation', + columnId: 'an1', + id: 'an1', + humanData: { label: 'label' }, + filterOperations: () => true, + }, + target: { + layerId: 'second', + groupId: 'xAnnotation', + columnId: 'an2', + filterOperations: () => true, + }, + dropType: 'replace_duplicate_compatible', + }).layers + ).toEqual([ + { + layerId: 'first', + layerType: layerTypes.ANNOTATIONS, + annotations: [exampleAnnotation], + }, + { + layerId: 'second', + layerType: layerTypes.ANNOTATIONS, + annotations: [{ ...exampleAnnotation, id: 'an2' }], + }, + ]); + }); + it('should swap the annotations between layers', () => { + expect( + xyVisualization.onDrop!({ + frame, + prevState: { + ...exampleState(), + layers: [ + { + layerId: 'first', + layerType: 'annotations', + annotations: [exampleAnnotation], + }, + { + layerId: 'second', + layerType: 'annotations', + annotations: [exampleAnnotation2], + }, + ], + }, + source: { + layerId: 'first', + groupId: 'xAnnotation', + columnId: 'an1', + id: 'an1', + humanData: { label: 'label' }, + filterOperations: () => true, + }, + target: { + layerId: 'second', + groupId: 'xAnnotation', + columnId: 'an2', + filterOperations: () => true, + }, + dropType: 'swap_compatible', + }).layers + ).toEqual([ + { + layerId: 'first', + layerType: layerTypes.ANNOTATIONS, + annotations: [exampleAnnotation2], + }, + { + layerId: 'second', + layerType: layerTypes.ANNOTATIONS, + annotations: [exampleAnnotation], + }, + ]); + }); + it('should replace the target in another annotation layer', () => { + expect( + xyVisualization.onDrop!({ + frame, + prevState: { + ...exampleState(), + layers: [ + { + layerId: 'first', + layerType: 'annotations', + annotations: [exampleAnnotation], + }, + { + layerId: 'second', + layerType: 'annotations', + annotations: [exampleAnnotation2], + }, + ], + }, + source: { + layerId: 'first', + groupId: 'xAnnotation', + columnId: 'an1', + id: 'an1', + humanData: { label: 'label' }, + filterOperations: () => true, + }, + target: { + layerId: 'second', + groupId: 'xAnnotation', + columnId: 'an2', + filterOperations: () => true, + }, + dropType: 'replace_compatible', + }).layers + ).toEqual([ + { + layerId: 'first', + layerType: layerTypes.ANNOTATIONS, + annotations: [], + }, + { + layerId: 'second', + layerType: layerTypes.ANNOTATIONS, + annotations: [exampleAnnotation], + }, + ]); + }); + it('should move compatible to another annotation layer', () => { + expect( + xyVisualization.onDrop!({ + frame, + prevState: { + ...exampleState(), + layers: [ + { + layerId: 'first', + layerType: 'annotations', + annotations: [exampleAnnotation], + }, + { + layerId: 'second', + layerType: 'annotations', + annotations: [], + }, + ], + }, + source: { + layerId: 'first', + groupId: 'xAnnotation', + columnId: 'an1', + id: 'an1', + humanData: { label: 'label' }, + filterOperations: () => true, + }, + target: { + layerId: 'second', + groupId: 'xAnnotation', + columnId: 'an2', + filterOperations: () => true, + }, + dropType: 'move_compatible', + }).layers + ).toEqual([ + { + layerId: 'first', + layerType: layerTypes.ANNOTATIONS, + annotations: [], + }, + { + layerId: 'second', + layerType: layerTypes.ANNOTATIONS, + annotations: [exampleAnnotation], + }, + ]); + }); }); }); diff --git a/x-pack/plugins/lens/public/xy_visualization/visualization.tsx b/x-pack/plugins/lens/public/xy_visualization/visualization.tsx index 4f89ba1fdcedf..dcf3ab3e42a47 100644 --- a/x-pack/plugins/lens/public/xy_visualization/visualization.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/visualization.tsx @@ -27,7 +27,7 @@ import { getSuggestions } from './xy_suggestions'; import { XyToolbar } from './xy_config_panel'; import { DimensionEditor } from './xy_config_panel/dimension_editor'; import { LayerHeader } from './xy_config_panel/layer_header'; -import type { Visualization, AccessorConfig, FramePublicAPI } from '../types'; +import { Visualization, AccessorConfig, FramePublicAPI } from '../types'; import { State, visualizationTypes, XYSuggestion, XYLayerConfig, XYDataLayerConfig } from './types'; import { layerTypes } from '../../common'; import { isHorizontalChart } from './state_helpers'; @@ -45,6 +45,7 @@ import { getAnnotationsSupportedLayer, setAnnotationsDimension, getUniqueLabels, + onAnnotationDrop, } from './annotations/helpers'; import { checkXAccessorCompatibility, @@ -71,6 +72,7 @@ import { ReferenceLinePanel } from './xy_config_panel/reference_line_config_pane import { AnnotationsPanel } from './xy_config_panel/annotations_config_panel'; import { DimensionTrigger } from '../shared_components/dimension_trigger'; import { defaultAnnotationLabel } from './annotations/helpers'; +import { onDropForVisualization } from '../editor_frame_service/editor_frame/config_panel/buttons/drop_targets_utils'; export const getXyVisualization = ({ datatableUtilities, @@ -303,6 +305,20 @@ export const getXyVisualization = ({ return getFirstDataLayer(state.layers)?.palette; }, + onDrop(props) { + const targetLayer: XYLayerConfig | undefined = props.prevState.layers.find( + (l) => l.layerId === props.target.layerId + ); + if (!targetLayer) { + throw new Error('target layer should exist'); + } + + if (isAnnotationsLayer(targetLayer)) { + return onAnnotationDrop?.(props) || props.prevState; + } + return onDropForVisualization(props, this); + }, + setDimension(props) { const { prevState, layerId, columnId, groupId } = props; diff --git a/x-pack/plugins/lens/public/xy_visualization/visualization_helpers.tsx b/x-pack/plugins/lens/public/xy_visualization/visualization_helpers.tsx index d390d081258a5..9b4ed872f1dc2 100644 --- a/x-pack/plugins/lens/public/xy_visualization/visualization_helpers.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/visualization_helpers.tsx @@ -334,6 +334,7 @@ export function validateLayersForDimension( export const isNumericMetric = (op: OperationMetadata) => !op.isBucketed && op.dataType === 'number'; + export const isNumericDynamicMetric = (op: OperationMetadata) => isNumericMetric(op) && !op.isStaticValue; export const isBucketed = (op: OperationMetadata) => op.isBucketed; diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 3eeda946ada8f..ae829d05815fb 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -209,48 +209,14 @@ "xpack.lens.dragDrop.announce.cancelled": "Mouvement annulé. {label} revenu à sa position initiale", "xpack.lens.dragDrop.announce.cancelledItem": "Mouvement annulé. {label} revenu au groupe {groupLabel} à la position {position}", "xpack.lens.dragDrop.announce.combine.short": " Maintenir la touche Contrôle enfoncée pour combiner", - "xpack.lens.dragDrop.announce.dropped.combineCompatible": "Combinaison de {label} avec {dropGroupLabel} à la position {dropPosition} et de {dropLabel} avec {groupLabel} à la position {position}", - "xpack.lens.dragDrop.announce.dropped.combineIncompatible": "Conversion de {label} en {nextLabel} dans le groupe {groupLabel} à la position {position} et combinaison avec {dropLabel} dans le groupe {dropGroupLabel} à la position {dropPosition}", - "xpack.lens.dragDrop.announce.dropped.duplicated": "{label} dupliqué dans le groupe {groupLabel} à la position {position}", - "xpack.lens.dragDrop.announce.dropped.duplicateIncompatible": "Copie de {label} convertie en {nextLabel} et ajoutée au groupe {groupLabel} à la position {position}", - "xpack.lens.dragDrop.announce.dropped.moveCompatible": "{label} déplacé dans le groupe {groupLabel} à la position {position}", - "xpack.lens.dragDrop.announce.dropped.moveIncompatible": "{label} converti en {nextLabel} et déplacé dans le groupe {groupLabel} à la position {position}", "xpack.lens.dragDrop.announce.dropped.reordered": "{label} réorganisé dans le groupe {groupLabel} de la position {prevPosition} à la position {position}", - "xpack.lens.dragDrop.announce.dropped.replaceDuplicateIncompatible": "Copie de {label} convertie en {nextLabel} et {dropLabel} remplacé dans le groupe {groupLabel} à la position {position}", - "xpack.lens.dragDrop.announce.dropped.replaceIncompatible": "{label} converti en {nextLabel} et {dropLabel} remplacé dans le groupe {groupLabel} à la position {position}", - "xpack.lens.dragDrop.announce.dropped.swapCompatible": "{label} déplacé dans {dropGroupLabel} à la position {dropPosition} et {dropLabel} dans {groupLabel} à la position {position}", - "xpack.lens.dragDrop.announce.dropped.swapIncompatible": "{label} converti en {nextLabel} dans le groupe {groupLabel} à la position {position} et permuté avec {dropLabel} dans le groupe {dropGroupLabel} à la position {dropPosition}", - "xpack.lens.dragDrop.announce.droppedDefault": "{label} ajouté dans le groupe {dropGroupLabel} à la position {position}", "xpack.lens.dragDrop.announce.droppedNoPosition": "{label} ajouté à {dropLabel}", "xpack.lens.dragDrop.announce.duplicate.short": " Maintenez la touche Alt ou Option enfoncée pour dupliquer.", - "xpack.lens.dragDrop.announce.duplicated.combine": "Combiner {dropLabel} avec {label} dans {groupLabel} à la position {position}", - "xpack.lens.dragDrop.announce.duplicated.replace": "{dropLabel} remplacé par {label} dans {groupLabel} à la position {position}", - "xpack.lens.dragDrop.announce.duplicated.replaceDuplicateCompatible": "{dropLabel} remplacé par une copie de {label} dans {groupLabel} à la position {position}", "xpack.lens.dragDrop.announce.lifted": "{label} levé", - "xpack.lens.dragDrop.announce.selectedTarget.combine": "Combinez {dropLabel} dans le groupe {dropGroupLabel} à la position {dropPosition} avec {label}. Appuyez sur la barre d’espace ou sur Entrée pour combiner.", - "xpack.lens.dragDrop.announce.selectedTarget.combineCompatible": "Combinez {label} dans le groupe {groupLabel} à la position {position} avec {dropLabel} dans le groupe {dropGroupLabel} à la position {dropPosition}. Maintenez la touche Contrôle enfoncée et appuyez sur la barre d’espace ou sur Entrée pour combiner.", - "xpack.lens.dragDrop.announce.selectedTarget.combineIncompatible": "Convertissez {label} en {nextLabel} dans le groupe {groupLabel} à la position {position} et combinez avec {dropLabel} dans le groupe {dropGroupLabel} à la position {dropPosition}. Maintenez la touche Contrôle enfoncée et appuyez sur la barre d’espace ou sur Entrée pour combiner.", - "xpack.lens.dragDrop.announce.selectedTarget.combineMain": "Vous faites glisser {label} à partir de {groupLabel} à la position {position} sur {dropLabel} à partir du groupe {dropGroupLabel} à la position {dropPosition}. Appuyer sur la barre d’espace ou sur Entrée pour combiner {dropLabel} avec {label}.{duplicateCopy}{swapCopy}{combineCopy}", - "xpack.lens.dragDrop.announce.selectedTarget.default": "Ajoutez {label} au groupe {dropGroupLabel} à la position {position}. Appuyer sur la barre d'espace ou sur Entrée pour ajouter", "xpack.lens.dragDrop.announce.selectedTarget.defaultNoPosition": "Ajoutez {label} à {dropLabel}. Appuyer sur la barre d'espace ou sur Entrée pour ajouter", - "xpack.lens.dragDrop.announce.selectedTarget.duplicated": "Dupliquez {label} dans le groupe {dropGroupLabel} à la position {position}. Maintenir la touche Alt ou Option enfoncée et appuyer sur la barre d'espace ou sur Entrée pour dupliquer", - "xpack.lens.dragDrop.announce.selectedTarget.duplicatedInGroup": "Dupliquez {label} dans le groupe {dropGroupLabel} à la position {position}. Appuyer sur la barre d'espace ou sur Entrée pour dupliquer", - "xpack.lens.dragDrop.announce.selectedTarget.duplicateIncompatible": "Convertissez la copie de {label} en {nextLabel} et ajoutez-la au groupe {groupLabel} à la position {position}. Maintenir la touche Alt ou Option enfoncée et appuyer sur la barre d'espace ou sur Entrée pour dupliquer", - "xpack.lens.dragDrop.announce.selectedTarget.moveCompatible": "Déplacez {label} dans le groupe {dropGroupLabel} à la position {dropPosition}. Appuyer sur la barre d'espace ou sur Entrée pour déplacer", - "xpack.lens.dragDrop.announce.selectedTarget.moveCompatibleMain": "Vous faites glisser {label} de {groupLabel} à la position {position} vers la position {dropPosition} dans le groupe {dropGroupLabel}. Appuyez sur la barre d'espace ou sur Entrée pour déplacer.{duplicateCopy}{swapCopy}", - "xpack.lens.dragDrop.announce.selectedTarget.moveIncompatible": "Convertissez {label} en {nextLabel} et déplacez-le dans le groupe {dropGroupLabel} à la position {dropPosition}. Appuyer sur la barre d'espace ou sur Entrée pour déplacer", - "xpack.lens.dragDrop.announce.selectedTarget.moveIncompatibleMain": "Vous faites glisser {label} de {groupLabel} à la position {position} vers la position {dropPosition} dans le groupe {dropGroupLabel}. Appuyez sur la barre d'espace ou sur Entrée pour convertir {label} en {nextLabel} et déplacer.{duplicateCopy}{swapCopy}", "xpack.lens.dragDrop.announce.selectedTarget.noSelected": "Aucune cible sélectionnée. Utiliser les touches fléchées pour sélectionner une cible", "xpack.lens.dragDrop.announce.selectedTarget.reordered": "Réorganisez {label} dans le groupe {groupLabel} de la position {prevPosition} à la position {position}. Appuyer sur la barre d'espace ou sur Entrée pour réorganiser", "xpack.lens.dragDrop.announce.selectedTarget.reorderedBack": "{label} revenu à sa position initiale {prevPosition}", - "xpack.lens.dragDrop.announce.selectedTarget.replace": "Remplacez {dropLabel} dans le groupe {dropGroupLabel} à la position {dropPosition} avec {label}. Appuyez sur la barre d'espace ou sur Entrée pour remplacer.", - "xpack.lens.dragDrop.announce.selectedTarget.replaceDuplicateCompatible": "Dupliquez {label} et remplacez {dropLabel} dans {groupLabel} à la position {position}. Maintenir la touche Alt ou Option enfoncée et appuyer sur la barre d'espace ou sur Entrée pour dupliquer et remplacer", - "xpack.lens.dragDrop.announce.selectedTarget.replaceDuplicateIncompatible": "Convertissez la copie de {label} en {nextLabel} et remplacez {dropLabel} dans le groupe {groupLabel} à la position {position}. Maintenir la touche Alt ou Option enfoncée et appuyer sur la barre d'espace ou sur Entrée pour dupliquer et remplacer", - "xpack.lens.dragDrop.announce.selectedTarget.replaceIncompatible": "Convertissez {label} en {nextLabel} et remplacez {dropLabel} dans le groupe {dropGroupLabel} à la position {dropPosition}. Appuyer sur la barre d'espace ou sur Entrée pour remplacer", - "xpack.lens.dragDrop.announce.selectedTarget.replaceIncompatibleMain": "Vous faites glisser {label} à partir de {groupLabel} à la position {position} sur {dropLabel} à partir du groupe {dropGroupLabel} à la position {dropPosition}. Appuyer sur la barre d'espace ou sur Entrée pour convertir {label} en {nextLabel} et remplacer {dropLabel}.{duplicateCopy}{swapCopy}", - "xpack.lens.dragDrop.announce.selectedTarget.replaceMain": "Vous faites glisser {label} à partir de {groupLabel} à la position {position} sur {dropLabel} à partir du groupe {dropGroupLabel} à la position {dropPosition}. Appuyer sur la barre d'espace ou sur Entrée pour remplacer {dropLabel} par {label}.{duplicateCopy}{swapCopy}", - "xpack.lens.dragDrop.announce.selectedTarget.swapCompatible": "Permutez {label} dans le groupe {groupLabel} à la position {position} avec {dropLabel} dans le groupe {dropGroupLabel} à la position {dropPosition}. Maintenir la touche Maj enfoncée tout en appuyant sur la barre d'espace ou sur Entrée pour permuter", - "xpack.lens.dragDrop.announce.selectedTarget.swapIncompatible": "Convertir {label} en {nextLabel} dans le groupe {groupLabel} à la position {position} et permutez avec {dropLabel} dans le groupe {dropGroupLabel} à la position {dropPosition}. Maintenir la touche Maj enfoncée tout en appuyant sur la barre d'espace ou sur Entrée pour permuter", "xpack.lens.dragDrop.announce.swap.short": " Maintenez la touche Maj enfoncée pour permuter.", "xpack.lens.dragDrop.combine": "Combiner", "xpack.lens.dragDrop.control": "Contrôle", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 2fa35f6e723b2..e8e2fc397bf63 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -214,43 +214,14 @@ "xpack.lens.dragDrop.announce.cancelled": "移動がキャンセルされました。{label}は初期位置に戻りました", "xpack.lens.dragDrop.announce.cancelledItem": "移動がキャンセルされました。{label}は位置{position}の{groupLabel}グループに戻りました", "xpack.lens.dragDrop.announce.combine.short": " Ctrlを押しながら結合します", - "xpack.lens.dragDrop.announce.dropped.combineCompatible": "位置{dropPosition}で{label}を{dropGroupLabel}に移動し、位置{position}で{dropLabel}を {groupLabel}グループに結合しました", - "xpack.lens.dragDrop.announce.dropped.combineIncompatible": "位置{position}で{label}を{groupLabel}の{nextLabel}に変換し、位置{dropPosition}で{dropGroupLabel}グループの{dropLabel}と結合しました", - "xpack.lens.dragDrop.announce.dropped.duplicated": "位置{position}の{groupLabel}グループで{label}を複製しました", - "xpack.lens.dragDrop.announce.dropped.duplicateIncompatible": "{label}のコピーを{nextLabel}に変換し、位置{position}の{groupLabel}グループに追加しました", - "xpack.lens.dragDrop.announce.dropped.moveCompatible": "位置{position}の{groupLabel}グループに{label}を移動しました", - "xpack.lens.dragDrop.announce.dropped.moveIncompatible": "{label}を{nextLabel}に変換し、位置{position}の{groupLabel}グループに移動しました", "xpack.lens.dragDrop.announce.dropped.reordered": "{groupLabel}グループの{label}を位置{prevPosition}から位置{position}に並べ替えました", - "xpack.lens.dragDrop.announce.dropped.replaceDuplicateIncompatible": "{label}のコピーを{nextLabel}に変換し、位置{position}の{groupLabel}グループで{dropLabel}を置き換えました", - "xpack.lens.dragDrop.announce.dropped.replaceIncompatible": "{label}を{nextLabel}に変換し、位置{position}の{groupLabel}グループで{dropLabel}を置き換えました", - "xpack.lens.dragDrop.announce.dropped.swapCompatible": "位置{dropPosition}で{label}を{dropGroupLabel}に移動し、位置{position}で{dropLabel}を {groupLabel}グループに移動しました", - "xpack.lens.dragDrop.announce.dropped.swapIncompatible": "位置{position}で{label}を{groupLabel}の{nextLabel}に変換し、位置{dropPosition}で{dropGroupLabel}グループの{dropLabel}と入れ替えました", - "xpack.lens.dragDrop.announce.droppedDefault": "位置{position}の{dropGroupLabel}グループで{label}を追加しました", "xpack.lens.dragDrop.announce.droppedNoPosition": "{label}を{dropLabel}に追加しました", "xpack.lens.dragDrop.announce.duplicate.short": " AltキーまたはOptionを押し続けると複製します。", - "xpack.lens.dragDrop.announce.duplicated.combine": "位置{position}の{groupLabel}で{dropLabel}を{label}と結合しました", - "xpack.lens.dragDrop.announce.duplicated.replace": "位置{position}の{groupLabel}で{dropLabel}を{label}に置き換えました", - "xpack.lens.dragDrop.announce.duplicated.replaceDuplicateCompatible": "位置{position}の{groupLabel}で{dropLabel}を{label}のコピーに置き換えました", "xpack.lens.dragDrop.announce.lifted": "{label}を上げました", - "xpack.lens.dragDrop.announce.selectedTarget.combineCompatible": "位置{position}の{groupLabel}の{label}を、位置{dropPosition}の{dropGroupLabel}グループの{dropLabel}と結合します。Ctrlキーを押しながらスペースバーまたはEnterキーを押すと、結合します", - "xpack.lens.dragDrop.announce.selectedTarget.combineIncompatible": "位置{position}で{label}を{groupLabel}の{nextLabel}に変換し、位置{dropPosition}で{dropGroupLabel}グループの{dropLabel}と結合します。Ctrlキーを押しながらスペースバーまたはEnterキーを押すと、結合します", - "xpack.lens.dragDrop.announce.selectedTarget.default": "位置{position}の{dropGroupLabel}グループに{label}を追加しました。スペースまたはEnterを押して追加します", "xpack.lens.dragDrop.announce.selectedTarget.defaultNoPosition": "{label}を{dropLabel}に追加します。スペースまたはEnterを押して追加します", - "xpack.lens.dragDrop.announce.selectedTarget.duplicated": "位置{position}の{dropGroupLabel}グループに{label}を複製しました。AltまたはOptionを押しながらスペースバーまたはEnterキーを押すと、複製します", - "xpack.lens.dragDrop.announce.selectedTarget.duplicatedInGroup": "位置{position}の{dropGroupLabel}グループに{label}を複製しました。スペースまたはEnterを押して複製します", - "xpack.lens.dragDrop.announce.selectedTarget.duplicateIncompatible": "{label}のコピーを{nextLabel}に変換し、位置{position}で{groupLabel}グループに移動します。AltまたはOptionを押しながらスペースバーまたはEnterキーを押すと、複製します", - "xpack.lens.dragDrop.announce.selectedTarget.moveCompatibleMain": "位置{position}で{groupLabel}の{label}を{dropGroupLabel}グループの位置{dropPosition}にドラッグしています。スペースバーまたはEnterキーを押すと移動します。{duplicateCopy}{swapCopy}", - "xpack.lens.dragDrop.announce.selectedTarget.moveIncompatible": "{label}を{nextLabel}に変換し、位置{dropPosition}で{dropGroupLabel}グループに移動します。スペースまたはEnterを押して移動します", - "xpack.lens.dragDrop.announce.selectedTarget.moveIncompatibleMain": "位置{position}で{groupLabel}の{label}を{dropGroupLabel}グループの位置{dropPosition}にドラッグしています。スペースバーまたはEnterキーを押して、{label}を{nextLabel}に変換して移動します。{duplicateCopy}{swapCopy}", "xpack.lens.dragDrop.announce.selectedTarget.noSelected": "対象が選択されていません。矢印キーを使用して対象を選択してください", "xpack.lens.dragDrop.announce.selectedTarget.reordered": "{groupLabel}グループの{label}を位置{prevPosition}から位置{position}に並べ替えます。スペースまたはEnterを押して並べ替えます", "xpack.lens.dragDrop.announce.selectedTarget.reorderedBack": "{label}は初期位置{prevPosition}に戻りました", - "xpack.lens.dragDrop.announce.selectedTarget.replaceDuplicateCompatible": "位置{position}で{label}を複製し、{groupLabel}グループで{dropLabel}を置き換えます。AltまたはOptionを押しながらスペースバーまたはEnterキーを押すと、複製して置換します", - "xpack.lens.dragDrop.announce.selectedTarget.replaceDuplicateIncompatible": "{label}のコピーを{nextLabel}に変換し、位置{position}で{groupLabel}グループの{dropLabel}を置き換えます。AltまたはOptionを押しながらスペースバーまたはEnterキーを押すと、複製して置換します", - "xpack.lens.dragDrop.announce.selectedTarget.replaceIncompatibleMain": "位置{position}の{groupLabel}の{label}を、位置{dropPosition}の{dropGroupLabel}グループの{dropLabel}にドラッグしています。スペースバーまたはEnterキーを押して、{label}を{nextLabel}に変換して、{dropLabel}を置き換えます。{duplicateCopy}{swapCopy}", - "xpack.lens.dragDrop.announce.selectedTarget.replaceMain": "位置{position}の{groupLabel}の{label}を、位置{dropPosition}の{dropGroupLabel}グループの{dropLabel}にドラッグしています。スペースまたはEnterを押して、{dropLabel}を{label}で置き換えます。{duplicateCopy}{swapCopy}", - "xpack.lens.dragDrop.announce.selectedTarget.swapCompatible": "位置{position}の{groupLabel}の{label}を、位置{dropPosition}の{dropGroupLabel}グループの{dropLabel}と入れ替えます。Shiftキーを押しながらスペースバーまたはEnterキーを押すと、入れ替えます", - "xpack.lens.dragDrop.announce.selectedTarget.swapIncompatible": "位置{position}で{label}を{groupLabel}の{nextLabel}に変換し、位置{dropPosition}で{dropGroupLabel}グループの{dropLabel}と入れ替えます。Shiftキーを押しながらスペースバーまたはEnterキーを押すと、入れ替えます", "xpack.lens.dragDrop.announce.swap.short": " Shiftキーを押すと入れ替えます。", "xpack.lens.dragDrop.combine": "結合", "xpack.lens.dragDrop.control": "Control", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 01b30dda57b2c..09d512eae30db 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -214,48 +214,14 @@ "xpack.lens.dragDrop.announce.cancelled": "移动已取消。{label} 将返回至其初始位置", "xpack.lens.dragDrop.announce.cancelledItem": "移动已取消。{label} 返回至 {groupLabel} 组中的位置 {position}", "xpack.lens.dragDrop.announce.combine.short": " 按住 Control 键组合", - "xpack.lens.dragDrop.announce.dropped.combineCompatible": "已将 {label} 组合到 {dropGroupLabel} 中的位置 {dropPosition} 并将 {dropLabel} 组合到组 {groupLabel} 中的位置 {position}", - "xpack.lens.dragDrop.announce.dropped.combineIncompatible": "已将 {label} 转换为组 {groupLabel} 中位置 {position} 上的 {nextLabel},并与组 {dropGroupLabel} 中位置 {dropPosition} 上的 {dropLabel} 组合", - "xpack.lens.dragDrop.announce.dropped.duplicated": "已在 {groupLabel} 组中的位置 {position} 复制 {label}", - "xpack.lens.dragDrop.announce.dropped.duplicateIncompatible": "已将 {label} 的副本转换为 {nextLabel} 并添加 {groupLabel} 组中的位置 {position}", - "xpack.lens.dragDrop.announce.dropped.moveCompatible": "已将 {label} 移到 {groupLabel} 组中的位置 {position}", - "xpack.lens.dragDrop.announce.dropped.moveIncompatible": "已将 {label} 转换为 {nextLabel} 并移到 {groupLabel} 组中的位置 {position}", "xpack.lens.dragDrop.announce.dropped.reordered": "已将 {groupLabel} 组中的 {label} 从位置 {prevPosition} 重新排到位置 {position}", - "xpack.lens.dragDrop.announce.dropped.replaceDuplicateIncompatible": "已将 {label} 的副本转换为 {nextLabel} 并替换了 {groupLabel} 组中位置 {position} 上的 {dropLabel}", - "xpack.lens.dragDrop.announce.dropped.replaceIncompatible": "已将 {label} 转换为 {nextLabel} 并替换了 {groupLabel} 组中位置 {position} 上的 {dropLabel}", - "xpack.lens.dragDrop.announce.dropped.swapCompatible": "已将 {label} 移至 {dropGroupLabel} 中的位置 {dropPosition} 并将 {dropLabel} 移至组 {groupLabel} 中的位置 {position}", - "xpack.lens.dragDrop.announce.dropped.swapIncompatible": "已将 {label} 转换为组 {groupLabel} 中位置 {position} 上的 {nextLabel},并与组 {dropGroupLabel} 中位置 {dropPosition} 上的 {dropLabel} 交换", - "xpack.lens.dragDrop.announce.droppedDefault": "已将 {label} 添加到 {dropGroupLabel} 组中的位置 {position}", "xpack.lens.dragDrop.announce.droppedNoPosition": "已将 {label} 添加到 {dropLabel}", "xpack.lens.dragDrop.announce.duplicate.short": " 按住 alt 或 option 键以复制。", - "xpack.lens.dragDrop.announce.duplicated.combine": "将 {dropLabel} 与 {groupLabel} 中位置 {position} 上的 {label} 组合", - "xpack.lens.dragDrop.announce.duplicated.replace": "已将 {groupLabel} 组中位置 {position} 上的 {dropLabel} 替换为 {label}", - "xpack.lens.dragDrop.announce.duplicated.replaceDuplicateCompatible": "已将 {groupLabel} 组中位置 {position} 上的 {dropLabel} 替换为 {label} 的副本", "xpack.lens.dragDrop.announce.lifted": "已提升 {label}", - "xpack.lens.dragDrop.announce.selectedTarget.combine": "将 {dropGroupLabel} 组中位置 {dropPosition} 上的 {dropLabel} 与 {label} 组合。按空格键或 enter 键组合。", - "xpack.lens.dragDrop.announce.selectedTarget.combineCompatible": "将组 {groupLabel} 中位置 {position} 上的 {label} 与组 {dropGroupLabel} 中位置 {dropPosition} 上的 {dropLabel} 组合。按住 Control 键并按空格键或 enter 键组合", - "xpack.lens.dragDrop.announce.selectedTarget.combineIncompatible": "将 {label} 转换为组 {groupLabel} 中位置 {position} 上的 {nextLabel},并与组 {dropGroupLabel} 中位置 {dropPosition} 上的 {dropLabel} 组合。按住 Control 键并按空格键或 enter 键组合", - "xpack.lens.dragDrop.announce.selectedTarget.combineMain": "您正将 {groupLabel} 中位置 {position} 上的{label} 拖到 {dropGroupLabel} 组中位置 {dropPosition} 上的 {dropLabel}。按空格键或 enter 键以将 {dropLabel} 与 {label} 组合。{duplicateCopy}{swapCopy}{combineCopy}", - "xpack.lens.dragDrop.announce.selectedTarget.default": "将 {label} 添加到 {dropGroupLabel} 组中的位置 {position}。按空格键或 enter 键添加", "xpack.lens.dragDrop.announce.selectedTarget.defaultNoPosition": "将 {label} 添加到 {dropLabel}。按空格键或 enter 键添加", - "xpack.lens.dragDrop.announce.selectedTarget.duplicated": "将 {label} 复制到 {dropGroupLabel} 组中的位置 {position}。按住 Alt 或 Option 并按空格键或 enter 键以复制", - "xpack.lens.dragDrop.announce.selectedTarget.duplicatedInGroup": "将 {label} 复制到 {dropGroupLabel} 组中的位置 {position}。按空格键或 enter 键复制", - "xpack.lens.dragDrop.announce.selectedTarget.duplicateIncompatible": "将 {label} 转换为 {nextLabel} 并移到 {groupLabel} 组中的位置 {position}。按住 Alt 或 Option 并按空格键或 enter 键以复制", - "xpack.lens.dragDrop.announce.selectedTarget.moveCompatible": "将 {label} 移至 {dropGroupLabel} 组中的位置 {dropPosition}。按空格键或 enter 键移动", - "xpack.lens.dragDrop.announce.selectedTarget.moveCompatibleMain": "您正将 {groupLabel} 中位置 {position} 上的{label} 拖到 {dropGroupLabel} 组中的位置 {dropPosition} 上。按空格键或 enter 键移动。{duplicateCopy}{swapCopy}", - "xpack.lens.dragDrop.announce.selectedTarget.moveIncompatible": "将 {label} 转换为 {nextLabel} 并移到 {dropGroupLabel} 组中的位置 {dropPosition}。按空格键或 enter 键移动", - "xpack.lens.dragDrop.announce.selectedTarget.moveIncompatibleMain": "您正将 {groupLabel} 中位置 {position} 上的{label} 拖到 {dropGroupLabel} 组中的位置 {dropPosition} 上。按空格键或 enter 键以将 {label} 转换为 {nextLabel} 并移动。{duplicateCopy}{swapCopy}", "xpack.lens.dragDrop.announce.selectedTarget.noSelected": "未选择任何目标。使用箭头键选择目标", "xpack.lens.dragDrop.announce.selectedTarget.reordered": "将 {groupLabel} 组中的 {label} 从位置 {prevPosition} 重新排到位置 {position}。按空格键或 enter 键重新排列", "xpack.lens.dragDrop.announce.selectedTarget.reorderedBack": "{label} 已返回至其初始位置 {prevPosition}", - "xpack.lens.dragDrop.announce.selectedTarget.replace": "将 {dropGroupLabel} 组中位置 {dropPosition} 上的 {dropLabel} 替换为 {label}。按空格键或 enter 键替换。", - "xpack.lens.dragDrop.announce.selectedTarget.replaceDuplicateCompatible": "复制 {label} 并替换 {groupLabel} 中位置 {position} 上的 {dropLabel}。按住 Alt 或 Option 并按空格键或 enter 键以复制并替换", - "xpack.lens.dragDrop.announce.selectedTarget.replaceDuplicateIncompatible": "将 {label} 的副本转换为 {nextLabel} 并替换 {groupLabel} 组中位置 {position} 上的 {dropLabel}。按住 Alt 或 Option 并按空格键或 enter 键以复制并替换", - "xpack.lens.dragDrop.announce.selectedTarget.replaceIncompatible": "将 {label} 转换为 {nextLabel} 并替换 {dropGroupLabel} 组中位置 {dropPosition} 上的 {dropLabel}。按空格键或 enter 键替换", - "xpack.lens.dragDrop.announce.selectedTarget.replaceIncompatibleMain": "您正将 {groupLabel} 中位置 {position} 上的{label} 拖到 {dropGroupLabel} 组中位置 {dropPosition} 上的 {dropLabel}。按空格键或 enter 键以将 {label} 转换为 {nextLabel} 并替换 {dropLabel}。{duplicateCopy}{swapCopy}", - "xpack.lens.dragDrop.announce.selectedTarget.replaceMain": "您正将 {groupLabel} 中位置 {position} 上的{label} 拖到 {dropGroupLabel} 组中位置 {dropPosition} 上的 {dropLabel}。按空格键或 enter 键以将 {dropLabel} 替换为 {label}。{duplicateCopy}{swapCopy}", - "xpack.lens.dragDrop.announce.selectedTarget.swapCompatible": "将组 {groupLabel} 中位置 {position} 上的 {label} 与组 {dropGroupLabel} 中位置 {dropPosition} 上的 {dropLabel} 交换。按住 Shift 键并按空格键或 enter 键交换", - "xpack.lens.dragDrop.announce.selectedTarget.swapIncompatible": "将 {label} 转换为组 {groupLabel} 中位置 {position} 上的 {nextLabel},并与组 {dropGroupLabel} 中位置 {dropPosition} 上的 {dropLabel} 交换。按住 Shift 键并按空格键或 enter 键交换", "xpack.lens.dragDrop.announce.swap.short": " 按住 Shift 键交换。", "xpack.lens.dragDrop.combine": "组合", "xpack.lens.dragDrop.control": "Control 键", diff --git a/x-pack/test/accessibility/apps/lens.ts b/x-pack/test/accessibility/apps/lens.ts index 18459b56c0542..854ff1b349e49 100644 --- a/x-pack/test/accessibility/apps/lens.ts +++ b/x-pack/test/accessibility/apps/lens.ts @@ -146,23 +146,17 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.lens.createLayer(); await PageObjects.lens.switchToVisualization('area'); - await PageObjects.lens.configureDimension( - { - dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', - operation: 'date_histogram', - field: '@timestamp', - }, - 1 - ); + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); - await PageObjects.lens.configureDimension( - { - dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', - operation: 'median', - field: 'bytes', - }, - 1 - ); + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'median', + field: 'bytes', + }); await a11y.testAppSnapshot(); }); diff --git a/x-pack/test/functional/apps/lens/group1/smokescreen.ts b/x-pack/test/functional/apps/lens/group1/smokescreen.ts index 70887b337114f..2f82218b42a7a 100644 --- a/x-pack/test/functional/apps/lens/group1/smokescreen.ts +++ b/x-pack/test/functional/apps/lens/group1/smokescreen.ts @@ -125,23 +125,17 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(await PageObjects.lens.hasChartSwitchWarning('line')).to.eql(false); await PageObjects.lens.switchToVisualization('line'); - await PageObjects.lens.configureDimension( - { - dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', - operation: 'terms', - field: 'geo.src', - }, - 1 - ); + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'geo.src', + }); - await PageObjects.lens.configureDimension( - { - dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', - operation: 'median', - field: 'bytes', - }, - 1 - ); + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'median', + field: 'bytes', + }); expect(await PageObjects.lens.getLayerCount()).to.eql(2); await PageObjects.lens.removeLayer(); @@ -308,23 +302,17 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.lens.createLayer(); - await PageObjects.lens.configureDimension( - { - dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', - operation: 'terms', - field: 'geo.src', - }, - 1 - ); + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'geo.src', + }); - await PageObjects.lens.configureDimension( - { - dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', - operation: 'average', - field: 'bytes', - }, - 1 - ); + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'average', + field: 'bytes', + }); await PageObjects.lens.save('twolayerchart'); await testSubjects.click('lnsSuggestion-asDonut > lnsSuggestion'); diff --git a/x-pack/test/functional/apps/lens/group1/table.ts b/x-pack/test/functional/apps/lens/group1/table.ts index 18ecc2e90cfe4..7bf9b49c53d8d 100644 --- a/x-pack/test/functional/apps/lens/group1/table.ts +++ b/x-pack/test/functional/apps/lens/group1/table.ts @@ -73,10 +73,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('should allow to transpose columns', async () => { - await PageObjects.lens.dragDimensionToDimension( - 'lnsDatatable_rows > lns-dimensionTrigger', - 'lnsDatatable_columns > lns-empty-dimension' - ); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lnsDatatable_rows > lns-dimensionTrigger', + to: 'lnsDatatable_columns > lns-empty-dimension', + }); expect(await PageObjects.lens.getDatatableHeaderText(0)).to.equal('@timestamp per 3 hours'); expect(await PageObjects.lens.getDatatableHeaderText(1)).to.equal( '169.228.188.120 › Average of bytes' diff --git a/x-pack/test/functional/apps/lens/group2/dashboard.ts b/x-pack/test/functional/apps/lens/group2/dashboard.ts index 787a0a6a6d99a..a6f315deba86d 100644 --- a/x-pack/test/functional/apps/lens/group2/dashboard.ts +++ b/x-pack/test/functional/apps/lens/group2/dashboard.ts @@ -183,23 +183,17 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(await PageObjects.lens.hasChartSwitchWarning('line')).to.eql(false); await PageObjects.lens.switchToVisualization('line'); - await PageObjects.lens.configureDimension( - { - dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', - operation: 'date_histogram', - field: '@timestamp', - }, - 1 - ); + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); - await PageObjects.lens.configureDimension( - { - dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', - operation: 'median', - field: 'bytes', - }, - 1 - ); + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'median', + field: 'bytes', + }); await PageObjects.lens.saveAndReturn(); await panelActions.openContextMenu(); diff --git a/x-pack/test/functional/apps/lens/group3/annotations.ts b/x-pack/test/functional/apps/lens/group3/annotations.ts index 2b641c6c161d4..62e5edb564871 100644 --- a/x-pack/test/functional/apps/lens/group3/annotations.ts +++ b/x-pack/test/functional/apps/lens/group3/annotations.ts @@ -51,10 +51,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should duplicate the style when duplicating an annotation and group them in the chart', async () => { // drag and drop to the empty field to generate a duplicate - await PageObjects.lens.dragDimensionToDimension( - 'lnsXY_xAnnotationsPanel > lns-dimensionTrigger', - 'lnsXY_xAnnotationsPanel > lns-empty-dimension' - ); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lnsXY_xAnnotationsPanel > lns-dimensionTrigger', + to: 'lnsXY_xAnnotationsPanel > lns-empty-dimension', + }); await ( await find.byCssSelector( diff --git a/x-pack/test/functional/apps/lens/group3/drag_and_drop.ts b/x-pack/test/functional/apps/lens/group3/drag_and_drop.ts index dec72008d6f04..626527a9c35cf 100644 --- a/x-pack/test/functional/apps/lens/group3/drag_and_drop.ts +++ b/x-pack/test/functional/apps/lens/group3/drag_and_drop.ts @@ -8,8 +8,10 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; -export default function ({ getPageObjects }: FtrProviderContext) { +export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header']); + + const listingTable = getService('listingTable'); const xyChartContainer = 'xyVisChart'; describe('lens drag and drop tests', () => { @@ -72,10 +74,10 @@ export default function ({ getPageObjects }: FtrProviderContext) { await PageObjects.lens.getDimensionTriggersTexts('lnsXY_splitDimensionPanel') ).to.eql(['Top 3 values of clientip']); - await PageObjects.lens.dragDimensionToDimension( - 'lnsXY_xDimensionPanel > lns-dimensionTrigger', - 'lnsXY_splitDimensionPanel > lns-dimensionTrigger' - ); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lns-layerPanel-0 > lnsXY_xDimensionPanel > lns-dimensionTrigger', + to: 'lns-layerPanel-0 > lnsXY_splitDimensionPanel > lns-dimensionTrigger', + }); expect(await PageObjects.lens.getDimensionTriggersTexts('lnsXY_xDimensionPanel')).to.eql( [] @@ -90,10 +92,10 @@ export default function ({ getPageObjects }: FtrProviderContext) { await PageObjects.lens.getDimensionTriggersTexts('lnsXY_splitDimensionPanel') ).to.eql(['Top 3 values of @message.raw']); - await PageObjects.lens.dragDimensionToDimension( - 'lnsXY_splitDimensionPanel > lns-dimensionTrigger', - 'lnsXY_yDimensionPanel > lns-dimensionTrigger' - ); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lnsXY_splitDimensionPanel > lns-dimensionTrigger', + to: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + }); expect( await PageObjects.lens.getDimensionTriggersTexts('lnsXY_splitDimensionPanel') @@ -106,14 +108,14 @@ export default function ({ getPageObjects }: FtrProviderContext) { ]); }); it('should duplicate the column when dragging to empty dimension in the same group', async () => { - await PageObjects.lens.dragDimensionToDimension( - 'lnsXY_yDimensionPanel > lns-dimensionTrigger', - 'lnsXY_yDimensionPanel > lns-empty-dimension' - ); - await PageObjects.lens.dragDimensionToDimension( - 'lnsXY_yDimensionPanel > lns-dimensionTrigger', - 'lnsXY_yDimensionPanel > lns-empty-dimension' - ); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + to: 'lnsXY_yDimensionPanel > lns-empty-dimension', + }); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + to: 'lnsXY_yDimensionPanel > lns-empty-dimension', + }); expect(await PageObjects.lens.getDimensionTriggersTexts('lnsXY_yDimensionPanel')).to.eql([ 'Unique count of @message.raw', 'Unique count of @message.raw [1]', @@ -121,10 +123,10 @@ export default function ({ getPageObjects }: FtrProviderContext) { ]); }); it('should move duplicated column to non-compatible dimension group', async () => { - await PageObjects.lens.dragDimensionToDimension( - 'lnsXY_yDimensionPanel > lns-dimensionTrigger', - 'lnsXY_xDimensionPanel > lns-empty-dimension' - ); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + to: 'lnsXY_xDimensionPanel > lns-empty-dimension', + }); expect(await PageObjects.lens.getDimensionTriggersTexts('lnsXY_yDimensionPanel')).to.eql([ 'Unique count of @message.raw', 'Unique count of @message.raw [1]', @@ -340,5 +342,132 @@ export default function ({ getPageObjects }: FtrProviderContext) { ]); }); }); + + describe('dropping between layers', () => { + it('should move the column', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('lnsXYvis'); + await PageObjects.lens.clickVisualizeListItemTitle('lnsXYvis'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.createLayer('data'); + + await PageObjects.lens.dragDimensionToExtraDropType( + 'lns-layerPanel-0 > lnsXY_xDimensionPanel > lns-dimensionTrigger', + 'lns-layerPanel-1 > lnsXY_xDimensionPanel', + 'duplicate' + ); + + await PageObjects.lens.assertFocusedDimension('@timestamp [1]'); + + await PageObjects.lens.dragDimensionToExtraDropType( + 'lns-layerPanel-0 > lnsXY_yDimensionPanel > lns-dimensionTrigger', + 'lns-layerPanel-1 > lnsXY_yDimensionPanel', + 'duplicate' + ); + + await PageObjects.lens.assertFocusedDimension('Average of bytes [1]'); + expect(await PageObjects.lens.getDimensionTriggersTexts('lns-layerPanel-0')).to.eql([ + '@timestamp', + 'Average of bytes', + 'Top values of ip', + ]); + expect(await PageObjects.lens.getDimensionTriggersTexts('lns-layerPanel-1')).to.eql([ + '@timestamp [1]', + 'Average of bytes [1]', + ]); + }); + + it('should move formula to empty dimension', async () => { + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + operation: 'formula', + formula: `moving_average(average(bytes), window=5`, + }); + await PageObjects.lens.dragDimensionToExtraDropType( + 'lns-layerPanel-0 > lnsXY_yDimensionPanel > lns-dimensionTrigger', + 'lns-layerPanel-1 > lnsXY_yDimensionPanel', + 'duplicate' + ); + + expect(await PageObjects.lens.getDimensionTriggersTexts('lns-layerPanel-0')).to.eql([ + '@timestamp', + 'moving_average(average(bytes), window=5)', + 'Top 3 values of ip', + ]); + expect(await PageObjects.lens.getDimensionTriggersTexts('lns-layerPanel-1')).to.eql([ + '@timestamp [1]', + 'moving_average(average(bytes), window=5) [1]', + ]); + }); + + it('should replace formula with another formula', async () => { + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_yDimensionPanel > lns-dimensionTrigger', + operation: 'formula', + formula: `sum(bytes) + 5`, + }); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lns-layerPanel-0 > lnsXY_yDimensionPanel > lns-dimensionTrigger', + to: 'lns-layerPanel-1 > lnsXY_yDimensionPanel > lns-dimensionTrigger', + }); + expect(await PageObjects.lens.getDimensionTriggersTexts('lns-layerPanel-0')).to.eql([ + '@timestamp', + 'Top 3 values of ip', + ]); + expect(await PageObjects.lens.getDimensionTriggersTexts('lns-layerPanel-1')).to.eql([ + '@timestamp [1]', + 'moving_average(average(bytes), window=5)', + ]); + }); + it('swaps dimensions', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('lnsXYvis'); + await PageObjects.lens.clickVisualizeListItemTitle('lnsXYvis'); + await PageObjects.lens.goToTimeRange(); + + await PageObjects.lens.createLayer('data'); + await PageObjects.lens.dragFieldToDimensionTrigger( + 'bytes', + 'lns-layerPanel-0 > lnsXY_yDimensionPanel > lns-empty-dimension' + ); + await PageObjects.lens.dragFieldToDimensionTrigger( + 'bytes', + 'lns-layerPanel-1 > lnsXY_splitDimensionPanel > lns-empty-dimension' + ); + + await PageObjects.lens.dragDimensionToExtraDropType( + 'lns-layerPanel-1 > lnsXY_splitDimensionPanel > lns-dimensionTrigger', + 'lns-layerPanel-0 > lnsXY_splitDimensionPanel', + 'swap' + ); + + expect(await PageObjects.lens.getDimensionTriggersTexts('lns-layerPanel-0')).to.eql([ + '@timestamp', + 'Average of bytes', + 'Median of bytes', + 'bytes', + ]); + expect(await PageObjects.lens.getDimensionTriggersTexts('lns-layerPanel-1')).to.eql([ + 'Top 3 values of ip', + ]); + }); + it('can combine dimensions', async () => { + await PageObjects.lens.dragDimensionToExtraDropType( + 'lns-layerPanel-0 > lnsXY_splitDimensionPanel > lns-dimensionTrigger', + 'lns-layerPanel-1 > lnsXY_splitDimensionPanel', + 'combine' + ); + + expect(await PageObjects.lens.getDimensionTriggersTexts('lns-layerPanel-0')).to.eql([ + '@timestamp', + 'Average of bytes', + 'Median of bytes', + ]); + expect(await PageObjects.lens.getDimensionTriggersTexts('lns-layerPanel-1')).to.eql([ + 'Top values of ip + 1 other', + ]); + }); + }); }); } diff --git a/x-pack/test/functional/apps/lens/group3/error_handling.ts b/x-pack/test/functional/apps/lens/group3/error_handling.ts index 8f6659bda1562..794547fb96f05 100644 --- a/x-pack/test/functional/apps/lens/group3/error_handling.ts +++ b/x-pack/test/functional/apps/lens/group3/error_handling.ts @@ -56,10 +56,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.lens.waitForMissingDataViewWarning(); await PageObjects.lens.openDimensionEditor('lnsXY_yDimensionPanel > lns-dimensionTrigger'); await PageObjects.lens.closeDimensionEditor(); - await PageObjects.lens.dragDimensionToDimension( - 'lnsXY_yDimensionPanel > lns-dimensionTrigger', - 'lnsXY_yDimensionPanel > lns-empty-dimension' - ); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lnsXY_yDimensionPanel > lns-dimensionTrigger', + to: 'lnsXY_yDimensionPanel > lns-empty-dimension', + }); await PageObjects.lens.switchFirstLayerIndexPattern('log*'); await PageObjects.lens.waitForMissingDataViewWarningDisappear(); await PageObjects.lens.waitForEmptyWorkspace(); diff --git a/x-pack/test/functional/apps/lens/group3/formula.ts b/x-pack/test/functional/apps/lens/group3/formula.ts index 33a24d3aefb1c..806e892cec643 100644 --- a/x-pack/test/functional/apps/lens/group3/formula.ts +++ b/x-pack/test/functional/apps/lens/group3/formula.ts @@ -205,10 +205,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.lens.closeDimensionEditor(); - await PageObjects.lens.dragDimensionToDimension( - 'lnsDatatable_metrics > lns-dimensionTrigger', - 'lnsDatatable_metrics > lns-empty-dimension' - ); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lnsDatatable_metrics > lns-dimensionTrigger', + to: 'lnsDatatable_metrics > lns-empty-dimension', + }); expect(await PageObjects.lens.getDatatableCellText(1, 1)).to.eql('222,420'); expect(await PageObjects.lens.getDatatableCellText(1, 2)).to.eql('222,420'); }); @@ -249,15 +249,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.lens.createLayer('referenceLine'); - await PageObjects.lens.configureDimension( - { - dimension: 'lnsXY_yReferenceLineLeftPanel > lns-dimensionTrigger', - operation: 'formula', - formula: `count()`, - keepOpen: true, - }, - 1 - ); + await PageObjects.lens.configureDimension({ + dimension: 'lns-layerPanel-1 > lnsXY_yReferenceLineLeftPanel > lns-dimensionTrigger', + operation: 'formula', + formula: `count()`, + keepOpen: true, + }); await PageObjects.lens.switchToStaticValue(); await PageObjects.lens.closeDimensionEditor(); @@ -280,10 +277,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { formula: `0`, }); - await PageObjects.lens.dragDimensionToDimension( - 'lnsDatatable_metrics > lns-dimensionTrigger', - 'lnsDatatable_metrics > lns-empty-dimension' - ); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lnsDatatable_metrics > lns-dimensionTrigger', + to: 'lnsDatatable_metrics > lns-empty-dimension', + }); expect(await PageObjects.lens.getDatatableCellText(0, 0)).to.eql('0'); expect(await PageObjects.lens.getDatatableCellText(0, 1)).to.eql('0'); }); diff --git a/x-pack/test/functional/apps/lens/group3/reference_lines.ts b/x-pack/test/functional/apps/lens/group3/reference_lines.ts index f022a6cef6e7a..ab2bc48ba57b8 100644 --- a/x-pack/test/functional/apps/lens/group3/reference_lines.ts +++ b/x-pack/test/functional/apps/lens/group3/reference_lines.ts @@ -86,10 +86,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.lens.closeDimensionEditor(); // drag and drop it to the left axis - await PageObjects.lens.dragDimensionToDimension( - 'lnsXY_yReferenceLineLeftPanel > lns-dimensionTrigger', - 'lnsXY_yReferenceLineRightPanel > lns-empty-dimension' - ); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lnsXY_yReferenceLineLeftPanel > lns-dimensionTrigger', + to: 'lnsXY_yReferenceLineRightPanel > lns-empty-dimension', + }); await testSubjects.click('lnsXY_yReferenceLineRightPanel > lns-dimensionTrigger'); expect( @@ -100,10 +100,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should duplicate also the original style when duplicating a reference line', async () => { // drag and drop to the empty field to generate a duplicate - await PageObjects.lens.dragDimensionToDimension( - 'lnsXY_yReferenceLineRightPanel > lns-dimensionTrigger', - 'lnsXY_yReferenceLineRightPanel > lns-empty-dimension' - ); + await PageObjects.lens.dragDimensionToDimension({ + from: 'lnsXY_yReferenceLineRightPanel > lns-dimensionTrigger', + to: 'lnsXY_yReferenceLineRightPanel > lns-empty-dimension', + }); await ( await find.byCssSelector( diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index d1125fbb08175..b76cb96e19baa 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -111,22 +111,19 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont * @param opts.field - the desired field for the dimension * @param layerIndex - the index of the layer */ - async configureDimension( - opts: { - dimension: string; - operation: string; - field?: string; - isPreviousIncompatible?: boolean; - keepOpen?: boolean; - palette?: string; - formula?: string; - disableEmptyRows?: boolean; - }, - layerIndex = 0 - ) { + async configureDimension(opts: { + dimension: string; + operation: string; + field?: string; + isPreviousIncompatible?: boolean; + keepOpen?: boolean; + palette?: string; + formula?: string; + disableEmptyRows?: boolean; + }) { await retry.try(async () => { if (!(await testSubjects.exists('lns-indexPattern-dimensionContainerClose'))) { - await testSubjects.click(`lns-layerPanel-${layerIndex} > ${opts.dimension}`); + await testSubjects.click(opts.dimension); } await testSubjects.existOrFail('lns-indexPattern-dimensionContainerClose'); }); @@ -450,8 +447,9 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont * @param from - the selector of the dimension being moved * @param to - the selector of the dimension being dropped to * */ - async dragDimensionToDimension(from: string, to: string) { + async dragDimensionToDimension({ from, to }: { from: string; to: string }) { await find.existsByCssSelector(from); + await find.existsByCssSelector(to); await browser.html5DragAndDrop( testSubjects.getCssSelector(from), testSubjects.getCssSelector(to) @@ -891,7 +889,7 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont return dimensionTexts[index]; }, /** - * Gets label of all dimension triggers in dimension group + * Gets label of all dimension triggers in an element * * @param dimension - the selector of the dimension */ From 0ee2ae074e0a7670ec5b2c3b81eae86031d0e85d Mon Sep 17 00:00:00 2001 From: Shahzad Date: Thu, 23 Jun 2022 10:34:29 +0200 Subject: [PATCH 52/61] [Synthetics] Monitor details panel (#134814) Co-authored-by: Abdul Zahid --- .../public/hooks/use_es_search.ts | 30 ++++- .../common/constants/client_defaults.ts | 16 +++ .../hooks/use_status_by_location.tsx | 74 ++++++++++++ .../monitor_summary/monitor_summary.tsx | 15 ++- .../monitor_summary/monitor_summary_tabs.tsx | 2 +- .../tabs_content/locations_status.tsx | 32 +++++ .../tabs_content/monitor_details_panel.tsx | 111 ++++++++++++++++++ .../tabs_content/monitor_tags.tsx | 19 +++ .../tabs_content/summary_tab_content.tsx | 18 ++- .../management/monitor_list_table/columns.tsx | 7 +- .../monitor_list_table/monitor_enabled.tsx | 9 +- .../state/monitor_summary/actions.ts | 6 +- .../synthetics/state/monitor_summary/api.ts | 13 +- .../state/monitor_summary/effects.ts | 15 ++- .../state/monitor_summary/selectors.ts | 2 + .../synthetics_montior_reducer.ts | 38 ++++++ .../apps/synthetics/state/root_effect.ts | 3 +- .../apps/synthetics/state/root_reducer.ts | 2 + .../__mocks__/syncthetics_store.mock.ts | 5 + .../synthetics_service/service_api_client.ts | 49 ++++---- 20 files changed, 422 insertions(+), 44 deletions(-) create mode 100644 x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/hooks/use_status_by_location.tsx create mode 100644 x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/locations_status.tsx create mode 100644 x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/monitor_details_panel.tsx create mode 100644 x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/monitor_tags.tsx create mode 100644 x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/synthetics_montior_reducer.ts diff --git a/x-pack/plugins/observability/public/hooks/use_es_search.ts b/x-pack/plugins/observability/public/hooks/use_es_search.ts index 2215d31c838fb..493260a3bbb6e 100644 --- a/x-pack/plugins/observability/public/hooks/use_es_search.ts +++ b/x-pack/plugins/observability/public/hooks/use_es_search.ts @@ -9,7 +9,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { ESSearchResponse } from '@kbn/core/types/elasticsearch'; import { useKibana } from '@kbn/kibana-react-plugin/public'; -import { IInspectorInfo, isCompleteResponse } from '@kbn/data-plugin/common'; +import { IInspectorInfo, isCompleteResponse, isErrorResponse } from '@kbn/data-plugin/common'; import { FETCH_STATUS, useFetcher } from './use_fetcher'; import { useInspectorContext } from '../context/inspector/use_inspector_context'; import { getInspectResponse } from '../../common/utils/get_inspect_response'; @@ -69,6 +69,34 @@ export const useEsSearch = { + if (isErrorResponse(err)) { + console.error(err); + if (addInspectorRequest) { + addInspectorRequest({ + data: { + _inspect: [ + getInspectResponse({ + startTime, + esRequestParams: params, + esResponse: null, + esError: { originalError: err, name: err.name, message: err.message }, + esRequestStatus: 2, + operationName: name, + kibanaRequest: { + route: { + path: '/internal/bsearch', + method: 'POST', + }, + } as any, + }), + ], + }, + status: FETCH_STATUS.SUCCESS, + }); + } + } + }, }); }); } diff --git a/x-pack/plugins/synthetics/common/constants/client_defaults.ts b/x-pack/plugins/synthetics/common/constants/client_defaults.ts index a8860dcca4a1a..5293205a183cb 100644 --- a/x-pack/plugins/synthetics/common/constants/client_defaults.ts +++ b/x-pack/plugins/synthetics/common/constants/client_defaults.ts @@ -5,6 +5,8 @@ * 2.0. */ +import moment from 'moment'; + export const CLIENT_DEFAULTS = { ABSOLUTE_DATE_RANGE_START: 0, // 15 minutes @@ -43,3 +45,17 @@ export const CLIENT_DEFAULTS = { }; export const EXCLUDE_RUN_ONCE_FILTER = { bool: { must_not: { exists: { field: 'run_once' } } } }; +export const SUMMARY_FILTER = { + exists: { + field: 'summary', + }, +}; + +export const getTimeSpanFilter = () => ({ + range: { + 'monitor.timespan': { + lte: moment().toISOString(), + gte: moment().subtract(5, 'minutes').toISOString(), + }, + }, +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/hooks/use_status_by_location.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/hooks/use_status_by_location.tsx new file mode 100644 index 0000000000000..d3da5bc1b35ee --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/hooks/use_status_by_location.tsx @@ -0,0 +1,74 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useEsSearch } from '@kbn/observability-plugin/public'; +import { useParams } from 'react-router-dom'; +import { useMemo } from 'react'; +import { Ping } from '../../../../../../common/runtime_types'; +import { + EXCLUDE_RUN_ONCE_FILTER, + getTimeSpanFilter, + SUMMARY_FILTER, +} from '../../../../../../common/constants/client_defaults'; +import { useSyntheticsRefreshContext } from '../../../contexts/synthetics_refresh_context'; +import { SYNTHETICS_INDEX_PATTERN, UNNAMED_LOCATION } from '../../../../../../common/constants'; + +export function useStatusByLocation() { + const { lastRefresh } = useSyntheticsRefreshContext(); + + const { monitorId } = useParams<{ monitorId: string }>(); + + const { data, loading } = useEsSearch( + { + index: SYNTHETICS_INDEX_PATTERN, + body: { + size: 0, + query: { + bool: { + filter: [ + SUMMARY_FILTER, + EXCLUDE_RUN_ONCE_FILTER, + getTimeSpanFilter(), + { + term: { + config_id: monitorId, + }, + }, + ], + }, + }, + sort: [{ '@timestamp': 'desc' }], + aggs: { + locations: { + terms: { + field: 'observer.geo.name', + missing: UNNAMED_LOCATION, + size: 1000, + }, + aggs: { + summary: { + top_hits: { + size: 1, + }, + }, + }, + }, + }, + }, + }, + [lastRefresh, monitorId], + { name: 'getMonitorStatusByLocation' } + ); + + return useMemo(() => { + const locations = (data?.aggregations?.locations.buckets ?? []).map((loc) => { + return loc.summary.hits.hits?.[0]._source as Ping; + }); + + return { locations, loading }; + }, [data, loading]); +} diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/monitor_summary.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/monitor_summary.tsx index 9ac2d67967eeb..de5871304eccf 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/monitor_summary.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/monitor_summary.tsx @@ -5,14 +5,23 @@ * 2.0. */ -import React from 'react'; -import { useSelector } from 'react-redux'; -import { selectMonitorStatus } from '../../state/monitor_summary'; +import React, { useEffect } from 'react'; +import { useSelector, useDispatch } from 'react-redux'; +import { useParams } from 'react-router-dom'; +import { getSyntheticsMonitorAction, selectMonitorStatus } from '../../state/monitor_summary'; import { useMonitorListBreadcrumbs } from '../monitors_page/hooks/use_breadcrumbs'; export const MonitorSummaryPage = () => { const { data } = useSelector(selectMonitorStatus); useMonitorListBreadcrumbs([{ text: data?.monitor.name ?? '' }]); + const dispatch = useDispatch(); + + const { monitorId } = useParams<{ monitorId: string }>(); + + useEffect(() => { + dispatch(getSyntheticsMonitorAction.get(monitorId)); + }, [dispatch, monitorId]); + return <>; }; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/monitor_summary_tabs.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/monitor_summary_tabs.tsx index 3469341d86ca6..725d209c8200e 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/monitor_summary_tabs.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/monitor_summary_tabs.tsx @@ -50,7 +50,7 @@ export const MonitorSummaryTabs = () => { return ( {}} /> diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/locations_status.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/locations_status.tsx new file mode 100644 index 0000000000000..6c918c1288366 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/locations_status.tsx @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React from 'react'; +import { EuiBadge, EuiBadgeGroup, EuiIcon, EuiLoadingSpinner } from '@elastic/eui'; +import { useStatusByLocation } from '../hooks/use_status_by_location'; + +export const LocationsStatus = () => { + const { locations, loading } = useStatusByLocation(); + + if (loading) { + return ; + } + + return ( + + {locations.map((loc) => ( + ( + 0 ? 'danger' : 'success'} /> + )} + color="hollow" + > + {loc.observer?.geo?.name} + + ))} + + ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/monitor_details_panel.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/monitor_details_panel.tsx new file mode 100644 index 0000000000000..8ed2c5dffd771 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/monitor_details_panel.tsx @@ -0,0 +1,111 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { + EuiDescriptionList, + EuiDescriptionListTitle, + EuiDescriptionListDescription, + EuiBadge, + EuiSpacer, + EuiLink, + EuiLoadingSpinner, +} from '@elastic/eui'; +import { capitalize } from 'lodash'; +import { i18n } from '@kbn/i18n'; +import { useDispatch, useSelector } from 'react-redux'; +import { useParams } from 'react-router-dom'; +import { MonitorTags } from './monitor_tags'; +import { MonitorEnabled } from '../../monitors_page/management/monitor_list_table/monitor_enabled'; +import { LocationsStatus } from './locations_status'; +import { + getSyntheticsMonitorAction, + selectMonitorStatus, + syntheticsMonitorSelector, +} from '../../../state/monitor_summary'; +import { ConfigKey } from '../../../../../../common/runtime_types'; + +export const MonitorDetailsPanel = () => { + const { data } = useSelector(selectMonitorStatus); + + const { monitorId } = useParams<{ monitorId: string }>(); + + const dispatch = useDispatch(); + + const { data: monitor, loading } = useSelector(syntheticsMonitorSelector); + + if (!data) { + return ; + } + + return ( + <> + + + {ENABLED_LABEL} + + {monitor && ( + { + dispatch(getSyntheticsMonitorAction.get(monitorId)); + }} + /> + )} + + {MONITOR_TYPE_LABEL} + + {capitalize(data.monitor.type)} + + {FREQUENCY_LABEL} + Every 10 mins + {LOCATIONS_LABEL} + + + + {URL_LABEL} + + + {data.url?.full} + + + {TAGS_LABEL} + + {monitor && } + + + + ); +}; + +const FREQUENCY_LABEL = i18n.translate('xpack.synthetics.management.monitorList.frequency', { + defaultMessage: 'Frequency', +}); +const LOCATIONS_LABEL = i18n.translate('xpack.synthetics.management.monitorList.locations', { + defaultMessage: 'Locations', +}); + +const URL_LABEL = i18n.translate('xpack.synthetics.management.monitorList.url', { + defaultMessage: 'URL', +}); + +const TAGS_LABEL = i18n.translate('xpack.synthetics.management.monitorList.tags', { + defaultMessage: 'Tags', +}); + +const ENABLED_LABEL = i18n.translate('xpack.synthetics.detailsPanel.monitorDetails.enabled', { + defaultMessage: 'Enabled', +}); + +const MONITOR_TYPE_LABEL = i18n.translate( + 'xpack.synthetics.detailsPanel.monitorDetails.monitorType', + { + defaultMessage: 'Monitor type', + } +); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/monitor_tags.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/monitor_tags.tsx new file mode 100644 index 0000000000000..7960d5efbc1e7 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/monitor_tags.tsx @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiBadge, EuiBadgeGroup } from '@elastic/eui'; + +export const MonitorTags = ({ tags }: { tags: string[] }) => { + return ( + + {tags.map((tag) => ( + {tag} + ))} + + ); +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/summary_tab_content.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/summary_tab_content.tsx index e426ebbf2e309..c0a2f2c3b30d8 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/summary_tab_content.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_summary/tabs_content/summary_tab_content.tsx @@ -5,9 +5,23 @@ * 2.0. */ -import { EuiText } from '@elastic/eui'; import React from 'react'; +import { EuiTitle, EuiPanel } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +import { MonitorDetailsPanel } from './monitor_details_panel'; export const SummaryTabContent = () => { - return Monitor summary tab content; + return ( + + +

{MONITOR_DETAILS_LABEL}

+
+ +
+ ); }; + +const MONITOR_DETAILS_LABEL = i18n.translate('xpack.synthetics.detailsPanel.monitorDetails', { + defaultMessage: 'Monitor details', +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx index 5665c402442ab..d3803a0aa0260 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/columns.tsx @@ -132,12 +132,7 @@ export function getMonitorListColumns({ defaultMessage: 'Enabled', }), render: (_enabled: boolean, monitor: EncryptedSyntheticsSavedMonitor) => ( - + ), }, { diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx index e98ca2a466f0d..36527f3316935 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/monitor_enabled.tsx @@ -10,6 +10,7 @@ import React, { useEffect, useState } from 'react'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import { FETCH_STATUS, useFetcher } from '@kbn/observability-plugin/public'; +import { useCanEditSynthetics } from '../../../../../../hooks/use_capabilities'; import { ConfigKey, EncryptedSyntheticsMonitor } from '../../../../../../../common/runtime_types'; import { fetchUpsertMonitor } from '../../../../state'; @@ -19,10 +20,12 @@ interface Props { id: string; monitor: EncryptedSyntheticsMonitor; reloadPage: () => void; - isDisabled?: boolean; + initialLoading?: boolean; } -export const MonitorEnabled = ({ id, monitor, reloadPage, isDisabled }: Props) => { +export const MonitorEnabled = ({ id, monitor, reloadPage, initialLoading }: Props) => { + const isDisabled = !useCanEditSynthetics(); + const [isEnabled, setIsEnabled] = useState(null); const { notifications } = useKibana(); @@ -69,7 +72,7 @@ export const MonitorEnabled = ({ id, monitor, reloadPage, isDisabled }: Props) = return ( <> - {isLoading ? ( + {isLoading || initialLoading ? ( ) : ( ( ); export const getMonitorStatusAction = createAsyncAction('[MONITOR SUMMARY] GET'); + +export const getSyntheticsMonitorAction = createAsyncAction( + 'fetchSyntheticsMonitorAction' +); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/api.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/api.ts index 0d0a6c628f03a..af01acf97592d 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/api.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/api.ts @@ -5,9 +5,10 @@ * 2.0. */ +import { SavedObject } from '@kbn/core/types'; import { apiService } from '../../../../utils/api_service'; -import { Ping } from '../../../../../common/runtime_types'; -import { SYNTHETICS_API_URLS } from '../../../../../common/constants'; +import { Ping, SyntheticsMonitor } from '../../../../../common/runtime_types'; +import { API_URLS, SYNTHETICS_API_URLS } from '../../../../../common/constants'; export interface QueryParams { monitorId: string; @@ -18,3 +19,11 @@ export interface QueryParams { export const fetchMonitorStatus = async (params: QueryParams): Promise => { return await apiService.get(SYNTHETICS_API_URLS.MONITOR_STATUS, { ...params }); }; + +export const fetchSyntheticsMonitor = async (monitorId: string): Promise => { + const { attributes } = (await apiService.get( + `${API_URLS.SYNTHETICS_MONITORS}/${monitorId}` + )) as SavedObject; + + return attributes; +}; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/effects.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/effects.ts index dae9f72ac804e..9a1b52e1e24df 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/effects.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/effects.ts @@ -7,8 +7,8 @@ import { takeLeading } from 'redux-saga/effects'; import { fetchEffectFactory } from '../utils/fetch_effect'; -import { getMonitorStatusAction } from './actions'; -import { fetchMonitorStatus } from './api'; +import { getMonitorStatusAction, getSyntheticsMonitorAction } from './actions'; +import { fetchMonitorStatus, fetchSyntheticsMonitor } from './api'; export function* fetchMonitorStatusEffect() { yield takeLeading( @@ -20,3 +20,14 @@ export function* fetchMonitorStatusEffect() { ) ); } + +export function* fetchSyntheticsMonitorEffect() { + yield takeLeading( + getSyntheticsMonitorAction.get, + fetchEffectFactory( + fetchSyntheticsMonitor, + getSyntheticsMonitorAction.success, + getSyntheticsMonitorAction.fail + ) + ); +} diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/selectors.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/selectors.ts index 09a89a1f07619..d361024e839f2 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/selectors.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/selectors.ts @@ -16,3 +16,5 @@ export const selectSelectedLocationId = createSelector( ); export const selectMonitorStatus = createSelector(getState, (state) => state); + +export const syntheticsMonitorSelector = (state: SyntheticsAppState) => state.syntheticsMonitor; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/synthetics_montior_reducer.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/synthetics_montior_reducer.ts new file mode 100644 index 0000000000000..e1049c3b862d3 --- /dev/null +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_summary/synthetics_montior_reducer.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IHttpFetchError, ResponseErrorBody } from '@kbn/core/public'; +import { createReducer } from '@reduxjs/toolkit'; +import { SyntheticsMonitor } from '../../../../../common/runtime_types'; +import { getSyntheticsMonitorAction } from './actions'; + +export interface SyntheticsMonitorState { + data: SyntheticsMonitor | null; + loading: boolean; + error: IHttpFetchError | null; +} + +const initialState: SyntheticsMonitorState = { + data: null, + loading: false, + error: null, +}; + +export const syntheticsMonitorReducer = createReducer(initialState, (builder) => { + builder + .addCase(getSyntheticsMonitorAction.get, (state) => { + state.loading = true; + }) + .addCase(getSyntheticsMonitorAction.success, (state, action) => { + state.data = action.payload; + state.loading = false; + }) + .addCase(getSyntheticsMonitorAction.fail, (state, action) => { + state.error = action.payload as IHttpFetchError; + state.loading = false; + }); +}); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/root_effect.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/root_effect.ts index 9cae9249af971..45214cf4d2461 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/root_effect.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/root_effect.ts @@ -6,7 +6,7 @@ */ import { all, fork } from 'redux-saga/effects'; -import { fetchMonitorStatusEffect } from './monitor_summary'; +import { fetchMonitorStatusEffect, fetchSyntheticsMonitorEffect } from './monitor_summary'; import { fetchIndexStatusEffect } from './index_status'; import { fetchSyntheticsEnablementEffect } from './synthetics_enablement'; import { fetchMonitorListEffect } from './monitor_list'; @@ -19,5 +19,6 @@ export const rootEffect = function* root(): Generator { fork(fetchServiceLocationsEffect), fork(fetchMonitorListEffect), fork(fetchMonitorStatusEffect), + fork(fetchSyntheticsMonitorEffect), ]); }; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts index 4ecd0dbc265ab..bd4b25b456e93 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/root_reducer.ts @@ -7,6 +7,7 @@ import { combineReducers } from '@reduxjs/toolkit'; +import { syntheticsMonitorReducer } from './monitor_summary/synthetics_montior_reducer'; import { monitorStatusReducer } from './monitor_summary'; import { uiReducer } from './ui'; import { indexStatusReducer } from './index_status'; @@ -21,6 +22,7 @@ export const rootReducer = combineReducers({ monitorList: monitorListReducer, serviceLocations: serviceLocationsReducer, monitorStatus: monitorStatusReducer, + syntheticsMonitor: syntheticsMonitorReducer, }); export type SyntheticsAppState = ReturnType; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/syncthetics_store.mock.ts b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/syncthetics_store.mock.ts index c5aad9ffa01ac..3a9c13f928a76 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/syncthetics_store.mock.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/utils/testing/__mocks__/syncthetics_store.mock.ts @@ -84,4 +84,9 @@ export const mockState: SyntheticsAppState = { error: null, selectedLocationId: null, }, + syntheticsMonitor: { + data: null, + loading: false, + error: null, + }, }; diff --git a/x-pack/plugins/synthetics/server/synthetics_service/service_api_client.ts b/x-pack/plugins/synthetics/server/synthetics_service/service_api_client.ts index 02d0f69ddbedc..235055b8c2b38 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/service_api_client.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/service_api_client.ts @@ -55,8 +55,11 @@ export class ServiceAPIClient { this.server = server; } - getHttpsAgent() { + getHttpsAgent(url: string) { const config = this.config; + if (url !== this.config.devUrl && this.authorization && this.server.isDev) { + return; + } if (config.tls && config.tls.certificate && config.tls.key) { const tlsConfig = new SslConfig(config.tls); @@ -92,29 +95,31 @@ export class ServiceAPIClient { return { allowed: true, signupUrl: null }; } - const httpsAgent = this.getHttpsAgent(); - - if (this.locations.length > 0 && httpsAgent) { + if (this.locations.length > 0) { // get a url from a random location const url = this.locations[Math.floor(Math.random() * this.locations.length)].url; - try { - const { data } = await axios({ - method: 'GET', - url: url + '/allowed', - headers: - process.env.NODE_ENV !== 'production' && this.authorization - ? { - Authorization: this.authorization, - } - : undefined, - httpsAgent, - }); - - const { allowed, signupUrl } = data; - return { allowed, signupUrl }; - } catch (e) { - this.logger.error(e); + const httpsAgent = this.getHttpsAgent(url); + + if (httpsAgent) { + try { + const { data } = await axios({ + method: 'GET', + url: url + '/allowed', + headers: + process.env.NODE_ENV !== 'production' && this.authorization + ? { + Authorization: this.authorization, + } + : undefined, + httpsAgent, + }); + + const { allowed, signupUrl } = data; + return { allowed, signupUrl }; + } catch (e) { + this.logger.error(e); + } } } @@ -151,7 +156,7 @@ export class ServiceAPIClient { Authorization: this.authorization, } : undefined, - httpsAgent: this.getHttpsAgent(), + httpsAgent: this.getHttpsAgent(url), }); }; From adbd6a5fb8a172a7e53273a7dbafd3aec1bb74f3 Mon Sep 17 00:00:00 2001 From: Walter Rafelsberger Date: Thu, 23 Jun 2022 10:38:23 +0200 Subject: [PATCH 53/61] [ML] @kbn/ml-agg-utils, @kbn/ml-is-populated-object, @kbn/ml-string-hash packages. (#132963) Moves some ML utility code to packages. - @kbn/ml-agg-utils contains multiple utilities used in combination related to building aggregations. - @kbn/ml-is-populated-object contains the isPopulatedObject() utility function used across several plugins. - @kbn/ml-string-hash contains the stringHash() utility function used across several plugins. --- .github/CODEOWNERS | 1 + package.json | 6 + packages/BUILD.bazel | 6 + .../src/bazel_package_dirs.ts | 1 + x-pack/packages/ml/agg_utils/BUILD.bazel | 125 ++++++++ x-pack/packages/ml/agg_utils/README.md | 32 ++ x-pack/packages/ml/agg_utils/jest.config.js | 12 + x-pack/packages/ml/agg_utils/package.json | 13 + .../src/build_sampler_aggregation.test.ts | 31 ++ .../src/build_sampler_aggregation.ts | 31 ++ .../ml/agg_utils/src/get_agg_intervals.ts | 107 +++++++ ...sampler_aggregations_response_path.test.ts | 18 ++ .../get_sampler_aggregations_response_path.ts | 14 + x-pack/packages/ml/agg_utils/src/index.ts | 10 + x-pack/packages/ml/agg_utils/tsconfig.json | 17 + x-pack/packages/ml/agg_utils/yarn.lock | 300 ++++++++++++++++++ .../ml/is_populated_object/BUILD.bazel | 114 +++++++ .../packages/ml/is_populated_object/README.md | 24 ++ .../ml/is_populated_object/jest.config.js | 12 + .../ml/is_populated_object/package.json | 13 + .../ml/is_populated_object/src/index.ts | 8 + .../src/is_populated_object.test.ts | 48 +++ .../src/is_populated_object.ts} | 2 +- .../ml/is_populated_object/tsconfig.json | 17 + .../packages/ml/is_populated_object/yarn.lock | 300 ++++++++++++++++++ x-pack/packages/ml/string_hash/BUILD.bazel | 114 +++++++ x-pack/packages/ml/string_hash/README.md | 15 + x-pack/packages/ml/string_hash/jest.config.js | 12 + x-pack/packages/ml/string_hash/package.json | 13 + x-pack/packages/ml/string_hash/src/index.ts | 8 + .../ml/string_hash/src/string_hash.test.ts | 16 + .../ml/string_hash/src/string_hash.ts} | 0 x-pack/packages/ml/string_hash/tsconfig.json | 17 + x-pack/packages/ml/string_hash/yarn.lock | 300 ++++++++++++++++++ .../common/types/field_stats.ts | 2 +- .../data_visualizer/common/types/index.ts | 2 +- .../common/utils/query_utils.ts | 29 -- .../common/utils/runtime_field_utils.ts | 2 +- .../full_time_range_selector_service.ts | 2 +- .../requests/get_boolean_field_stats.ts | 8 +- .../requests/get_date_field_stats.ts | 7 +- .../requests/get_document_stats.ts | 2 +- .../requests/get_field_examples.ts | 2 +- .../requests/get_numeric_field_stats.ts | 7 +- .../requests/get_string_field_stats.ts | 7 +- .../search_strategy/requests/overall_stats.ts | 5 +- .../utils/error_utils.ts | 2 +- .../utils/query_utils.ts | 2 +- x-pack/plugins/file_upload/common/utils.ts | 19 -- .../file_upload/public/importer/importer.ts | 2 +- .../server/get_time_field_range.ts | 2 +- .../server/utils/runtime_field_utils.ts | 2 +- x-pack/plugins/ml/common/index.ts | 1 - x-pack/plugins/ml/common/types/es_client.ts | 2 +- .../ml/common/types/feature_importance.ts | 2 +- .../ml/common/util/errors/process_errors.ts | 2 +- .../ml/common/util/group_color_utils.ts | 2 +- x-pack/plugins/ml/common/util/job_utils.ts | 4 +- .../ml/common/util/object_utils.test.ts | 42 +-- x-pack/plugins/ml/common/util/object_utils.ts | 30 +- x-pack/plugins/ml/common/util/query_utils.ts | 2 +- .../ml/common/util/runtime_field_utils.ts | 2 +- .../ml/common/util/string_utils.test.ts | 15 +- x-pack/plugins/ml/common/util/string_utils.ts | 17 - x-pack/plugins/ml/common/util/validators.ts | 2 +- ...aly_detection_jobs_health_rule_trigger.tsx | 2 +- .../components/data_grid/data_grid.tsx | 2 +- .../full_time_range_selector_service.ts | 2 +- .../scatterplot_matrix/scatterplot_matrix.tsx | 2 +- .../runtime_mappings/runtime_mappings.tsx | 2 +- .../hooks/use_exploration_url_state.ts | 2 +- .../jobs/jobs_list/components/utils.js | 2 +- .../ml/public/application/jobs/jobs_utils.ts | 2 +- .../util/filter_runtime_mappings.ts | 2 +- .../jobs/new_job/recognize/page.tsx | 2 +- .../anomaly_explorer_charts_service.ts | 2 +- .../services/anomaly_timeline_service.ts | 2 +- .../results_service/result_service_rx.ts | 2 +- .../results_service/results_service.js | 3 +- .../models_management/expanded_row.tsx | 2 +- .../models_management/models_list.tsx | 2 +- .../models_management/test_models/utils.ts | 3 +- .../ml/public/application/util/url_state.tsx | 2 +- x-pack/plugins/ml/public/embeddables/types.ts | 2 +- .../plugins/ml/server/lib/query_utils.test.ts | 39 +-- x-pack/plugins/ml/server/lib/query_utils.ts | 30 -- .../models/data_recognizer/data_recognizer.ts | 2 +- .../models/data_visualizer/data_visualizer.ts | 86 +---- .../models/fields_service/fields_service.ts | 2 +- .../ml/server/models/job_service/jobs.ts | 2 +- .../models/results_service/anomaly_charts.ts | 3 +- .../common/api_schemas/type_guards.ts | 3 +- .../transform/common/shared_imports.ts | 1 - .../transform/common/types/data_view.ts | 3 +- .../transform/common/types/transform.ts | 2 +- .../transform/common/types/transform_stats.ts | 3 +- .../plugins/transform/common/utils/errors.ts | 2 +- .../transform/public/app/common/pivot_aggs.ts | 2 +- .../public/app/common/pivot_group_by.ts | 2 +- .../transform/public/app/common/request.ts | 2 +- .../lib/authorization/components/common.ts | 2 +- .../step_create/step_create_form.tsx | 2 +- .../filter_agg/components/filter_agg_form.tsx | 2 +- .../common/top_metrics_agg/config.ts | 2 +- .../components/step_define/common/types.ts | 3 +- .../use_edit_transform_flyout.ts | 2 +- .../transform_list/expanded_row.tsx | 18 +- .../server/routes/api/transforms_nodes.ts | 3 +- .../apis/ml/modules/get_module.ts | 2 +- yarn.lock | 24 ++ 110 files changed, 1871 insertions(+), 397 deletions(-) create mode 100644 x-pack/packages/ml/agg_utils/BUILD.bazel create mode 100644 x-pack/packages/ml/agg_utils/README.md create mode 100644 x-pack/packages/ml/agg_utils/jest.config.js create mode 100644 x-pack/packages/ml/agg_utils/package.json create mode 100644 x-pack/packages/ml/agg_utils/src/build_sampler_aggregation.test.ts create mode 100644 x-pack/packages/ml/agg_utils/src/build_sampler_aggregation.ts create mode 100644 x-pack/packages/ml/agg_utils/src/get_agg_intervals.ts create mode 100644 x-pack/packages/ml/agg_utils/src/get_sampler_aggregations_response_path.test.ts create mode 100644 x-pack/packages/ml/agg_utils/src/get_sampler_aggregations_response_path.ts create mode 100644 x-pack/packages/ml/agg_utils/src/index.ts create mode 100644 x-pack/packages/ml/agg_utils/tsconfig.json create mode 100644 x-pack/packages/ml/agg_utils/yarn.lock create mode 100644 x-pack/packages/ml/is_populated_object/BUILD.bazel create mode 100644 x-pack/packages/ml/is_populated_object/README.md create mode 100644 x-pack/packages/ml/is_populated_object/jest.config.js create mode 100644 x-pack/packages/ml/is_populated_object/package.json create mode 100644 x-pack/packages/ml/is_populated_object/src/index.ts create mode 100644 x-pack/packages/ml/is_populated_object/src/is_populated_object.test.ts rename x-pack/{plugins/data_visualizer/common/utils/object_utils.ts => packages/ml/is_populated_object/src/is_populated_object.ts} (99%) create mode 100644 x-pack/packages/ml/is_populated_object/tsconfig.json create mode 100644 x-pack/packages/ml/is_populated_object/yarn.lock create mode 100644 x-pack/packages/ml/string_hash/BUILD.bazel create mode 100644 x-pack/packages/ml/string_hash/README.md create mode 100644 x-pack/packages/ml/string_hash/jest.config.js create mode 100644 x-pack/packages/ml/string_hash/package.json create mode 100644 x-pack/packages/ml/string_hash/src/index.ts create mode 100644 x-pack/packages/ml/string_hash/src/string_hash.test.ts rename x-pack/{plugins/data_visualizer/common/utils/string_utils.ts => packages/ml/string_hash/src/string_hash.ts} (100%) create mode 100644 x-pack/packages/ml/string_hash/tsconfig.json create mode 100644 x-pack/packages/ml/string_hash/yarn.lock delete mode 100644 x-pack/plugins/file_upload/common/utils.ts diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2682f1fc9c7c9..6813dcaa33c09 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -202,6 +202,7 @@ /x-pack/test/functional/apps/transform/ @elastic/ml-ui /x-pack/test/functional/services/transform/ @elastic/ml-ui /x-pack/test/functional_basic/apps/transform/ @elastic/ml-ui +/x-pack/packages/ml/ @elastic/ml-ui /packages/kbn-aiops-utils @elastic/ml-ui /examples/response_stream/ @elastic/ml-ui diff --git a/package.json b/package.json index 14c0d5e1b0aa1..717392523c956 100644 --- a/package.json +++ b/package.json @@ -197,6 +197,9 @@ "@kbn/logging": "link:bazel-bin/packages/kbn-logging", "@kbn/logging-mocks": "link:bazel-bin/packages/kbn-logging-mocks", "@kbn/mapbox-gl": "link:bazel-bin/packages/kbn-mapbox-gl", + "@kbn/ml-agg-utils": "link:bazel-bin/x-pack/packages/ml/agg_utils", + "@kbn/ml-is-populated-object": "link:bazel-bin/x-pack/packages/ml/is_populated_object", + "@kbn/ml-string-hash": "link:bazel-bin/x-pack/packages/ml/string_hash", "@kbn/monaco": "link:bazel-bin/packages/kbn-monaco", "@kbn/plugin-discovery": "link:bazel-bin/packages/kbn-plugin-discovery", "@kbn/react-field": "link:bazel-bin/packages/kbn-react-field", @@ -743,6 +746,9 @@ "@types/kbn__logging": "link:bazel-bin/packages/kbn-logging/npm_module_types", "@types/kbn__logging-mocks": "link:bazel-bin/packages/kbn-logging-mocks/npm_module_types", "@types/kbn__mapbox-gl": "link:bazel-bin/packages/kbn-mapbox-gl/npm_module_types", + "@types/kbn__ml-agg-utils": "link:bazel-bin/x-pack/packages/ml/agg_utils/npm_module_types", + "@types/kbn__ml-is-populated-object": "link:bazel-bin/x-pack/packages/ml/is_populated_object/npm_module_types", + "@types/kbn__ml-string-hash": "link:bazel-bin/x-pack/packages/ml/string_hash/npm_module_types", "@types/kbn__monaco": "link:bazel-bin/packages/kbn-monaco/npm_module_types", "@types/kbn__optimizer": "link:bazel-bin/packages/kbn-optimizer/npm_module_types", "@types/kbn__optimizer-webpack-helpers": "link:bazel-bin/packages/kbn-optimizer-webpack-helpers/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 2cce534bb98ef..253c5cc2b4fb3 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -159,6 +159,9 @@ filegroup( "//packages/shared-ux/page/analytics_no_data:build", "//packages/shared-ux/page/kibana_no_data:build", "//packages/shared-ux/prompt/no_data_views:build", + "//x-pack/packages/ml/agg_utils:build", + "//x-pack/packages/ml/is_populated_object:build", + "//x-pack/packages/ml/string_hash:build", ], ) @@ -301,6 +304,9 @@ filegroup( "//packages/shared-ux/page/analytics_no_data:build_types", "//packages/shared-ux/page/kibana_no_data:build_types", "//packages/shared-ux/prompt/no_data_views:build_types", + "//x-pack/packages/ml/agg_utils:build_types", + "//x-pack/packages/ml/is_populated_object:build_types", + "//x-pack/packages/ml/string_hash:build_types", ], ) diff --git a/packages/kbn-bazel-packages/src/bazel_package_dirs.ts b/packages/kbn-bazel-packages/src/bazel_package_dirs.ts index 5c0bfb5d4595b..ed295cffd7ede 100644 --- a/packages/kbn-bazel-packages/src/bazel_package_dirs.ts +++ b/packages/kbn-bazel-packages/src/bazel_package_dirs.ts @@ -27,6 +27,7 @@ export const BAZEL_PACKAGE_DIRS = [ 'packages/analytics/shippers', 'packages/analytics/shippers/elastic_v3', 'packages/core/*', + 'x-pack/packages/ml', ]; /** diff --git a/x-pack/packages/ml/agg_utils/BUILD.bazel b/x-pack/packages/ml/agg_utils/BUILD.bazel new file mode 100644 index 0000000000000..0d59aca092fd5 --- /dev/null +++ b/x-pack/packages/ml/agg_utils/BUILD.bazel @@ -0,0 +1,125 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "agg_utils" +PKG_REQUIRE_NAME = "@kbn/ml-agg-utils" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//@elastic/elasticsearch", + "@npm//lodash", + "//packages/kbn-field-types", + "//x-pack/packages/ml/is_populated_object", + "//x-pack/packages/ml/string_hash", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//@types/lodash", + "@npm//@elastic/elasticsearch", + "@npm//tslib", + "//packages/kbn-field-types:npm_module_types", + "//x-pack/packages/ml/is_populated_object:npm_module_types", + "//x-pack/packages/ml/string_hash:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/x-pack/packages/ml/agg_utils/README.md b/x-pack/packages/ml/agg_utils/README.md new file mode 100644 index 0000000000000..63a30e1f1cbef --- /dev/null +++ b/x-pack/packages/ml/agg_utils/README.md @@ -0,0 +1,32 @@ +# @kbn/ml-agg-utils + +This package includes utility functions provided by the ML team to be used in Kibana plugins related to data manipulation and verification. + + + +### `buildSamplerAggregation` (function) + +Wraps the supplied aggregations in a sampler aggregation. +A supplied samplerShardSize (the shard_size parameter of the sampler aggregation) +of less than 1 indicates no sampling, and the aggs are returned as-is. + +**Parameters:** + +- aggs (`any`) +- samplerShardSize (`number`) + +**returns:** Record + +### `getSamplerAggregationsResponsePath` (function) + +**Parameters:** + +- samplerShardSize (`number`) + +**returns:** string[] + +### `getAggIntervals` (function) + +Returns aggregation intervals for the supplied document fields. + + diff --git a/x-pack/packages/ml/agg_utils/jest.config.js b/x-pack/packages/ml/agg_utils/jest.config.js new file mode 100644 index 0000000000000..a22a76d5bf951 --- /dev/null +++ b/x-pack/packages/ml/agg_utils/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/x-pack/packages/ml/agg_utils'], +}; diff --git a/x-pack/packages/ml/agg_utils/package.json b/x-pack/packages/ml/agg_utils/package.json new file mode 100644 index 0000000000000..11f2fe9d4d450 --- /dev/null +++ b/x-pack/packages/ml/agg_utils/package.json @@ -0,0 +1,13 @@ +{ + "name": "@kbn/ml-agg-utils", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0", + "devDependencies": { + "ts-readme": "^1.1.3" + }, + "scripts": { + "generate-docs": "ts-readme src/index.ts" + } +} diff --git a/x-pack/packages/ml/agg_utils/src/build_sampler_aggregation.test.ts b/x-pack/packages/ml/agg_utils/src/build_sampler_aggregation.test.ts new file mode 100644 index 0000000000000..c792b331ef5b2 --- /dev/null +++ b/x-pack/packages/ml/agg_utils/src/build_sampler_aggregation.test.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { buildSamplerAggregation } from './build_sampler_aggregation'; + +describe('buildSamplerAggregation', () => { + const testAggs = { + bytes_stats: { + stats: { field: 'bytes' }, + }, + }; + + test('returns wrapped sampler aggregation for sampler shard size of 1000', () => { + expect(buildSamplerAggregation(testAggs, 1000)).toEqual({ + sample: { + sampler: { + shard_size: 1000, + }, + aggs: testAggs, + }, + }); + }); + + test('returns un-sampled aggregation as-is for sampler shard size of 0', () => { + expect(buildSamplerAggregation(testAggs, 0)).toEqual(testAggs); + }); +}); diff --git a/x-pack/packages/ml/agg_utils/src/build_sampler_aggregation.ts b/x-pack/packages/ml/agg_utils/src/build_sampler_aggregation.ts new file mode 100644 index 0000000000000..30345b00caf2f --- /dev/null +++ b/x-pack/packages/ml/agg_utils/src/build_sampler_aggregation.ts @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; + +/** + * Wraps the supplied aggregations in a sampler aggregation. + * A supplied samplerShardSize (the shard_size parameter of the sampler aggregation) + * of less than 1 indicates no sampling, and the aggs are returned as-is. + */ +export function buildSamplerAggregation( + aggs: any, + samplerShardSize: number +): Record { + if (samplerShardSize < 1) { + return aggs; + } + + return { + sample: { + sampler: { + shard_size: samplerShardSize, + }, + aggs, + }, + }; +} diff --git a/x-pack/packages/ml/agg_utils/src/get_agg_intervals.ts b/x-pack/packages/ml/agg_utils/src/get_agg_intervals.ts new file mode 100644 index 0000000000000..67a6f28497d6e --- /dev/null +++ b/x-pack/packages/ml/agg_utils/src/get_agg_intervals.ts @@ -0,0 +1,107 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { get } from 'lodash'; + +import type { Client } from '@elastic/elasticsearch'; +import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; + +import { KBN_FIELD_TYPES } from '@kbn/field-types'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { stringHash } from '@kbn/ml-string-hash'; + +import { buildSamplerAggregation } from './build_sampler_aggregation'; +import { getSamplerAggregationsResponsePath } from './get_sampler_aggregations_response_path'; + +// TODO Temporary type definition until we can import from `@kbn/core`. +// Copied from src/core/server/elasticsearch/client/types.ts +// as these types aren't part of any package yet. Once they are, remove this completely + +/** + * Client used to query the elasticsearch cluster. + * @deprecated At some point use the one from src/core/server/elasticsearch/client/types.ts when it is made into a package. If it never is, then keep using this one. + * @public + */ +type ElasticsearchClient = Omit< + Client, + 'connectionPool' | 'serializer' | 'extend' | 'close' | 'diagnostic' +>; + +const MAX_CHART_COLUMNS = 20; + +interface HistogramField { + fieldName: string; + type: string; +} + +interface NumericColumnStats { + interval: number; + min: number; + max: number; +} +type NumericColumnStatsMap = Record; + +/** + * Returns aggregation intervals for the supplied document fields. + */ +export const getAggIntervals = async ( + client: ElasticsearchClient, + indexPattern: string, + query: estypes.QueryDslQueryContainer, + fields: HistogramField[], + samplerShardSize: number, + runtimeMappings?: estypes.MappingRuntimeFields +): Promise => { + const numericColumns = fields.filter((field) => { + return field.type === KBN_FIELD_TYPES.NUMBER || field.type === KBN_FIELD_TYPES.DATE; + }); + + if (numericColumns.length === 0) { + return {}; + } + + const minMaxAggs = numericColumns.reduce((aggs, c) => { + const id = stringHash(c.fieldName); + aggs[id] = { + stats: { + field: c.fieldName, + }, + }; + return aggs; + }, {} as Record); + + const body = await client.search({ + index: indexPattern, + size: 0, + body: { + query, + aggs: buildSamplerAggregation(minMaxAggs, samplerShardSize), + size: 0, + ...(isPopulatedObject(runtimeMappings) ? { runtime_mappings: runtimeMappings } : {}), + }, + }); + + const aggsPath = getSamplerAggregationsResponsePath(samplerShardSize); + const aggregations = aggsPath.length > 0 ? get(body.aggregations, aggsPath) : body.aggregations; + + return Object.keys(aggregations).reduce((p, aggName) => { + const stats = [aggregations[aggName].min, aggregations[aggName].max]; + if (!stats.includes(null)) { + const delta = aggregations[aggName].max - aggregations[aggName].min; + + let aggInterval = 1; + + if (delta > MAX_CHART_COLUMNS || delta <= 1) { + aggInterval = delta / (MAX_CHART_COLUMNS - 1); + } + + p[aggName] = { interval: aggInterval, min: stats[0], max: stats[1] }; + } + + return p; + }, {} as NumericColumnStatsMap); +}; diff --git a/x-pack/packages/ml/agg_utils/src/get_sampler_aggregations_response_path.test.ts b/x-pack/packages/ml/agg_utils/src/get_sampler_aggregations_response_path.test.ts new file mode 100644 index 0000000000000..78b30d27aada0 --- /dev/null +++ b/x-pack/packages/ml/agg_utils/src/get_sampler_aggregations_response_path.test.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getSamplerAggregationsResponsePath } from './get_sampler_aggregations_response_path'; + +describe('getSamplerAggregationsResponsePath', () => { + test('returns correct path for sampler shard size of 1000', () => { + expect(getSamplerAggregationsResponsePath(1000)).toEqual(['sample']); + }); + + test('returns correct path for sampler shard size of 0', () => { + expect(getSamplerAggregationsResponsePath(0)).toEqual([]); + }); +}); diff --git a/x-pack/packages/ml/agg_utils/src/get_sampler_aggregations_response_path.ts b/x-pack/packages/ml/agg_utils/src/get_sampler_aggregations_response_path.ts new file mode 100644 index 0000000000000..48a9e5051cacd --- /dev/null +++ b/x-pack/packages/ml/agg_utils/src/get_sampler_aggregations_response_path.ts @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// Returns the path of aggregations in the elasticsearch response, as an array, +// depending on whether sampling is being used. +// A supplied samplerShardSize (the shard_size parameter of the sampler aggregation) +// of less than 1 indicates no sampling, and an empty array is returned. +export function getSamplerAggregationsResponsePath(samplerShardSize: number): string[] { + return samplerShardSize > 0 ? ['sample'] : []; +} diff --git a/x-pack/packages/ml/agg_utils/src/index.ts b/x-pack/packages/ml/agg_utils/src/index.ts new file mode 100644 index 0000000000000..6705a28579b40 --- /dev/null +++ b/x-pack/packages/ml/agg_utils/src/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { buildSamplerAggregation } from './build_sampler_aggregation'; +export { getAggIntervals } from './get_agg_intervals'; +export { getSamplerAggregationsResponsePath } from './get_sampler_aggregations_response_path'; diff --git a/x-pack/packages/ml/agg_utils/tsconfig.json b/x-pack/packages/ml/agg_utils/tsconfig.json new file mode 100644 index 0000000000000..b74cfcda5ee73 --- /dev/null +++ b/x-pack/packages/ml/agg_utils/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node", + ], + }, + "include": [ + "src/**/*", + ] +} diff --git a/x-pack/packages/ml/agg_utils/yarn.lock b/x-pack/packages/ml/agg_utils/yarn.lock new file mode 100644 index 0000000000000..e826cf14c9da2 --- /dev/null +++ b/x-pack/packages/ml/agg_utils/yarn.lock @@ -0,0 +1,300 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@types/command-line-args@^5.0.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" + integrity sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA== + +"@types/command-line-usage@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/command-line-usage/-/command-line-usage-5.0.2.tgz#ba5e3f6ae5a2009d466679cc431b50635bf1a064" + integrity sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +command-line-application@^0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/command-line-application/-/command-line-application-0.9.6.tgz#03da3db29a0dbee1af601f03198a2f2425d67803" + integrity sha512-7wc7YX7s/hqZWKp4r37IBlW/Bhh92HWeQW2VV++Mt9x35AKFntz9f7A94Zz+AsImHZmRGHd8iNW5m0jUd4GQpg== + dependencies: + "@types/command-line-args" "^5.0.0" + "@types/command-line-usage" "^5.0.1" + chalk "^2.4.1" + command-line-args "^5.1.1" + command-line-usage "^6.0.0" + meant "^1.0.1" + remove-markdown "^0.3.0" + tslib "1.10.0" + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.0.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +fast-glob@^3.1.1: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +meant@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c" + integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +prettier@1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +remove-markdown@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.3.0.tgz#5e4b667493a93579728f3d52ecc1db9ca505dc98" + integrity sha512-5392eIuy1mhjM74739VunOlsOYKjsH82rQcTBlJ1bkICVC3dQ3ksQzTHh4jGHQFnM+1xzLzcFOMH+BofqXhroQ== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-readme@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/ts-readme/-/ts-readme-1.1.3.tgz#18a73d21f3bb50ee8e2df819bcbbe3a76385b15a" + integrity sha512-GvI+Vu3m/LGBlgrWwzSmvslnz8msJLNrZ7hQ3Ko2B6PMxeXidqsn6fi20IWgepFjOzhKGw/WlG8NmM7jl3DWeg== + dependencies: + command-line-application "^0.9.6" + fast-glob "^3.1.1" + prettier "1.19.1" + +tslib@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" diff --git a/x-pack/packages/ml/is_populated_object/BUILD.bazel b/x-pack/packages/ml/is_populated_object/BUILD.bazel new file mode 100644 index 0000000000000..e89b39af7c986 --- /dev/null +++ b/x-pack/packages/ml/is_populated_object/BUILD.bazel @@ -0,0 +1,114 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "is_populated_object" +PKG_REQUIRE_NAME = "@kbn/ml-is-populated-object" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/x-pack/packages/ml/is_populated_object/README.md b/x-pack/packages/ml/is_populated_object/README.md new file mode 100644 index 0000000000000..8d2d47329a3fa --- /dev/null +++ b/x-pack/packages/ml/is_populated_object/README.md @@ -0,0 +1,24 @@ +# @kbn/ml-is-populated-object + + + +### `isPopulatedObject` (function) + +A type guard to check record like object structures. + +Examples: + +- `isPopulatedObject({...})` + Limits type to Record + +- `isPopulatedObject({...}, ['attribute'])` + Limits type to Record<'attribute', unknown> + +- `isPopulatedObject({...})` + Limits type to a record with keys of the given interface. + Note that you might want to add keys from the interface to the + array of requiredAttributes to satisfy runtime requirements. + Otherwise you'd just satisfy TS requirements but might still + run into runtime issues. + + diff --git a/x-pack/packages/ml/is_populated_object/jest.config.js b/x-pack/packages/ml/is_populated_object/jest.config.js new file mode 100644 index 0000000000000..8ce420d82a0a4 --- /dev/null +++ b/x-pack/packages/ml/is_populated_object/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/x-pack/packages/ml/is_populated_object'], +}; diff --git a/x-pack/packages/ml/is_populated_object/package.json b/x-pack/packages/ml/is_populated_object/package.json new file mode 100644 index 0000000000000..3ca3e0fcffb01 --- /dev/null +++ b/x-pack/packages/ml/is_populated_object/package.json @@ -0,0 +1,13 @@ +{ + "name": "@kbn/ml-is-populated-object", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0", + "devDependencies": { + "ts-readme": "^1.1.3" + }, + "scripts": { + "generate-docs": "ts-readme src/index.ts" + } +} diff --git a/x-pack/packages/ml/is_populated_object/src/index.ts b/x-pack/packages/ml/is_populated_object/src/index.ts new file mode 100644 index 0000000000000..b2b1532739628 --- /dev/null +++ b/x-pack/packages/ml/is_populated_object/src/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { isPopulatedObject } from './is_populated_object'; diff --git a/x-pack/packages/ml/is_populated_object/src/is_populated_object.test.ts b/x-pack/packages/ml/is_populated_object/src/is_populated_object.test.ts new file mode 100644 index 0000000000000..c606c0677cf67 --- /dev/null +++ b/x-pack/packages/ml/is_populated_object/src/is_populated_object.test.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isPopulatedObject } from './is_populated_object'; + +describe('isPopulatedObject', () => { + it('does not allow numbers', () => { + expect(isPopulatedObject(0)).toBe(false); + }); + it('does not allow strings', () => { + expect(isPopulatedObject('')).toBe(false); + }); + it('does not allow null', () => { + expect(isPopulatedObject(null)).toBe(false); + }); + it('does not allow an empty object', () => { + expect(isPopulatedObject({})).toBe(false); + }); + it('allows an object with an attribute', () => { + expect(isPopulatedObject({ attribute: 'value' })).toBe(true); + }); + it('does not allow an object with a non-existing required attribute', () => { + expect(isPopulatedObject({ attribute: 'value' }, ['otherAttribute'])).toBe(false); + }); + it('allows an object with an existing required attribute', () => { + expect(isPopulatedObject({ attribute: 'value' }, ['attribute'])).toBe(true); + }); + it('allows an object with two existing required attributes', () => { + expect( + isPopulatedObject({ attribute1: 'value1', attribute2: 'value2' }, [ + 'attribute1', + 'attribute2', + ]) + ).toBe(true); + }); + it('does not allow an object with two required attributes where one does not exist', () => { + expect( + isPopulatedObject({ attribute1: 'value1', attribute2: 'value2' }, [ + 'attribute1', + 'otherAttribute', + ]) + ).toBe(false); + }); +}); diff --git a/x-pack/plugins/data_visualizer/common/utils/object_utils.ts b/x-pack/packages/ml/is_populated_object/src/is_populated_object.ts similarity index 99% rename from x-pack/plugins/data_visualizer/common/utils/object_utils.ts rename to x-pack/packages/ml/is_populated_object/src/is_populated_object.ts index 537ee9202b4de..43c529206bb63 100644 --- a/x-pack/plugins/data_visualizer/common/utils/object_utils.ts +++ b/x-pack/packages/ml/is_populated_object/src/is_populated_object.ts @@ -5,7 +5,7 @@ * 2.0. */ -/* +/** * A type guard to check record like object structures. * * Examples: diff --git a/x-pack/packages/ml/is_populated_object/tsconfig.json b/x-pack/packages/ml/is_populated_object/tsconfig.json new file mode 100644 index 0000000000000..97a3644c3c703 --- /dev/null +++ b/x-pack/packages/ml/is_populated_object/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/x-pack/packages/ml/is_populated_object/yarn.lock b/x-pack/packages/ml/is_populated_object/yarn.lock new file mode 100644 index 0000000000000..e826cf14c9da2 --- /dev/null +++ b/x-pack/packages/ml/is_populated_object/yarn.lock @@ -0,0 +1,300 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@types/command-line-args@^5.0.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" + integrity sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA== + +"@types/command-line-usage@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/command-line-usage/-/command-line-usage-5.0.2.tgz#ba5e3f6ae5a2009d466679cc431b50635bf1a064" + integrity sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +command-line-application@^0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/command-line-application/-/command-line-application-0.9.6.tgz#03da3db29a0dbee1af601f03198a2f2425d67803" + integrity sha512-7wc7YX7s/hqZWKp4r37IBlW/Bhh92HWeQW2VV++Mt9x35AKFntz9f7A94Zz+AsImHZmRGHd8iNW5m0jUd4GQpg== + dependencies: + "@types/command-line-args" "^5.0.0" + "@types/command-line-usage" "^5.0.1" + chalk "^2.4.1" + command-line-args "^5.1.1" + command-line-usage "^6.0.0" + meant "^1.0.1" + remove-markdown "^0.3.0" + tslib "1.10.0" + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.0.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +fast-glob@^3.1.1: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +meant@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c" + integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +prettier@1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +remove-markdown@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.3.0.tgz#5e4b667493a93579728f3d52ecc1db9ca505dc98" + integrity sha512-5392eIuy1mhjM74739VunOlsOYKjsH82rQcTBlJ1bkICVC3dQ3ksQzTHh4jGHQFnM+1xzLzcFOMH+BofqXhroQ== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-readme@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/ts-readme/-/ts-readme-1.1.3.tgz#18a73d21f3bb50ee8e2df819bcbbe3a76385b15a" + integrity sha512-GvI+Vu3m/LGBlgrWwzSmvslnz8msJLNrZ7hQ3Ko2B6PMxeXidqsn6fi20IWgepFjOzhKGw/WlG8NmM7jl3DWeg== + dependencies: + command-line-application "^0.9.6" + fast-glob "^3.1.1" + prettier "1.19.1" + +tslib@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" diff --git a/x-pack/packages/ml/string_hash/BUILD.bazel b/x-pack/packages/ml/string_hash/BUILD.bazel new file mode 100644 index 0000000000000..50e89a8975b51 --- /dev/null +++ b/x-pack/packages/ml/string_hash/BUILD.bazel @@ -0,0 +1,114 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "string_hash" +PKG_REQUIRE_NAME = "@kbn/ml-string-hash" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/x-pack/packages/ml/string_hash/README.md b/x-pack/packages/ml/string_hash/README.md new file mode 100644 index 0000000000000..32ea547e20f37 --- /dev/null +++ b/x-pack/packages/ml/string_hash/README.md @@ -0,0 +1,15 @@ +# @kbn/ml-string-hash + + + +### `stringHash` (function) + +Creates a deterministic number based hash out of a string. + +**Parameters:** + +- str (`string`) + +**returns:** number + + diff --git a/x-pack/packages/ml/string_hash/jest.config.js b/x-pack/packages/ml/string_hash/jest.config.js new file mode 100644 index 0000000000000..4f9fe0d1c70e0 --- /dev/null +++ b/x-pack/packages/ml/string_hash/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/x-pack/packages/ml/string_hash'], +}; diff --git a/x-pack/packages/ml/string_hash/package.json b/x-pack/packages/ml/string_hash/package.json new file mode 100644 index 0000000000000..81a0bf1c743f5 --- /dev/null +++ b/x-pack/packages/ml/string_hash/package.json @@ -0,0 +1,13 @@ +{ + "name": "@kbn/ml-string-hash", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0", + "devDependencies": { + "ts-readme": "^1.1.3" + }, + "scripts": { + "generate-docs": "ts-readme src/index.ts" + } +} diff --git a/x-pack/packages/ml/string_hash/src/index.ts b/x-pack/packages/ml/string_hash/src/index.ts new file mode 100644 index 0000000000000..f833c95914fb2 --- /dev/null +++ b/x-pack/packages/ml/string_hash/src/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { stringHash } from './string_hash'; diff --git a/x-pack/packages/ml/string_hash/src/string_hash.test.ts b/x-pack/packages/ml/string_hash/src/string_hash.test.ts new file mode 100644 index 0000000000000..3354e36455790 --- /dev/null +++ b/x-pack/packages/ml/string_hash/src/string_hash.test.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { stringHash } from './string_hash'; + +describe('stringHash', () => { + test('should return a unique number based off a string', () => { + const hash1 = stringHash('the-string-1'); + const hash2 = stringHash('the-string-2'); + expect(hash1).not.toBe(hash2); + }); +}); diff --git a/x-pack/plugins/data_visualizer/common/utils/string_utils.ts b/x-pack/packages/ml/string_hash/src/string_hash.ts similarity index 100% rename from x-pack/plugins/data_visualizer/common/utils/string_utils.ts rename to x-pack/packages/ml/string_hash/src/string_hash.ts diff --git a/x-pack/packages/ml/string_hash/tsconfig.json b/x-pack/packages/ml/string_hash/tsconfig.json new file mode 100644 index 0000000000000..97a3644c3c703 --- /dev/null +++ b/x-pack/packages/ml/string_hash/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/x-pack/packages/ml/string_hash/yarn.lock b/x-pack/packages/ml/string_hash/yarn.lock new file mode 100644 index 0000000000000..e826cf14c9da2 --- /dev/null +++ b/x-pack/packages/ml/string_hash/yarn.lock @@ -0,0 +1,300 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@types/command-line-args@^5.0.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/command-line-args/-/command-line-args-5.2.0.tgz#adbb77980a1cc376bb208e3f4142e907410430f6" + integrity sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA== + +"@types/command-line-usage@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/command-line-usage/-/command-line-usage-5.0.2.tgz#ba5e3f6ae5a2009d466679cc431b50635bf1a064" + integrity sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +command-line-application@^0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/command-line-application/-/command-line-application-0.9.6.tgz#03da3db29a0dbee1af601f03198a2f2425d67803" + integrity sha512-7wc7YX7s/hqZWKp4r37IBlW/Bhh92HWeQW2VV++Mt9x35AKFntz9f7A94Zz+AsImHZmRGHd8iNW5m0jUd4GQpg== + dependencies: + "@types/command-line-args" "^5.0.0" + "@types/command-line-usage" "^5.0.1" + chalk "^2.4.1" + command-line-args "^5.1.1" + command-line-usage "^6.0.0" + meant "^1.0.1" + remove-markdown "^0.3.0" + tslib "1.10.0" + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.0.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +fast-glob@^3.1.1: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +meant@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c" + integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +prettier@1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +remove-markdown@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.3.0.tgz#5e4b667493a93579728f3d52ecc1db9ca505dc98" + integrity sha512-5392eIuy1mhjM74739VunOlsOYKjsH82rQcTBlJ1bkICVC3dQ3ksQzTHh4jGHQFnM+1xzLzcFOMH+BofqXhroQ== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-readme@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/ts-readme/-/ts-readme-1.1.3.tgz#18a73d21f3bb50ee8e2df819bcbbe3a76385b15a" + integrity sha512-GvI+Vu3m/LGBlgrWwzSmvslnz8msJLNrZ7hQ3Ko2B6PMxeXidqsn6fi20IWgepFjOzhKGw/WlG8NmM7jl3DWeg== + dependencies: + command-line-application "^0.9.6" + fast-glob "^3.1.1" + prettier "1.19.1" + +tslib@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" diff --git a/x-pack/plugins/data_visualizer/common/types/field_stats.ts b/x-pack/plugins/data_visualizer/common/types/field_stats.ts index 9cc1f7d84f4e2..75fa662281fb3 100644 --- a/x-pack/plugins/data_visualizer/common/types/field_stats.ts +++ b/x-pack/plugins/data_visualizer/common/types/field_stats.ts @@ -8,7 +8,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { Query } from '@kbn/es-query'; import { IKibanaSearchResponse } from '@kbn/data-plugin/common'; -import { isPopulatedObject } from '../utils/object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { TimeBucketsInterval } from '../services/time_buckets'; export interface FieldData { diff --git a/x-pack/plugins/data_visualizer/common/types/index.ts b/x-pack/plugins/data_visualizer/common/types/index.ts index 6ab0649bfb9e6..395c9f2f595c2 100644 --- a/x-pack/plugins/data_visualizer/common/types/index.ts +++ b/x-pack/plugins/data_visualizer/common/types/index.ts @@ -6,7 +6,7 @@ */ import type { SimpleSavedObject } from '@kbn/core/public'; -import { isPopulatedObject } from '../utils/object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; export type { JobFieldType } from './job_field_type'; export type { FieldRequestConfig, diff --git a/x-pack/plugins/data_visualizer/common/utils/query_utils.ts b/x-pack/plugins/data_visualizer/common/utils/query_utils.ts index dc21bbcae96c3..9f0f746f8909b 100644 --- a/x-pack/plugins/data_visualizer/common/utils/query_utils.ts +++ b/x-pack/plugins/data_visualizer/common/utils/query_utils.ts @@ -40,35 +40,6 @@ export function buildBaseFilterCriteria( return filterCriteria; } -// Wraps the supplied aggregations in a sampler aggregation. -// A supplied samplerShardSize (the shard_size parameter of the sampler aggregation) -// of less than 1 indicates no sampling, and the aggs are returned as-is. -export function buildSamplerAggregation( - aggs: any, - samplerShardSize: number -): Record { - if (samplerShardSize < 1) { - return aggs; - } - - return { - sample: { - sampler: { - shard_size: samplerShardSize, - }, - aggs, - }, - }; -} - -// Returns the path of aggregations in the elasticsearch response, as an array, -// depending on whether sampling is being used. -// A supplied samplerShardSize (the shard_size parameter of the sampler aggregation) -// of less than 1 indicates no sampling, and an empty array is returned. -export function getSamplerAggregationsResponsePath(samplerShardSize: number): string[] { - return samplerShardSize > 0 ? ['sample'] : []; -} - // Returns a name which is safe to use in elasticsearch aggregations for the supplied // field name. Aggregation names must be alpha-numeric and can only contain '_' and '-' characters, // so if the supplied field names contains disallowed characters, the provided index diff --git a/x-pack/plugins/data_visualizer/common/utils/runtime_field_utils.ts b/x-pack/plugins/data_visualizer/common/utils/runtime_field_utils.ts index 6b2cb78d73274..10179d5e51732 100644 --- a/x-pack/plugins/data_visualizer/common/utils/runtime_field_utils.ts +++ b/x-pack/plugins/data_visualizer/common/utils/runtime_field_utils.ts @@ -6,7 +6,7 @@ */ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { RUNTIME_FIELD_TYPES } from '@kbn/data-plugin/common'; -import { isPopulatedObject } from './object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; type RuntimeType = typeof RUNTIME_FIELD_TYPES[number]; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/full_time_range_selector/full_time_range_selector_service.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/full_time_range_selector/full_time_range_selector_service.ts index c7cfc11c4d630..36b84afadfb04 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/full_time_range_selector/full_time_range_selector_service.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/full_time_range_selector/full_time_range_selector_service.ts @@ -12,7 +12,7 @@ import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import { i18n } from '@kbn/i18n'; import type { ToastsStart } from '@kbn/core/public'; import { DataView } from '@kbn/data-views-plugin/public'; -import { isPopulatedObject } from '../../../../../common/utils/object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { getTimeFieldRange } from '../../services/time_field_range'; import type { GetTimeFieldRangeResponse } from '../../../../../common/types/time_field_request'; import { addExcludeFrozenToQuery } from '../../utils/query_utils'; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_boolean_field_stats.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_boolean_field_stats.ts index bceb354295d9c..5b91d3716ffd9 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_boolean_field_stats.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_boolean_field_stats.ts @@ -14,11 +14,9 @@ import type { ISearchOptions, ISearchStart, } from '@kbn/data-plugin/public'; -import { - buildSamplerAggregation, - getSamplerAggregationsResponsePath, -} from '../../../../../common/utils/query_utils'; -import { isPopulatedObject } from '../../../../../common/utils/object_utils'; +import { buildSamplerAggregation, getSamplerAggregationsResponsePath } from '@kbn/ml-agg-utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; + import type { Field, BooleanFieldStats, diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_date_field_stats.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_date_field_stats.ts index 705fe8c002319..1f55f8117c1be 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_date_field_stats.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_date_field_stats.ts @@ -15,11 +15,8 @@ import type { ISearchOptions, ISearchStart, } from '@kbn/data-plugin/public'; -import { - buildSamplerAggregation, - getSamplerAggregationsResponsePath, -} from '../../../../../common/utils/query_utils'; -import { isPopulatedObject } from '../../../../../common/utils/object_utils'; +import { buildSamplerAggregation, getSamplerAggregationsResponsePath } from '@kbn/ml-agg-utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import type { FieldStatsCommonRequestParams } from '../../../../../common/types/field_stats'; import type { Field, DateFieldStats, Aggs } from '../../../../../common/types/field_stats'; import { FieldStatsError, isIKibanaSearchResponse } from '../../../../../common/types/field_stats'; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_document_stats.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_document_stats.ts index 6cd04de16fa6c..dd654e312e0ef 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_document_stats.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_document_stats.ts @@ -7,8 +7,8 @@ import { each, get } from 'lodash'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { buildBaseFilterCriteria } from '../../../../../common/utils/query_utils'; -import { isPopulatedObject } from '../../../../../common/utils/object_utils'; import type { DocumentCountStats, OverallStatsSearchStrategyParams, diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_field_examples.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_field_examples.ts index 8b057caecee7c..0e04665256e20 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_field_examples.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_field_examples.ts @@ -14,8 +14,8 @@ import type { ISearchOptions, ISearchStart, } from '@kbn/data-plugin/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { buildBaseFilterCriteria } from '../../../../../common/utils/query_utils'; -import { isPopulatedObject } from '../../../../../common/utils/object_utils'; import type { Field, FieldExamples, diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_numeric_field_stats.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_numeric_field_stats.ts index 163cb2585f3a6..033f4469b0bc2 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_numeric_field_stats.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_numeric_field_stats.ts @@ -16,17 +16,14 @@ import { ISearchOptions, } from '@kbn/data-plugin/common'; import type { ISearchStart } from '@kbn/data-plugin/public'; +import { buildSamplerAggregation, getSamplerAggregationsResponsePath } from '@kbn/ml-agg-utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { MAX_PERCENT, PERCENTILE_SPACING, SAMPLER_TOP_TERMS_SHARD_SIZE, SAMPLER_TOP_TERMS_THRESHOLD, } from './constants'; -import { - buildSamplerAggregation, - getSamplerAggregationsResponsePath, -} from '../../../../../common/utils/query_utils'; -import { isPopulatedObject } from '../../../../../common/utils/object_utils'; import type { Aggs, FieldStatsCommonRequestParams } from '../../../../../common/types/field_stats'; import type { Field, diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_string_field_stats.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_string_field_stats.ts index af4777a677bf9..60306ded5d8f4 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_string_field_stats.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/get_string_field_stats.ts @@ -15,12 +15,9 @@ import type { ISearchOptions, ISearchStart, } from '@kbn/data-plugin/public'; +import { buildSamplerAggregation, getSamplerAggregationsResponsePath } from '@kbn/ml-agg-utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { SAMPLER_TOP_TERMS_SHARD_SIZE, SAMPLER_TOP_TERMS_THRESHOLD } from './constants'; -import { - buildSamplerAggregation, - getSamplerAggregationsResponsePath, -} from '../../../../../common/utils/query_utils'; -import { isPopulatedObject } from '../../../../../common/utils/object_utils'; import type { Aggs, Bucket, diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/overall_stats.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/overall_stats.ts index 6a25fac65efe5..a25b3974d45b0 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/overall_stats.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/search_strategy/requests/overall_stats.ts @@ -9,14 +9,13 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { get } from 'lodash'; import { Query } from '@kbn/es-query'; import { IKibanaSearchResponse } from '@kbn/data-plugin/common'; +import { buildSamplerAggregation, getSamplerAggregationsResponsePath } from '@kbn/ml-agg-utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { buildBaseFilterCriteria, - buildSamplerAggregation, getSafeAggregationName, - getSamplerAggregationsResponsePath, } from '../../../../../common/utils/query_utils'; import { getDatafeedAggregations } from '../../../../../common/utils/datafeed_utils'; -import { isPopulatedObject } from '../../../../../common/utils/object_utils'; import { AggregatableField, NonAggregatableField } from '../../types/overall_stats'; import { AggCardinality, Aggs } from '../../../../../common/types/field_stats'; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/error_utils.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/error_utils.ts index d89a9aca112b3..e8992764a7f97 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/error_utils.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/error_utils.ts @@ -7,7 +7,7 @@ import { HttpFetchError } from '@kbn/core/public'; import Boom from '@hapi/boom'; -import { isPopulatedObject } from '../../../../common/utils/object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; export interface WrappedError { body: { diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/query_utils.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/query_utils.ts index 43c5d49d1986f..5ceda44fa44b3 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/query_utils.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/query_utils.ts @@ -7,7 +7,7 @@ import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import { cloneDeep } from 'lodash'; -import { isPopulatedObject } from '../../../../common/utils/object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; export const addExcludeFrozenToQuery = (originalQuery: QueryDslQueryContainer | undefined) => { const FROZEN_TIER_TERM = { diff --git a/x-pack/plugins/file_upload/common/utils.ts b/x-pack/plugins/file_upload/common/utils.ts deleted file mode 100644 index 5ef6c56392e56..0000000000000 --- a/x-pack/plugins/file_upload/common/utils.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export const isPopulatedObject = ( - arg: unknown, - requiredAttributes: U[] = [] -): arg is Record => { - return ( - typeof arg === 'object' && - arg !== null && - Object.keys(arg).length > 0 && - (requiredAttributes.length === 0 || - requiredAttributes.every((d) => ({}.hasOwnProperty.call(arg, d)))) - ); -}; diff --git a/x-pack/plugins/file_upload/public/importer/importer.ts b/x-pack/plugins/file_upload/public/importer/importer.ts index 58809e736720c..8928c4849435f 100644 --- a/x-pack/plugins/file_upload/public/importer/importer.ts +++ b/x-pack/plugins/file_upload/public/importer/importer.ts @@ -8,6 +8,7 @@ import { chunk, intersection } from 'lodash'; import moment from 'moment'; import { i18n } from '@kbn/i18n'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { getHttp } from '../kibana_services'; import { MB } from '../../common/constants'; import type { @@ -19,7 +20,6 @@ import type { IngestPipeline, } from '../../common/types'; import { CreateDocsResponse, IImporter, ImportResults } from './types'; -import { isPopulatedObject } from '../../common/utils'; const CHUNK_SIZE = 5000; const REDUCED_CHUNK_SIZE = 100; diff --git a/x-pack/plugins/file_upload/server/get_time_field_range.ts b/x-pack/plugins/file_upload/server/get_time_field_range.ts index e8b21e6807a8f..32bf1766f8d90 100644 --- a/x-pack/plugins/file_upload/server/get_time_field_range.ts +++ b/x-pack/plugins/file_upload/server/get_time_field_range.ts @@ -7,7 +7,7 @@ import { IScopedClusterClient } from '@kbn/core/server'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; -import { isPopulatedObject } from '../common/utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; export async function getTimeFieldRange( client: IScopedClusterClient, diff --git a/x-pack/plugins/file_upload/server/utils/runtime_field_utils.ts b/x-pack/plugins/file_upload/server/utils/runtime_field_utils.ts index 0daf9713d8263..75c2aa886ef68 100644 --- a/x-pack/plugins/file_upload/server/utils/runtime_field_utils.ts +++ b/x-pack/plugins/file_upload/server/utils/runtime_field_utils.ts @@ -7,7 +7,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { RUNTIME_FIELD_TYPES } from '@kbn/data-plugin/common'; -import { isPopulatedObject } from '../../common/utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; type RuntimeType = typeof RUNTIME_FIELD_TYPES[number]; diff --git a/x-pack/plugins/ml/common/index.ts b/x-pack/plugins/ml/common/index.ts index cfed678a804a1..8d419f120a564 100644 --- a/x-pack/plugins/ml/common/index.ts +++ b/x-pack/plugins/ml/common/index.ts @@ -14,7 +14,6 @@ export { SEVERITY_COLORS, } from './constants/anomalies'; export { getSeverityColor, getSeverityType } from './util/anomaly_utils'; -export { isPopulatedObject } from './util/object_utils'; export { composeValidators, patternValidator } from './util/validators'; export { isRuntimeMappings, isRuntimeField } from './util/runtime_field_utils'; export { extractErrorMessage } from './util/errors'; diff --git a/x-pack/plugins/ml/common/types/es_client.ts b/x-pack/plugins/ml/common/types/es_client.ts index 44425619af39d..9d8f5f3dbed9f 100644 --- a/x-pack/plugins/ml/common/types/es_client.ts +++ b/x-pack/plugins/ml/common/types/es_client.ts @@ -6,7 +6,7 @@ */ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { isPopulatedObject } from '../util/object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; export function isMultiBucketAggregate( arg: unknown diff --git a/x-pack/plugins/ml/common/types/feature_importance.ts b/x-pack/plugins/ml/common/types/feature_importance.ts index 111c8432dd439..3333f11ecd2e6 100644 --- a/x-pack/plugins/ml/common/types/feature_importance.ts +++ b/x-pack/plugins/ml/common/types/feature_importance.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { isPopulatedObject } from '../util/object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; export type FeatureImportanceClassName = string | number | boolean; diff --git a/x-pack/plugins/ml/common/util/errors/process_errors.ts b/x-pack/plugins/ml/common/util/errors/process_errors.ts index e5c6ed38161ab..0da2650fa5fd6 100644 --- a/x-pack/plugins/ml/common/util/errors/process_errors.ts +++ b/x-pack/plugins/ml/common/util/errors/process_errors.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { ErrorType, MLErrorObject, @@ -14,7 +15,6 @@ import { isEsErrorBody, isMLResponseError, } from './types'; -import { isPopulatedObject } from '../object_utils'; export const extractErrorProperties = (error: ErrorType): MLErrorObject => { // extract properties of the error object from within the response error diff --git a/x-pack/plugins/ml/common/util/group_color_utils.ts b/x-pack/plugins/ml/common/util/group_color_utils.ts index b9709671475be..3c2398a18684f 100644 --- a/x-pack/plugins/ml/common/util/group_color_utils.ts +++ b/x-pack/plugins/ml/common/util/group_color_utils.ts @@ -7,7 +7,7 @@ import { euiDarkVars as euiVars } from '@kbn/ui-theme'; -import { stringHash } from './string_utils'; +import { stringHash } from '@kbn/ml-string-hash'; const COLORS = [ euiVars.euiColorVis0, diff --git a/x-pack/plugins/ml/common/util/job_utils.ts b/x-pack/plugins/ml/common/util/job_utils.ts index f1991118d4e36..d7faf732a7c84 100644 --- a/x-pack/plugins/ml/common/util/job_utils.ts +++ b/x-pack/plugins/ml/common/util/job_utils.ts @@ -9,9 +9,9 @@ import { each, isEmpty, isEqual, pick } from 'lodash'; import semverGte from 'semver/functions/gte'; import moment, { Duration } from 'moment'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -// @ts-ignore import numeral from '@elastic/numeral'; import { i18n } from '@kbn/i18n'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { ALLOWED_DATA_UNITS, JOB_ID_MAX_LENGTH } from '../constants/validation'; import { parseInterval } from './parse_interval'; import { maxLengthValidator } from './validators'; @@ -24,7 +24,7 @@ import { ES_AGGREGATION, ML_JOB_AGGREGATION } from '../constants/aggregation_typ import { MLCATEGORY } from '../constants/field_types'; import { getAggregations, getDatafeedAggregations } from './datafeed_utils'; import { findAggField } from './validation_utils'; -import { getFirstKeyInObject, isPopulatedObject } from './object_utils'; +import { getFirstKeyInObject } from './object_utils'; import { isDefined } from '../types/guards'; export interface ValidationResults { diff --git a/x-pack/plugins/ml/common/util/object_utils.test.ts b/x-pack/plugins/ml/common/util/object_utils.test.ts index d6d500cdb82c6..e6a0617c6335e 100644 --- a/x-pack/plugins/ml/common/util/object_utils.test.ts +++ b/x-pack/plugins/ml/common/util/object_utils.test.ts @@ -5,49 +5,9 @@ * 2.0. */ -import { getFirstKeyInObject, isPopulatedObject } from './object_utils'; +import { getFirstKeyInObject } from './object_utils'; describe('object_utils', () => { - describe('isPopulatedObject()', () => { - it('does not allow numbers', () => { - expect(isPopulatedObject(0)).toBe(false); - }); - it('does not allow strings', () => { - expect(isPopulatedObject('')).toBe(false); - }); - it('does not allow null', () => { - expect(isPopulatedObject(null)).toBe(false); - }); - it('does not allow an empty object', () => { - expect(isPopulatedObject({})).toBe(false); - }); - it('allows an object with an attribute', () => { - expect(isPopulatedObject({ attribute: 'value' })).toBe(true); - }); - it('does not allow an object with a non-existing required attribute', () => { - expect(isPopulatedObject({ attribute: 'value' }, ['otherAttribute'])).toBe(false); - }); - it('allows an object with an existing required attribute', () => { - expect(isPopulatedObject({ attribute: 'value' }, ['attribute'])).toBe(true); - }); - it('allows an object with two existing required attributes', () => { - expect( - isPopulatedObject({ attribute1: 'value1', attribute2: 'value2' }, [ - 'attribute1', - 'attribute2', - ]) - ).toBe(true); - }); - it('does not allow an object with two required attributes where one does not exist', () => { - expect( - isPopulatedObject({ attribute1: 'value1', attribute2: 'value2' }, [ - 'attribute1', - 'otherAttribute', - ]) - ).toBe(false); - }); - }); - describe('getFirstKeyInObject()', () => { it('gets the first key in object', () => { expect(getFirstKeyInObject({ attribute1: 'value', attribute2: 'value2' })).toBe('attribute1'); diff --git a/x-pack/plugins/ml/common/util/object_utils.ts b/x-pack/plugins/ml/common/util/object_utils.ts index cd62ca006725e..2bf2e301f9473 100644 --- a/x-pack/plugins/ml/common/util/object_utils.ts +++ b/x-pack/plugins/ml/common/util/object_utils.ts @@ -5,35 +5,7 @@ * 2.0. */ -/* - * A type guard to check record like object structures. - * - * Examples: - * - `isPopulatedObject({...})` - * Limits type to Record - * - * - `isPopulatedObject({...}, ['attribute'])` - * Limits type to Record<'attribute', unknown> - * - * - `isPopulatedObject({...})` - * Limits type to a record with keys of the given interface. - * Note that you might want to add keys from the interface to the - * array of requiredAttributes to satisfy runtime requirements. - * Otherwise you'd just satisfy TS requirements but might still - * run into runtime issues. - */ -export const isPopulatedObject = ( - arg: unknown, - requiredAttributes: U[] = [] -): arg is Record => { - return ( - typeof arg === 'object' && - arg !== null && - Object.keys(arg).length > 0 && - (requiredAttributes.length === 0 || - requiredAttributes.every((d) => ({}.hasOwnProperty.call(arg, d)))) - ); -}; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; /** * Get the first key in the object diff --git a/x-pack/plugins/ml/common/util/query_utils.ts b/x-pack/plugins/ml/common/util/query_utils.ts index 22c0f45f2f239..5ceda44fa44b3 100644 --- a/x-pack/plugins/ml/common/util/query_utils.ts +++ b/x-pack/plugins/ml/common/util/query_utils.ts @@ -7,7 +7,7 @@ import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import { cloneDeep } from 'lodash'; -import { isPopulatedObject } from './object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; export const addExcludeFrozenToQuery = (originalQuery: QueryDslQueryContainer | undefined) => { const FROZEN_TIER_TERM = { diff --git a/x-pack/plugins/ml/common/util/runtime_field_utils.ts b/x-pack/plugins/ml/common/util/runtime_field_utils.ts index 6b2cb78d73274..10179d5e51732 100644 --- a/x-pack/plugins/ml/common/util/runtime_field_utils.ts +++ b/x-pack/plugins/ml/common/util/runtime_field_utils.ts @@ -6,7 +6,7 @@ */ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { RUNTIME_FIELD_TYPES } from '@kbn/data-plugin/common'; -import { isPopulatedObject } from './object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; type RuntimeType = typeof RUNTIME_FIELD_TYPES[number]; diff --git a/x-pack/plugins/ml/common/util/string_utils.test.ts b/x-pack/plugins/ml/common/util/string_utils.test.ts index 52a3c10da8b5a..43acc80110001 100644 --- a/x-pack/plugins/ml/common/util/string_utils.test.ts +++ b/x-pack/plugins/ml/common/util/string_utils.test.ts @@ -5,12 +5,7 @@ * 2.0. */ -import { - renderTemplate, - getMedianStringLength, - stringHash, - getGroupQueryText, -} from './string_utils'; +import { renderTemplate, getMedianStringLength, getGroupQueryText } from './string_utils'; const strings: string[] = [ 'foo', @@ -53,14 +48,6 @@ describe('ML - string utils', () => { }); }); - describe('stringHash', () => { - test('should return a unique number based off a string', () => { - const hash1 = stringHash('the-string-1'); - const hash2 = stringHash('the-string-2'); - expect(hash1).not.toBe(hash2); - }); - }); - describe('getGroupQueryText', () => { const groupIdOne = 'test_group_id_1'; const groupIdTwo = 'test_group_id_2'; diff --git a/x-pack/plugins/ml/common/util/string_utils.ts b/x-pack/plugins/ml/common/util/string_utils.ts index 044b34d166a87..d55d007ceb225 100644 --- a/x-pack/plugins/ml/common/util/string_utils.ts +++ b/x-pack/plugins/ml/common/util/string_utils.ts @@ -24,23 +24,6 @@ export function getMedianStringLength(strings: string[]) { return sortedStringLengths[Math.floor(sortedStringLengths.length / 2)] || 0; } -/** - * Creates a deterministic number based hash out of a string. - */ -export function stringHash(str: string): number { - let hash = 0; - let chr = 0; - if (str.length === 0) { - return hash; - } - for (let i = 0; i < str.length; i++) { - chr = str.charCodeAt(i); - hash = (hash << 5) - hash + chr; // eslint-disable-line no-bitwise - hash |= 0; // eslint-disable-line no-bitwise - } - return hash < 0 ? hash * -2 : hash; -} - export function getGroupQueryText(groupIds: string[]): string { return `groups:(${groupIds.join(' or ')})`; } diff --git a/x-pack/plugins/ml/common/util/validators.ts b/x-pack/plugins/ml/common/util/validators.ts index 0936efbcb00fc..b28e120b1f196 100644 --- a/x-pack/plugins/ml/common/util/validators.ts +++ b/x-pack/plugins/ml/common/util/validators.ts @@ -5,9 +5,9 @@ * 2.0. */ +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { ALLOWED_DATA_UNITS } from '../constants/validation'; import { parseInterval } from './parse_interval'; -import { isPopulatedObject } from './object_utils'; /** * Provides a validator function for maximum allowed input length. diff --git a/x-pack/plugins/ml/public/alerting/jobs_health_rule/anomaly_detection_jobs_health_rule_trigger.tsx b/x-pack/plugins/ml/public/alerting/jobs_health_rule/anomaly_detection_jobs_health_rule_trigger.tsx index dcbf580461e0f..1b88b38788554 100644 --- a/x-pack/plugins/ml/public/alerting/jobs_health_rule/anomaly_detection_jobs_health_rule_trigger.tsx +++ b/x-pack/plugins/ml/public/alerting/jobs_health_rule/anomaly_detection_jobs_health_rule_trigger.tsx @@ -11,13 +11,13 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import useDebounce from 'react-use/lib/useDebounce'; import { RuleTypeParamsExpressionProps } from '@kbn/triggers-actions-ui-plugin/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { MlAnomalyDetectionJobsHealthRuleParams } from '../../../common/types/alerts'; import { JobSelectorControl } from '../job_selector'; import { jobsApiProvider } from '../../application/services/ml_api_service/jobs'; import { HttpService } from '../../application/services/http_service'; import { useMlKibana } from '../../application/contexts/kibana'; import { TestsSelectionControl } from './tests_selection_control'; -import { isPopulatedObject } from '../../../common'; import { ALL_JOBS_SELECTION } from '../../../common/constants/alerts'; import { BetaBadge } from '../beta_badge'; import { isDefined } from '../../../common/types/guards'; diff --git a/x-pack/plugins/ml/public/application/components/data_grid/data_grid.tsx b/x-pack/plugins/ml/public/application/components/data_grid/data_grid.tsx index 82ae725038387..3edc757c11846 100644 --- a/x-pack/plugins/ml/public/application/components/data_grid/data_grid.tsx +++ b/x-pack/plugins/ml/public/application/components/data_grid/data_grid.tsx @@ -27,6 +27,7 @@ import { } from '@elastic/eui'; import { CoreSetup } from '@kbn/core/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { DEFAULT_SAMPLER_SHARD_SIZE } from '../../../../common/constants/field_histograms'; import { ANALYSIS_CONFIG_TYPE, INDEX_STATUS } from '../../data_frame_analytics/common'; @@ -44,7 +45,6 @@ import { FeatureImportance, TopClasses, } from '../../../../common/types/feature_importance'; -import { isPopulatedObject } from '../../../../common/util/object_utils'; import { DEFAULT_RESULTS_FIELD } from '../../../../common/constants/data_frame_analytics'; import { DataFrameAnalysisConfigType } from '../../../../common/types/data_frame_analytics'; diff --git a/x-pack/plugins/ml/public/application/components/full_time_range_selector/full_time_range_selector_service.ts b/x-pack/plugins/ml/public/application/components/full_time_range_selector/full_time_range_selector_service.ts index c83836164221d..edaa2c30662b1 100644 --- a/x-pack/plugins/ml/public/application/components/full_time_range_selector/full_time_range_selector_service.ts +++ b/x-pack/plugins/ml/public/application/components/full_time_range_selector/full_time_range_selector_service.ts @@ -11,9 +11,9 @@ import { i18n } from '@kbn/i18n'; import dateMath from '@kbn/datemath'; import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import type { DataView } from '@kbn/data-views-plugin/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { getTimefilter, getToastNotifications } from '../../util/dependency_cache'; import { ml, GetTimeFieldRangeResponse } from '../../services/ml_api_service'; -import { isPopulatedObject } from '../../../../common/util/object_utils'; import type { RuntimeMappings } from '../../../../common/types/fields'; import { addExcludeFrozenToQuery } from '../../../../common/util/query_utils'; diff --git a/x-pack/plugins/ml/public/application/components/scatterplot_matrix/scatterplot_matrix.tsx b/x-pack/plugins/ml/public/application/components/scatterplot_matrix/scatterplot_matrix.tsx index b93ba79830f98..e11de5fea47d3 100644 --- a/x-pack/plugins/ml/public/application/components/scatterplot_matrix/scatterplot_matrix.tsx +++ b/x-pack/plugins/ml/public/application/components/scatterplot_matrix/scatterplot_matrix.tsx @@ -25,9 +25,9 @@ import { import { i18n } from '@kbn/i18n'; import { DataView } from '@kbn/data-views-plugin/public'; +import { stringHash } from '@kbn/ml-string-hash'; import { extractErrorMessage } from '../../../../common'; import { isRuntimeMappings } from '../../../../common/util/runtime_field_utils'; -import { stringHash } from '../../../../common/util/string_utils'; import { RuntimeMappings } from '../../../../common/types/fields'; import type { ResultsSearchQuery } from '../../data_frame_analytics/common/analytics'; import { getCombinedRuntimeMappings } from '../data_grid'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/runtime_mappings.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/runtime_mappings.tsx index 9de32fdd5bd3e..962a06410ca50 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/runtime_mappings.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/runtime_mappings/runtime_mappings.tsx @@ -21,10 +21,10 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { XJsonMode } from '@kbn/ace'; import { XJson } from '@kbn/es-ui-shared-plugin/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { useMlContext } from '../../../../../contexts/ml'; import { CreateAnalyticsFormProps } from '../../../analytics_management/hooks/use_create_analytics_form'; import { getCombinedRuntimeMappings } from '../../../../../components/data_grid/common'; -import { isPopulatedObject } from '../../../../../../../common/util/object_utils'; import { RuntimeMappingsEditor } from './runtime_mappings_editor'; import { isRuntimeMappings } from '../../../../../../../common'; import { SwitchModal } from './switch_modal'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/hooks/use_exploration_url_state.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/hooks/use_exploration_url_state.ts index dac1a85211c20..1a26cce465d85 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/hooks/use_exploration_url_state.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/hooks/use_exploration_url_state.ts @@ -5,11 +5,11 @@ * 2.0. */ +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { usePageUrlState } from '../../../../util/url_state'; import { ML_PAGES } from '../../../../../../common/constants/locator'; import { ExplorationPageUrlState } from '../../../../../../common/types/locator'; import { SEARCH_QUERY_LANGUAGE } from '../../../../../../common/constants/search'; -import { isPopulatedObject } from '../../../../../../common/util/object_utils'; export function getDefaultExplorationPageUrlState( overrides?: Partial diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js index d6926950dce7d..364cdd1be55db 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js @@ -21,7 +21,7 @@ import { JOB_STATE, DATAFEED_STATE } from '../../../../../common/constants/state import { JOB_ACTION } from '../../../../../common/constants/job_actions'; import { parseInterval } from '../../../../../common/util/parse_interval'; import { mlCalendarService } from '../../../services/calendar_service'; -import { isPopulatedObject } from '../../../../../common/util/object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; export function loadFullJob(jobId) { return new Promise((resolve, reject) => { diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_utils.ts b/x-pack/plugins/ml/public/application/jobs/jobs_utils.ts index 103f079b88ff3..79952312723fa 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_utils.ts +++ b/x-pack/plugins/ml/public/application/jobs/jobs_utils.ts @@ -6,7 +6,7 @@ */ import { MlJob } from '@elastic/elasticsearch/lib/api/types'; -import { isPopulatedObject } from '../../../common'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { MlSummaryJob } from '../../../common/types/anomaly_detection_jobs'; export const isManagedJob = (job: MlSummaryJob | MlJob) => { diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/filter_runtime_mappings.ts b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/filter_runtime_mappings.ts index 9f6f301891741..2f081369ca686 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/filter_runtime_mappings.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/common/job_creator/util/filter_runtime_mappings.ts @@ -5,9 +5,9 @@ * 2.0. */ +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import type { RuntimeMappings } from '../../../../../../../common/types/fields'; import type { Datafeed, Job } from '../../../../../../../common/types/anomaly_detection_jobs'; -import { isPopulatedObject } from '../../../../../../../common/util/object_utils'; interface Response { runtime_mappings: RuntimeMappings; diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/recognize/page.tsx b/x-pack/plugins/ml/public/application/jobs/new_job/recognize/page.tsx index c370778b178c8..59176d06d92c0 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/recognize/page.tsx +++ b/x-pack/plugins/ml/public/application/jobs/new_job/recognize/page.tsx @@ -19,6 +19,7 @@ import { } from '@elastic/eui'; import { merge } from 'lodash'; import moment from 'moment'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { useMlKibana, useMlLocator } from '../../../contexts/kibana'; import { ml } from '../../../services/ml_api_service'; import { useMlContext } from '../../../contexts/ml'; @@ -40,7 +41,6 @@ import { JobId } from '../../../../../common/types/anomaly_detection_jobs'; import { ML_PAGES } from '../../../../../common/constants/locator'; import { TIME_FORMAT } from '../../../../../common/constants/time_format'; import { JobsAwaitingNodeWarning } from '../../../components/jobs_awaiting_node_warning'; -import { isPopulatedObject } from '../../../../../common/util/object_utils'; import { RuntimeMappings } from '../../../../../common/types/fields'; import { addExcludeFrozenToQuery } from '../../../../../common/util/query_utils'; import { MlPageHeader } from '../../../components/page_header'; diff --git a/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts b/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts index 0ed3b511b669e..d1e42dd72ddaf 100644 --- a/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts +++ b/x-pack/plugins/ml/public/application/services/anomaly_explorer_charts_service.ts @@ -9,12 +9,12 @@ import { Observable, of } from 'rxjs'; import { map as mapObservable } from 'rxjs/operators'; import type { TimeRange } from '@kbn/es-query'; import type { TimefilterContract } from '@kbn/data-plugin/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import type { RecordForInfluencer } from './results_service/results_service'; import type { EntityField } from '../../../common/util/anomaly_utils'; import type { CombinedJob } from '../../../common/types/anomaly_detection_jobs'; import type { MlApiServices } from './ml_api_service'; import type { MlResultsService } from './results_service'; -import { isPopulatedObject } from '../../../common/util/object_utils'; import { ExplorerChartsData } from '../explorer/explorer_charts/explorer_charts_container_service'; import type { TimeRangeBounds } from '../util/time_buckets'; import { isDefined } from '../../../common/types/guards'; diff --git a/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts b/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts index cbe4017a02835..38bf80be1ffed 100644 --- a/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts +++ b/x-pack/plugins/ml/public/application/services/anomaly_timeline_service.ts @@ -8,6 +8,7 @@ import { IUiSettingsClient } from '@kbn/core/public'; import type { TimeRange } from '@kbn/es-query'; import { TimefilterContract, UI_SETTINGS } from '@kbn/data-plugin/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { getBoundsRoundedToInterval, TimeBuckets, @@ -24,7 +25,6 @@ import { OVERALL_LABEL, VIEW_BY_JOB_LABEL } from '../explorer/explorer_constants import { MlResultsService } from './results_service'; import { EntityField } from '../../../common/util/anomaly_utils'; import { InfluencersFilterQuery } from '../../../common/types/es_client'; -import { isPopulatedObject } from '../../../common'; /** * Service for retrieving anomaly swim lanes data. diff --git a/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts b/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts index 54dece80f22cf..d5da658755943 100644 --- a/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts +++ b/x-pack/plugins/ml/public/application/services/results_service/result_service_rx.ts @@ -15,6 +15,7 @@ import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { each, get } from 'lodash'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { Dictionary } from '../../../../common/types/common'; import { ML_MEDIAN_PERCENTS } from '../../../../common/util/job_utils'; import { Datafeed, JobId } from '../../../../common/types/anomaly_detection_jobs'; @@ -24,7 +25,6 @@ import { findAggField } from '../../../../common/util/validation_utils'; import { getDatafeedAggregations } from '../../../../common/util/datafeed_utils'; import { aggregationTypeTransform, EntityField } from '../../../../common/util/anomaly_utils'; import { ES_AGGREGATION } from '../../../../common/constants/aggregation_types'; -import { isPopulatedObject } from '../../../../common/util/object_utils'; import { InfluencersFilterQuery } from '../../../../common/types/es_client'; import { RecordForInfluencer } from './results_service'; import { isRuntimeMappings } from '../../../../common'; diff --git a/x-pack/plugins/ml/public/application/services/results_service/results_service.js b/x-pack/plugins/ml/public/application/services/results_service/results_service.js index bb6f6b5969ac4..b26e52f5f32f2 100644 --- a/x-pack/plugins/ml/public/application/services/results_service/results_service.js +++ b/x-pack/plugins/ml/public/application/services/results_service/results_service.js @@ -7,6 +7,8 @@ import { each, get } from 'lodash'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; + import { ML_MEDIAN_PERCENTS } from '../../../../common/util/job_utils'; import { escapeForElasticsearchQuery } from '../../util/string_utils'; import { @@ -14,7 +16,6 @@ import { SWIM_LANE_DEFAULT_PAGE_SIZE, } from '../../explorer/explorer_constants'; import { aggregationTypeTransform } from '../../../../common/util/anomaly_utils'; -import { isPopulatedObject } from '../../../../common/util/object_utils'; /** * Service for carrying out Elasticsearch queries to obtain data for the Ml Results dashboards. diff --git a/x-pack/plugins/ml/public/application/trained_models/models_management/expanded_row.tsx b/x-pack/plugins/ml/public/application/trained_models/models_management/expanded_row.tsx index 8b868a088499d..6ab9261213d56 100644 --- a/x-pack/plugins/ml/public/application/trained_models/models_management/expanded_row.tsx +++ b/x-pack/plugins/ml/public/application/trained_models/models_management/expanded_row.tsx @@ -23,9 +23,9 @@ import { import type { EuiDescriptionListProps } from '@elastic/eui/src/components/description_list/description_list'; import { FormattedMessage } from '@kbn/i18n-react'; import { FIELD_FORMAT_IDS } from '@kbn/field-formats-plugin/common'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import type { ModelItemFull } from './models_list'; import { isDefined } from '../../../../common/types/guards'; -import { isPopulatedObject } from '../../../../common'; import { ModelPipelines } from './pipelines'; import { AllocatedModels } from '../nodes_overview/allocated_models'; import type { AllocatedModel } from '../../../../common/types/trained_models'; diff --git a/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx b/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx index 4f3cef2eeda12..07b1e876d4120 100644 --- a/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx +++ b/x-pack/plugins/ml/public/application/trained_models/models_management/models_list.tsx @@ -26,6 +26,7 @@ import { EuiBasicTableColumn } from '@elastic/eui/src/components/basic_table/bas import { EuiTableSelectionType } from '@elastic/eui/src/components/basic_table/table_types'; import { Action } from '@elastic/eui/src/components/basic_table/action_types'; import { FIELD_FORMAT_IDS } from '@kbn/field-formats-plugin/common'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { getAnalysisType } from '../../data_frame_analytics/common'; import { ModelsTableToConfigMapping } from '.'; import { ModelsBarStats, StatsBar } from '../../components/stats_bar'; @@ -44,7 +45,6 @@ import { ML_PAGES } from '../../../../common/constants/locator'; import { ListingPageUrlState } from '../../../../common/types/common'; import { usePageUrlState } from '../../util/url_state'; import { ExpandedRow } from './expanded_row'; -import { isPopulatedObject } from '../../../../common'; import { useTableSettings } from '../../data_frame_analytics/pages/analytics_management/components/analytics_list/use_table_settings'; import { useToastNotificationService } from '../../services/toast_notification_service'; import { useFieldFormatter } from '../../contexts/kibana/use_field_formatter'; diff --git a/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/utils.ts b/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/utils.ts index 3ac6ec77f576a..e340170ce46ce 100644 --- a/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/utils.ts +++ b/x-pack/plugins/ml/public/application/trained_models/models_management/test_models/utils.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { TRAINED_MODEL_TYPE, DEPLOYMENT_STATE, @@ -13,8 +14,6 @@ import { import type { SupportedPytorchTasksType } from '../../../../../common/constants/trained_models'; import type { ModelItem } from '../models_list'; -import { isPopulatedObject } from '../../../../../common'; - const PYTORCH_TYPES = Object.values(SUPPORTED_PYTORCH_TASKS); export function isTestable(modelItem: ModelItem) { diff --git a/x-pack/plugins/ml/public/application/util/url_state.tsx b/x-pack/plugins/ml/public/application/util/url_state.tsx index 42d5c012b9c14..a31b574681827 100644 --- a/x-pack/plugins/ml/public/application/util/url_state.tsx +++ b/x-pack/plugins/ml/public/application/util/url_state.tsx @@ -21,11 +21,11 @@ import { useHistory, useLocation } from 'react-router-dom'; import { BehaviorSubject, Observable } from 'rxjs'; import { distinctUntilChanged } from 'rxjs/operators'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { Dictionary } from '../../../common/types/common'; import { getNestedProperty } from './object_utils'; import { MlPages } from '../../../common/constants/locator'; -import { isPopulatedObject } from '../../../common'; type Accessor = '_a' | '_g'; export type SetUrlState = ( diff --git a/x-pack/plugins/ml/public/embeddables/types.ts b/x-pack/plugins/ml/public/embeddables/types.ts index 2ba4af15f7466..6a990db33398a 100644 --- a/x-pack/plugins/ml/public/embeddables/types.ts +++ b/x-pack/plugins/ml/public/embeddables/types.ts @@ -10,6 +10,7 @@ import type { Filter, Query, TimeRange } from '@kbn/es-query'; import type { RefreshInterval } from '@kbn/data-plugin/common'; import type { EmbeddableInput, EmbeddableOutput, IEmbeddable } from '@kbn/embeddable-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/common'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import type { JobId } from '../../common/types/anomaly_detection_jobs'; import type { SwimlaneType } from '../application/explorer/explorer_constants'; import type { AnomalyDetectorService } from '../application/services/anomaly_detector_service'; @@ -18,7 +19,6 @@ import type { MlDependencies } from '../application/app'; import type { AppStateSelectedCells } from '../application/explorer/explorer_utils'; import { AnomalyExplorerChartsService } from '../application/services/anomaly_explorer_charts_service'; import { EntityField } from '../../common/util/anomaly_utils'; -import { isPopulatedObject } from '../../common/util/object_utils'; import { ANOMALY_EXPLORER_CHARTS_EMBEDDABLE_TYPE, ANOMALY_SWIMLANE_EMBEDDABLE_TYPE, diff --git a/x-pack/plugins/ml/server/lib/query_utils.test.ts b/x-pack/plugins/ml/server/lib/query_utils.test.ts index a83265ed1262f..c505a8a9b1fa8 100644 --- a/x-pack/plugins/ml/server/lib/query_utils.test.ts +++ b/x-pack/plugins/ml/server/lib/query_utils.test.ts @@ -5,11 +5,7 @@ * 2.0. */ -import { - buildBaseFilterCriteria, - buildSamplerAggregation, - getSamplerAggregationsResponsePath, -} from './query_utils'; +import { buildBaseFilterCriteria } from './query_utils'; describe('ML - query utils', () => { describe('buildBaseFilterCriteria', () => { @@ -52,37 +48,4 @@ describe('ML - query utils', () => { ]); }); }); - - describe('buildSamplerAggregation', () => { - const testAggs = { - bytes_stats: { - stats: { field: 'bytes' }, - }, - }; - - test('returns wrapped sampler aggregation for sampler shard size of 1000', () => { - expect(buildSamplerAggregation(testAggs, 1000)).toEqual({ - sample: { - sampler: { - shard_size: 1000, - }, - aggs: testAggs, - }, - }); - }); - - test('returns un-sampled aggregation as-is for sampler shard size of 0', () => { - expect(buildSamplerAggregation(testAggs, 0)).toEqual(testAggs); - }); - }); - - describe('getSamplerAggregationsResponsePath', () => { - test('returns correct path for sampler shard size of 1000', () => { - expect(getSamplerAggregationsResponsePath(1000)).toEqual(['sample']); - }); - - test('returns correct path for sampler shard size of 0', () => { - expect(getSamplerAggregationsResponsePath(0)).toEqual([]); - }); - }); }); diff --git a/x-pack/plugins/ml/server/lib/query_utils.ts b/x-pack/plugins/ml/server/lib/query_utils.ts index cfaa5abaf7f23..a60622583781b 100644 --- a/x-pack/plugins/ml/server/lib/query_utils.ts +++ b/x-pack/plugins/ml/server/lib/query_utils.ts @@ -5,7 +5,6 @@ * 2.0. */ -import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; /* * Contains utility functions for building and processing queries. */ @@ -37,32 +36,3 @@ export function buildBaseFilterCriteria( return filterCriteria; } - -// Wraps the supplied aggregations in a sampler aggregation. -// A supplied samplerShardSize (the shard_size parameter of the sampler aggregation) -// of less than 1 indicates no sampling, and the aggs are returned as-is. -export function buildSamplerAggregation( - aggs: any, - samplerShardSize: number -): Record { - if (samplerShardSize < 1) { - return aggs; - } - - return { - sample: { - sampler: { - shard_size: samplerShardSize, - }, - aggs, - }, - }; -} - -// Returns the path of aggregations in the elasticsearch response, as an array, -// depending on whether sampling is being used. -// A supplied samplerShardSize (the shard_size parameter of the sampler aggregation) -// of less than 1 indicates no sampling, and an empty array is returned. -export function getSamplerAggregationsResponsePath(samplerShardSize: number): string[] { - return samplerShardSize > 0 ? ['sample'] : []; -} diff --git a/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts b/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts index 9bf107106a056..7060d935b0fef 100644 --- a/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts +++ b/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts @@ -17,6 +17,7 @@ import type { import moment from 'moment'; import { merge } from 'lodash'; import type { DataViewsService } from '@kbn/data-views-plugin/common'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import type { AnalysisLimits } from '../../../common/types/anomaly_detection_jobs'; import { getAuthorizationHeader } from '../../lib/request_authorization'; import type { MlClient } from '../../lib/ml_client'; @@ -54,7 +55,6 @@ import type { JobExistResult, JobStat } from '../../../common/types/data_recogni import type { Datafeed } from '../../../common/types/anomaly_detection_jobs'; import type { MLSavedObjectService } from '../../saved_objects'; import { isDefined } from '../../../common/types/guards'; -import { isPopulatedObject } from '../../../common/util/object_utils'; const ML_DIR = 'ml'; const KIBANA_DIR = 'kibana'; diff --git a/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts b/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts index bbfc43257caf5..6946a2fbda90f 100644 --- a/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts +++ b/x-pack/plugins/ml/server/models/data_visualizer/data_visualizer.ts @@ -5,21 +5,23 @@ * 2.0. */ -import { IScopedClusterClient } from '@kbn/core/server'; import { get, each, last, find } from 'lodash'; + +import { IScopedClusterClient } from '@kbn/core/server'; import { KBN_FIELD_TYPES } from '@kbn/data-plugin/server'; -import { ML_JOB_FIELD_TYPES } from '../../../common/constants/field_types'; -import { getSafeAggregationName } from '../../../common/util/job_utils'; -import { stringHash } from '../../../common/util/string_utils'; import { - buildBaseFilterCriteria, buildSamplerAggregation, + getAggIntervals, getSamplerAggregationsResponsePath, -} from '../../lib/query_utils'; +} from '@kbn/ml-agg-utils'; +import { stringHash } from '@kbn/ml-string-hash'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { ML_JOB_FIELD_TYPES } from '../../../common/constants/field_types'; +import { getSafeAggregationName } from '../../../common/util/job_utils'; +import { buildBaseFilterCriteria } from '../../lib/query_utils'; import { AggCardinality, RuntimeMappings } from '../../../common/types/fields'; import { getDatafeedAggregations } from '../../../common/util/datafeed_utils'; import { Datafeed } from '../../../common/types/anomaly_detection_jobs'; -import { isPopulatedObject } from '../../../common/util/object_utils'; const SAMPLER_TOP_TERMS_THRESHOLD = 100000; const SAMPLER_TOP_TERMS_SHARD_SIZE = 5000; @@ -112,13 +114,6 @@ interface FieldExamples { examples: any[]; } -interface NumericColumnStats { - interval: number; - min: number; - max: number; -} -type NumericColumnStatsMap = Record; - interface AggHistogram { histogram: { field: string; @@ -178,67 +173,6 @@ type BatchStats = | DocumentCountStats | FieldExamples; -const getAggIntervals = async ( - { asCurrentUser }: IScopedClusterClient, - indexPattern: string, - query: any, - fields: HistogramField[], - samplerShardSize: number, - runtimeMappings?: RuntimeMappings -): Promise => { - const numericColumns = fields.filter((field) => { - return field.type === KBN_FIELD_TYPES.NUMBER || field.type === KBN_FIELD_TYPES.DATE; - }); - - if (numericColumns.length === 0) { - return {}; - } - - const minMaxAggs = numericColumns.reduce((aggs, c) => { - const id = stringHash(c.fieldName); - aggs[id] = { - stats: { - field: c.fieldName, - }, - }; - return aggs; - }, {} as Record); - - const body = await asCurrentUser.search( - { - index: indexPattern, - size: 0, - body: { - query, - aggs: buildSamplerAggregation(minMaxAggs, samplerShardSize), - size: 0, - ...(isPopulatedObject(runtimeMappings) ? { runtime_mappings: runtimeMappings } : {}), - }, - }, - { maxRetries: 0 } - ); - - const aggsPath = getSamplerAggregationsResponsePath(samplerShardSize); - const aggregations = aggsPath.length > 0 ? get(body.aggregations, aggsPath) : body.aggregations; - - return Object.keys(aggregations).reduce((p, aggName) => { - const stats = [aggregations[aggName].min, aggregations[aggName].max]; - if (!stats.includes(null)) { - const delta = aggregations[aggName].max - aggregations[aggName].min; - - let aggInterval = 1; - - if (delta > MAX_CHART_COLUMNS || delta <= 1) { - aggInterval = delta / (MAX_CHART_COLUMNS - 1); - } - - p[aggName] = { interval: aggInterval, min: stats[0], max: stats[1] }; - } - - return p; - }, {} as NumericColumnStatsMap); -}; - // export for re-use by transforms plugin export const getHistogramsForFields = async ( client: IScopedClusterClient, @@ -250,7 +184,7 @@ export const getHistogramsForFields = async ( ) => { const { asCurrentUser } = client; const aggIntervals = await getAggIntervals( - client, + client.asCurrentUser, indexPattern, query, fields, diff --git a/x-pack/plugins/ml/server/models/fields_service/fields_service.ts b/x-pack/plugins/ml/server/models/fields_service/fields_service.ts index 64348a0656009..fd661063bde5f 100644 --- a/x-pack/plugins/ml/server/models/fields_service/fields_service.ts +++ b/x-pack/plugins/ml/server/models/fields_service/fields_service.ts @@ -8,6 +8,7 @@ import Boom from '@hapi/boom'; import { IScopedClusterClient } from '@kbn/core/server'; import { duration } from 'moment'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { parseInterval } from '../../../common/util/parse_interval'; import { initCardinalityFieldsCache } from './fields_aggs_cache'; import { AggCardinality } from '../../../common/types/fields'; @@ -15,7 +16,6 @@ import { isValidAggregationField } from '../../../common/util/validation_utils'; import { getDatafeedAggregations } from '../../../common/util/datafeed_utils'; import { Datafeed, IndicesOptions } from '../../../common/types/anomaly_detection_jobs'; import { RuntimeMappings } from '../../../common/types/fields'; -import { isPopulatedObject } from '../../../common/util/object_utils'; /** * Service for carrying out queries to obtain data diff --git a/x-pack/plugins/ml/server/models/job_service/jobs.ts b/x-pack/plugins/ml/server/models/job_service/jobs.ts index 1ffa9687fca95..f3cb4c584f27f 100644 --- a/x-pack/plugins/ml/server/models/job_service/jobs.ts +++ b/x-pack/plugins/ml/server/models/job_service/jobs.ts @@ -9,6 +9,7 @@ import { uniq } from 'lodash'; import Boom from '@hapi/boom'; import { IScopedClusterClient } from '@kbn/core/server'; import type { RulesClient } from '@kbn/alerting-plugin/server'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { getSingleMetricViewerJobErrorMessage, parseTimeIntervalForJob, @@ -47,7 +48,6 @@ import { } from '../../../common/util/job_utils'; import { groupsProvider } from './groups'; import type { MlClient } from '../../lib/ml_client'; -import { isPopulatedObject } from '../../../common/util/object_utils'; import { ML_ALERT_TYPES } from '../../../common/constants/alerts'; import { MlAnomalyDetectionAlertParams } from '../../routes/schemas/alerting_schema'; import type { AuthorizationHeader } from '../../lib/request_authorization'; diff --git a/x-pack/plugins/ml/server/models/results_service/anomaly_charts.ts b/x-pack/plugins/ml/server/models/results_service/anomaly_charts.ts index dd7e2b3373e89..9456e529eb039 100644 --- a/x-pack/plugins/ml/server/models/results_service/anomaly_charts.ts +++ b/x-pack/plugins/ml/server/models/results_service/anomaly_charts.ts @@ -10,8 +10,9 @@ import { i18n } from '@kbn/i18n'; import { each, find, get, keyBy, map, reduce, sortBy } from 'lodash'; import type * as estypes from '@elastic/elasticsearch/lib/api/types'; import { extent, max, min } from 'd3'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import type { MlClient } from '../../lib/ml_client'; -import { isPopulatedObject, isRuntimeMappings } from '../../../common'; +import { isRuntimeMappings } from '../../../common'; import type { MetricData, ModelPlotOutput, diff --git a/x-pack/plugins/transform/common/api_schemas/type_guards.ts b/x-pack/plugins/transform/common/api_schemas/type_guards.ts index 567eeb030e22d..821eda892deb3 100644 --- a/x-pack/plugins/transform/common/api_schemas/type_guards.ts +++ b/x-pack/plugins/transform/common/api_schemas/type_guards.ts @@ -7,9 +7,10 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; + import type { EsIndex } from '../types/es_index'; import type { EsIngestPipeline } from '../types/es_ingest_pipeline'; -import { isPopulatedObject } from '../shared_imports'; // To be able to use the type guards on the client side, we need to make sure we don't import // the code of '@kbn/config-schema' but just its types, otherwise the client side code will diff --git a/x-pack/plugins/transform/common/shared_imports.ts b/x-pack/plugins/transform/common/shared_imports.ts index 0566086046d0e..fd00440e07c5b 100644 --- a/x-pack/plugins/transform/common/shared_imports.ts +++ b/x-pack/plugins/transform/common/shared_imports.ts @@ -8,7 +8,6 @@ export type { ChartData } from '@kbn/ml-plugin/common'; export { composeValidators, - isPopulatedObject, isRuntimeMappings, patternValidator, isRuntimeField, diff --git a/x-pack/plugins/transform/common/types/data_view.ts b/x-pack/plugins/transform/common/types/data_view.ts index 98787a1281dbb..b541254971c35 100644 --- a/x-pack/plugins/transform/common/types/data_view.ts +++ b/x-pack/plugins/transform/common/types/data_view.ts @@ -6,8 +6,7 @@ */ import type { DataView } from '@kbn/data-views-plugin/common'; - -import { isPopulatedObject } from '../shared_imports'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; // Custom minimal type guard for DataView to check against the attributes used in transforms code. export function isDataView(arg: any): arg is DataView { diff --git a/x-pack/plugins/transform/common/types/transform.ts b/x-pack/plugins/transform/common/types/transform.ts index a196111bf6678..f4f9437e05d13 100644 --- a/x-pack/plugins/transform/common/types/transform.ts +++ b/x-pack/plugins/transform/common/types/transform.ts @@ -6,8 +6,8 @@ */ import type { EuiComboBoxOptionOption } from '@elastic/eui/src/components/combo_box/types'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import type { LatestFunctionConfig, PutTransformsRequestSchema } from '../api_schemas/transforms'; -import { isPopulatedObject } from '../shared_imports'; import type { PivotGroupByDict } from './pivot_group_by'; import type { PivotAggDict } from './pivot_aggs'; import type { TransformHealthAlertRule } from './alerting'; diff --git a/x-pack/plugins/transform/common/types/transform_stats.ts b/x-pack/plugins/transform/common/types/transform_stats.ts index 00ffa40b84d3b..2f9319201fd6b 100644 --- a/x-pack/plugins/transform/common/types/transform_stats.ts +++ b/x-pack/plugins/transform/common/types/transform_stats.ts @@ -5,8 +5,9 @@ * 2.0. */ +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; + import { TransformState, TRANSFORM_STATE } from '../constants'; -import { isPopulatedObject } from '../shared_imports'; import { TransformId } from './transform'; export interface TransformStats { diff --git a/x-pack/plugins/transform/common/utils/errors.ts b/x-pack/plugins/transform/common/utils/errors.ts index 2aff8f332b130..c9d81b740f721 100644 --- a/x-pack/plugins/transform/common/utils/errors.ts +++ b/x-pack/plugins/transform/common/utils/errors.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { isPopulatedObject } from '../shared_imports'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; export interface ErrorResponse { body: { diff --git a/x-pack/plugins/transform/public/app/common/pivot_aggs.ts b/x-pack/plugins/transform/public/app/common/pivot_aggs.ts index 9045191a779cb..4b986659fe633 100644 --- a/x-pack/plugins/transform/public/app/common/pivot_aggs.ts +++ b/x-pack/plugins/transform/public/app/common/pivot_aggs.ts @@ -8,13 +8,13 @@ import { FC } from 'react'; import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from '@kbn/data-plugin/common'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import type { AggName } from '../../../common/types/aggregations'; import type { Dictionary } from '../../../common/types/common'; import type { EsFieldName } from '../../../common/types/fields'; import type { PivotAgg, PivotSupportedAggs } from '../../../common/types/pivot_aggs'; import { PIVOT_SUPPORTED_AGGS } from '../../../common/types/pivot_aggs'; -import { isPopulatedObject } from '../../../common/shared_imports'; import { getAggFormConfig } from '../sections/create_transform/components/step_define/common/get_agg_form_config'; import { PivotAggsConfigFilter } from '../sections/create_transform/components/step_define/common/filter_agg/types'; diff --git a/x-pack/plugins/transform/public/app/common/pivot_group_by.ts b/x-pack/plugins/transform/public/app/common/pivot_group_by.ts index dd9a63088e791..b0fa78e8a902f 100644 --- a/x-pack/plugins/transform/public/app/common/pivot_group_by.ts +++ b/x-pack/plugins/transform/public/app/common/pivot_group_by.ts @@ -6,11 +6,11 @@ */ import { KBN_FIELD_TYPES } from '@kbn/data-plugin/common'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { AggName } from '../../../common/types/aggregations'; import { Dictionary } from '../../../common/types/common'; import { EsFieldName } from '../../../common/types/fields'; import { GenericAgg } from '../../../common/types/pivot_group_by'; -import { isPopulatedObject } from '../../../common/shared_imports'; import { PivotAggsConfigWithUiSupport } from './pivot_aggs'; export enum PIVOT_SUPPORTED_GROUP_BY_AGGS { diff --git a/x-pack/plugins/transform/public/app/common/request.ts b/x-pack/plugins/transform/public/app/common/request.ts index 350f57a3bcf58..4700e42a3d946 100644 --- a/x-pack/plugins/transform/public/app/common/request.ts +++ b/x-pack/plugins/transform/public/app/common/request.ts @@ -9,6 +9,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { HttpFetchError } from '@kbn/core/public'; import type { DataView } from '@kbn/data-views-plugin/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { DEFAULT_CONTINUOUS_MODE_DELAY, @@ -23,7 +24,6 @@ import type { PutTransformsPivotRequestSchema, PutTransformsRequestSchema, } from '../../../common/api_schemas/transforms'; -import { isPopulatedObject } from '../../../common/shared_imports'; import { DateHistogramAgg, HistogramAgg, TermsAgg } from '../../../common/types/pivot_group_by'; import { isDataView } from '../../../common/types/data_view'; diff --git a/x-pack/plugins/transform/public/app/lib/authorization/components/common.ts b/x-pack/plugins/transform/public/app/lib/authorization/components/common.ts index 659d525643965..c3db9834a5b54 100644 --- a/x-pack/plugins/transform/public/app/lib/authorization/components/common.ts +++ b/x-pack/plugins/transform/public/app/lib/authorization/components/common.ts @@ -6,9 +6,9 @@ */ import { i18n } from '@kbn/i18n'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { Privileges } from '../../../../../common/types/privileges'; -import { isPopulatedObject } from '../../../../../common/shared_imports'; export interface Capabilities { canGetTransform: boolean; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx index 649683182dcab..59f80d743a9a3 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx @@ -30,6 +30,7 @@ import { DISCOVER_APP_LOCATOR } from '@kbn/discover-plugin/public'; import { DuplicateDataViewError } from '@kbn/data-plugin/public'; import type { RuntimeField } from '@kbn/data-views-plugin/common'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import type { PutTransformsResponseSchema } from '../../../../../../common/api_schemas/transforms'; import { isGetTransformsStatsResponseSchema, @@ -49,7 +50,6 @@ import { PutTransformsLatestRequestSchema, PutTransformsPivotRequestSchema, } from '../../../../../../common/api_schemas/transforms'; -import { isPopulatedObject } from '../../../../../../common/shared_imports'; import { isContinuousTransform, isLatestTransform } from '../../../../../../common/types/transform'; import { TransformAlertFlyout } from '../../../../../alerting/transform_alerting_flyout'; diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx index 6f590a0e17892..55ecc18863aa5 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_agg_form.tsx @@ -10,13 +10,13 @@ import { EuiFormRow, EuiIcon, EuiSelect, EuiToolTip } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import useUpdateEffect from 'react-use/lib/useUpdateEffect'; import { DataView } from '@kbn/data-views-plugin/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { CreateTransformWizardContext } from '../../../../wizard/wizard'; import { commonFilterAggs, filterAggsFieldSupport } from '../constants'; import { getFilterAggTypeConfig } from '../config'; import type { FilterAggType, PivotAggsConfigFilter } from '../types'; import type { RuntimeMappings } from '../../types'; import { getKibanaFieldTypeFromEsType } from '../../get_pivot_dropdown_options'; -import { isPopulatedObject } from '../../../../../../../../../common/shared_imports'; /** * Resolves supported filters for provided field. diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/top_metrics_agg/config.ts b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/top_metrics_agg/config.ts index 56d17e7973e16..49be7b299712b 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/top_metrics_agg/config.ts +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/top_metrics_agg/config.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { isPivotAggsConfigWithUiSupport, isSpecialSortField, @@ -16,7 +17,6 @@ import { } from '../../../../../../common/pivot_aggs'; import { PivotAggsConfigTopMetrics } from './types'; import { TopMetricsAggForm } from './components/top_metrics_agg_form'; -import { isPopulatedObject } from '../../../../../../../../common/shared_imports'; /** * Gets initial basic configuration of the top_metrics aggregation. diff --git a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/types.ts b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/types.ts index e97d47864313c..a8a9b5c1e35b0 100644 --- a/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/types.ts +++ b/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/types.ts @@ -6,6 +6,7 @@ */ import { KBN_FIELD_TYPES } from '@kbn/data-plugin/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { EsFieldName } from '../../../../../../../common/types/fields'; @@ -24,7 +25,7 @@ import { } from '../../../../../../../common/types/transform'; import { LatestFunctionConfig } from '../../../../../../../common/api_schemas/transforms'; -import { isPopulatedObject, RUNTIME_FIELD_TYPES } from '../../../../../../../common/shared_imports'; +import { RUNTIME_FIELD_TYPES } from '../../../../../../../common/shared_imports'; export interface ErrorMessage { query: string; diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.ts b/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.ts index eb9adbb45b5b4..a2dc9148bf03f 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.ts +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/edit_transform_flyout/use_edit_transform_flyout.ts @@ -11,8 +11,8 @@ import { merge } from 'lodash'; import { useReducer } from 'react'; import { i18n } from '@kbn/i18n'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; -import { isPopulatedObject } from '../../../../../../common/shared_imports'; import { PostTransformsUpdateRequestSchema } from '../../../../../../common/api_schemas/update_transforms'; import { DEFAULT_TRANSFORM_FREQUENCY, diff --git a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx index 84110e67d701e..6477e33a5c5a7 100644 --- a/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx +++ b/x-pack/plugins/transform/public/app/sections/transform_management/components/transform_list/expanded_row.tsx @@ -10,6 +10,7 @@ import React, { FC } from 'react'; import { EuiButtonEmpty, EuiTabbedContent } from '@elastic/eui'; import { Optional } from '@kbn/utility-types'; import { i18n } from '@kbn/i18n'; +import { stringHash } from '@kbn/ml-string-hash'; import moment from 'moment-timezone'; import { TransformListRow } from '../../../../common'; @@ -28,23 +29,6 @@ function getItemDescription(value: any) { return value.toString(); } -/** - * Creates a deterministic number based hash out of a string. - */ -export function stringHash(str: string): number { - let hash = 0; - let chr = 0; - if (str.length === 0) { - return hash; - } - for (let i = 0; i < str.length; i++) { - chr = str.charCodeAt(i); - hash = (hash << 5) - hash + chr; // eslint-disable-line no-bitwise - hash |= 0; // eslint-disable-line no-bitwise - } - return hash < 0 ? hash * -2 : hash; -} - type Item = SectionItem; interface Props { diff --git a/x-pack/plugins/transform/server/routes/api/transforms_nodes.ts b/x-pack/plugins/transform/server/routes/api/transforms_nodes.ts index 426dc3d4fa342..a5f8f014430c7 100644 --- a/x-pack/plugins/transform/server/routes/api/transforms_nodes.ts +++ b/x-pack/plugins/transform/server/routes/api/transforms_nodes.ts @@ -7,8 +7,9 @@ import Boom from '@hapi/boom'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; + import { NODES_INFO_PRIVILEGES } from '../../../common/constants'; -import { isPopulatedObject } from '../../../common/shared_imports'; import { RouteDependencies } from '../../types'; diff --git a/x-pack/test/api_integration/apis/ml/modules/get_module.ts b/x-pack/test/api_integration/apis/ml/modules/get_module.ts index 5810b4bf7e6c8..4ff71201d9ad9 100644 --- a/x-pack/test/api_integration/apis/ml/modules/get_module.ts +++ b/x-pack/test/api_integration/apis/ml/modules/get_module.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; -import { isPopulatedObject } from '@kbn/ml-plugin/common/util/object_utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { FtrProviderContext } from '../../../ftr_provider_context'; import { USER } from '../../../../functional/services/ml/security_common'; import { COMMON_REQUEST_HEADERS } from '../../../../functional/services/ml/common_api'; diff --git a/yarn.lock b/yarn.lock index 2c9dcd462951b..5233110b1f99f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3275,6 +3275,18 @@ version "0.0.0" uid "" +"@kbn/ml-agg-utils@link:bazel-bin/x-pack/packages/ml/agg_utils": + version "0.0.0" + uid "" + +"@kbn/ml-is-populated-object@link:bazel-bin/x-pack/packages/ml/is_populated_object": + version "0.0.0" + uid "" + +"@kbn/ml-string-hash@link:bazel-bin/x-pack/packages/ml/string_hash": + version "0.0.0" + uid "" + "@kbn/monaco@link:bazel-bin/packages/kbn-monaco": version "0.0.0" uid "" @@ -6694,6 +6706,18 @@ version "0.0.0" uid "" +"@types/kbn__ml-agg-utils@link:bazel-bin/x-pack/packages/ml/agg_utils/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__ml-is-populated-object@link:bazel-bin/x-pack/packages/ml/is_populated_object/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__ml-string-hash@link:bazel-bin/x-pack/packages/ml/string_hash/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__monaco@link:bazel-bin/packages/kbn-monaco/npm_module_types": version "0.0.0" uid "" From ca532310f254e765c02fe85c9000eae4248158ff Mon Sep 17 00:00:00 2001 From: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Date: Thu, 23 Jun 2022 10:51:12 +0200 Subject: [PATCH 54/61] [Fleet] fix missing fleet server policy from enroll command (#134980) --- .../fleet/components/fleet_server_instructions/advanced_tab.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/advanced_tab.tsx b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/advanced_tab.tsx index 8ecdffce3ed44..02cc458295677 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/advanced_tab.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/components/fleet_server_instructions/advanced_tab.tsx @@ -63,7 +63,7 @@ export const AdvancedTab: React.FunctionComponent = ({ selecte isFleetServerReady, serviceToken, fleetServerHost: fleetServerHostForm.fleetServerHost, - fleetServerPolicyId, + fleetServerPolicyId: fleetServerPolicyId || selectedPolicyId, deploymentMode, disabled: !Boolean(serviceToken), }), From 8133605b894804cd834aea6152980c6164b9768f Mon Sep 17 00:00:00 2001 From: Liza Katz Date: Thu, 23 Jun 2022 12:46:07 +0300 Subject: [PATCH 55/61] [EBT] Enrich kibana loaded with timings (#134770) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add timings to kibana loaded event * jest * PR failures * code review * docs * add first_app_nav and first_app * tests * [CI] Auto-commit changed files from 'node scripts/precommit_hook.js --ref HEAD~1..HEAD --fix' * Update src/core/public/core_system.ts Co-authored-by: Alejandro Fernández Haro * Update src/core/public/core_system.ts Co-authored-by: Alejandro Fernández Haro * review @afjaro * typo * KBN_LOAD_MARKS Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Alejandro Fernández Haro --- src/core/public/core_system.test.ts | 27 ++++++- src/core/public/core_system.ts | 74 ++++++++++++++++++- src/core/public/kbn_bootstrap.test.ts | 1 + src/core/public/kbn_bootstrap.ts | 5 ++ src/core/public/public.api.md | 2 +- src/core/public/utils/consts.ts | 10 +++ src/core/public/utils/index.ts | 1 + .../render_template.test.ts.snap | 4 + .../rendering/bootstrap/render_template.ts | 4 + .../from_the_browser/loaded_kibana.ts | 15 ++++ 10 files changed, 136 insertions(+), 7 deletions(-) create mode 100644 src/core/public/utils/consts.ts diff --git a/src/core/public/core_system.test.ts b/src/core/public/core_system.test.ts index 2a57364c9f93f..76f972d174ce8 100644 --- a/src/core/public/core_system.test.ts +++ b/src/core/public/core_system.test.ts @@ -70,6 +70,19 @@ const defaultCoreSystemParams = { beforeEach(() => { jest.clearAllMocks(); MockPluginsService.getOpaqueIds.mockReturnValue(new Map()); + + window.performance.mark = jest.fn(); + window.performance.clearMarks = jest.fn(); + window.performance.getEntriesByName = jest.fn().mockReturnValue([ + { + detail: 'load_started', + startTime: 456, + }, + { + detail: 'bootstrap_started', + startTime: 123, + }, + ]); }); function createCoreSystem(params = {}) { @@ -221,7 +234,9 @@ describe('#start()', () => { }); await core.setup(); - await core.start(); + + const services = await core.start(); + await services?.application.navigateToApp('home'); } it('clears the children of the rootDomElement and appends container for rendering service with #kibana-body, notifications, overlays', async () => { @@ -233,16 +248,22 @@ describe('#start()', () => { ); }); - it('reports the event Loaded Kibana', async () => { + it('reports the event Loaded Kibana and clears marks', async () => { await startCore(); expect(analyticsServiceStartMock.reportEvent).toHaveBeenCalledTimes(1); expect(analyticsServiceStartMock.reportEvent).toHaveBeenCalledWith('Loaded Kibana', { kibana_version: '1.2.3', + load_started: 456, + bootstrap_started: 123, }); + + expect(window.performance.clearMarks).toHaveBeenCalledTimes(1); }); it('reports the event Loaded Kibana (with memory)', async () => { fetchOptionalMemoryInfoMock.mockReturnValue({ + load_started: 456, + bootstrap_started: 123, memory_js_heap_size_limit: 3, memory_js_heap_size_total: 2, memory_js_heap_size_used: 1, @@ -251,6 +272,8 @@ describe('#start()', () => { await startCore(); expect(analyticsServiceStartMock.reportEvent).toHaveBeenCalledTimes(1); expect(analyticsServiceStartMock.reportEvent).toHaveBeenCalledWith('Loaded Kibana', { + load_started: 456, + bootstrap_started: 123, kibana_version: '1.2.3', memory_js_heap_size_limit: 3, memory_js_heap_size_total: 2, diff --git a/src/core/public/core_system.ts b/src/core/public/core_system.ts index 5402e1cd58504..bdf94d953b659 100644 --- a/src/core/public/core_system.ts +++ b/src/core/public/core_system.ts @@ -15,7 +15,7 @@ import { } from '@kbn/core-injected-metadata-browser-internal'; import { DocLinksService } from '@kbn/core-doc-links-browser-internal'; import { ThemeService } from '@kbn/core-theme-browser-internal'; -import type { AnalyticsServiceSetup } from '@kbn/core-analytics-browser'; +import type { AnalyticsServiceSetup, AnalyticsServiceStart } from '@kbn/core-analytics-browser'; import { AnalyticsService } from '@kbn/core-analytics-browser-internal'; import { I18nService } from '@kbn/core-i18n-browser-internal'; import { CoreSetup, CoreStart } from '.'; @@ -35,6 +35,7 @@ import { CoreApp } from './core_app'; import type { InternalApplicationSetup, InternalApplicationStart } from './application/types'; import { ExecutionContextService } from './execution_context'; import { fetchOptionalMemoryInfo } from './fetch_optional_memory_info'; +import { KBN_LOAD_MARKS } from './utils'; interface Params { rootDomElement: HTMLElement; @@ -124,6 +125,30 @@ export class CoreSystem { this.plugins = new PluginsService(this.coreContext, injectedMetadata.uiPlugins); this.coreApp = new CoreApp(this.coreContext); + + performance.mark(KBN_LOAD_MARKS, { + detail: 'core_created', + }); + } + + private getLoadMarksInfo() { + if (!performance) return []; + const reportData: Record = {}; + const marks = performance.getEntriesByName(KBN_LOAD_MARKS); + for (const mark of marks) { + reportData[(mark as PerformanceMark).detail] = mark.startTime; + } + + return reportData; + } + + private reportKibanaLoadedEvent(analytics: AnalyticsServiceStart) { + analytics.reportEvent('Loaded Kibana', { + kibana_version: this.coreContext.env.packageInfo.version, + ...fetchOptionalMemoryInfo(), + ...this.getLoadMarksInfo(), + }); + performance.clearMarks(KBN_LOAD_MARKS); } public async setup() { @@ -171,6 +196,10 @@ export class CoreSystem { // Services that do not expose contracts at setup await this.plugins.setup(core); + performance.mark(KBN_LOAD_MARKS, { + detail: 'setup_done', + }); + return { fatalErrors: this.fatalErrorsSetup }; } catch (error) { if (this.fatalErrorsSetup) { @@ -267,9 +296,19 @@ export class CoreSystem { targetDomElement: coreUiTargetDomElement, }); - analytics.reportEvent('Loaded Kibana', { - kibana_version: this.coreContext.env.packageInfo.version, - ...fetchOptionalMemoryInfo(), + performance.mark(KBN_LOAD_MARKS, { + detail: 'start_done', + }); + + // Wait for the first app navigation to report Kibana Loaded + const appSub = application.currentAppId$.subscribe((appId) => { + if (appId === undefined) return; + + performance.mark(KBN_LOAD_MARKS, { + detail: 'first_app_nav', + }); + this.reportKibanaLoadedEvent(analytics); + appSub.unsubscribe(); }); return { @@ -323,6 +362,33 @@ export class CoreSystem { type: 'long', _meta: { description: 'The used size of the heap', optional: true }, }, + load_started: { + type: 'long', + _meta: { description: 'When the render template starts loading assets', optional: true }, + }, + bootstrap_started: { + type: 'long', + _meta: { description: 'When kbnBootstrap callback is called', optional: true }, + }, + core_created: { + type: 'long', + _meta: { description: 'When core system is created', optional: true }, + }, + setup_done: { + type: 'long', + _meta: { description: 'When core system setup is complete', optional: true }, + }, + start_done: { + type: 'long', + _meta: { description: 'When core system start is complete', optional: true }, + }, + first_app_nav: { + type: 'long', + _meta: { + description: 'When the application emits the first app navigation', + optional: true, + }, + }, }, }); } diff --git a/src/core/public/kbn_bootstrap.test.ts b/src/core/public/kbn_bootstrap.test.ts index 03096daf09c39..f32bb21cd041a 100644 --- a/src/core/public/kbn_bootstrap.test.ts +++ b/src/core/public/kbn_bootstrap.test.ts @@ -22,6 +22,7 @@ describe('kbn_bootstrap', () => { beforeEach(() => { jest.clearAllMocks(); + window.performance.mark = jest.fn(); }); it('does not report a fatal error if apm load fails', async () => { diff --git a/src/core/public/kbn_bootstrap.ts b/src/core/public/kbn_bootstrap.ts index 38e95188f4c06..79283daaf9a3a 100644 --- a/src/core/public/kbn_bootstrap.ts +++ b/src/core/public/kbn_bootstrap.ts @@ -9,9 +9,14 @@ import { i18n } from '@kbn/i18n'; import { CoreSystem } from './core_system'; import { ApmSystem } from './apm_system'; +import { KBN_LOAD_MARKS } from './utils'; /** @internal */ export async function __kbnBootstrap__() { + performance.mark(KBN_LOAD_MARKS, { + detail: 'bootstrap_started', + }); + const injectedMetadata = JSON.parse( document.querySelector('kbn-injected-metadata')!.getAttribute('data')! ); diff --git a/src/core/public/public.api.md b/src/core/public/public.api.md index 279d97d571262..d0a3bc2ad19cf 100644 --- a/src/core/public/public.api.md +++ b/src/core/public/public.api.md @@ -1554,6 +1554,6 @@ export interface UserProvidedValues { // Warnings were encountered during analysis: // -// src/core/public/core_system.ts:186:21 - (ae-forgotten-export) The symbol "InternalApplicationStart" needs to be exported by the entry point index.d.ts +// src/core/public/core_system.ts:202:21 - (ae-forgotten-export) The symbol "InternalApplicationStart" needs to be exported by the entry point index.d.ts ``` diff --git a/src/core/public/utils/consts.ts b/src/core/public/utils/consts.ts new file mode 100644 index 0000000000000..8372eafec8147 --- /dev/null +++ b/src/core/public/utils/consts.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** @internal */ +export const KBN_LOAD_MARKS = 'kbnLoad'; diff --git a/src/core/public/utils/index.ts b/src/core/public/utils/index.ts index d28a8dcc37501..4fb9c50f715c6 100644 --- a/src/core/public/utils/index.ts +++ b/src/core/public/utils/index.ts @@ -9,3 +9,4 @@ export { Sha256 } from './crypto'; export { MountWrapper, mountReactNode } from './mount'; export { CoreContextProvider } from './core_context_provider'; +export { KBN_LOAD_MARKS } from './consts'; diff --git a/src/core/server/rendering/bootstrap/__snapshots__/render_template.test.ts.snap b/src/core/server/rendering/bootstrap/__snapshots__/render_template.test.ts.snap index 83aacda2b599a..f7e28eebd1a61 100644 --- a/src/core/server/rendering/bootstrap/__snapshots__/render_template.test.ts.snap +++ b/src/core/server/rendering/bootstrap/__snapshots__/render_template.test.ts.snap @@ -104,6 +104,10 @@ if (window.__kbnStrictCsp__ && window.__kbnCspNotEnforced__) { }); } + performance.mark('kbnLoad', { + detail: 'load_started', + }) + load([ '/js-1','/js-2' ], function () { diff --git a/src/core/server/rendering/bootstrap/render_template.ts b/src/core/server/rendering/bootstrap/render_template.ts index 14127017b1c0f..996aacd5e3ede 100644 --- a/src/core/server/rendering/bootstrap/render_template.ts +++ b/src/core/server/rendering/bootstrap/render_template.ts @@ -120,6 +120,10 @@ if (window.__kbnStrictCsp__ && window.__kbnCspNotEnforced__) { }); } + performance.mark('kbnLoad', { + detail: 'load_started', + }) + load([ ${jsDependencyPaths.map((path) => `'${path}'`).join(',')} ], function () { diff --git a/test/analytics/tests/instrumented_events/from_the_browser/loaded_kibana.ts b/test/analytics/tests/instrumented_events/from_the_browser/loaded_kibana.ts index 53493b99ad1ad..9b7310529eed3 100644 --- a/test/analytics/tests/instrumented_events/from_the_browser/loaded_kibana.ts +++ b/test/analytics/tests/instrumented_events/from_the_browser/loaded_kibana.ts @@ -25,7 +25,22 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(event.properties).to.have.property('kibana_version'); expect(event.properties.kibana_version).to.be.a('string'); + // Kibana Loaded timings + expect(event.properties).to.have.property('load_started'); + expect(event.properties.load_started).to.be.a('number'); + expect(event.properties).to.have.property('bootstrap_started'); + expect(event.properties.bootstrap_started).to.be.a('number'); + expect(event.properties).to.have.property('core_created'); + expect(event.properties.core_created).to.be.a('number'); + expect(event.properties).to.have.property('setup_done'); + expect(event.properties.setup_done).to.be.a('number'); + expect(event.properties).to.have.property('start_done'); + expect(event.properties.start_done).to.be.a('number'); + expect(event.properties).to.have.property('first_app_nav'); + expect(event.properties.start_done).to.be.a('number'); + if (browser.isChromium) { + // Kibana Loaded memory expect(event.properties).to.have.property('memory_js_heap_size_limit'); expect(event.properties.memory_js_heap_size_limit).to.be.a('number'); expect(event.properties).to.have.property('memory_js_heap_size_total'); From db728b12a3ae8ea7e2e9a2d12dedbddf63e87e67 Mon Sep 17 00:00:00 2001 From: Mat Schaffer Date: Thu, 23 Jun 2022 18:47:25 +0900 Subject: [PATCH 56/61] Ensure monitoring indices get cleaned during tests (#134978) --- .../monitoring/elasticsearch_settings/set_collection_enabled.js | 2 +- .../test/functional/apps/monitoring/enable_monitoring/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/test/api_integration/apis/monitoring/elasticsearch_settings/set_collection_enabled.js b/x-pack/test/api_integration/apis/monitoring/elasticsearch_settings/set_collection_enabled.js index ea94031c782c3..54c3eaa7f9049 100644 --- a/x-pack/test/api_integration/apis/monitoring/elasticsearch_settings/set_collection_enabled.js +++ b/x-pack/test/api_integration/apis/monitoring/elasticsearch_settings/set_collection_enabled.js @@ -28,7 +28,7 @@ export default function ({ getService }) { }; await esSupertest.put('/_cluster/settings').send(disableCollection).expect(200); - await esDeleteAllIndices('/.monitoring-*'); + await esDeleteAllIndices('.monitoring-*'); }); it('should set collection.enabled to true', async () => { diff --git a/x-pack/test/functional/apps/monitoring/enable_monitoring/index.js b/x-pack/test/functional/apps/monitoring/enable_monitoring/index.js index cce6401453d21..c60ef8617f16d 100644 --- a/x-pack/test/functional/apps/monitoring/enable_monitoring/index.js +++ b/x-pack/test/functional/apps/monitoring/enable_monitoring/index.js @@ -40,7 +40,7 @@ export default function ({ getService, getPageObjects }) { }; await esSupertest.put('/_cluster/settings').send(disableCollection).expect(200); - await esDeleteAllIndices('/.monitoring-*'); + await esDeleteAllIndices('.monitoring-*'); }); it('Monitoring enabled', async function () { From 88c25a9373a6c853eb0e91ef3163ef9304526d9f Mon Sep 17 00:00:00 2001 From: Dmitry Tomashevich <39378793+dimaanj@users.noreply.github.com> Date: Thu, 23 Jun 2022 12:54:28 +0300 Subject: [PATCH 57/61] [Discover] Cleanup uses of legacy table in functional tests (#134638) * [Discover] extract doc table tests into a new folder * [Discover] switch to data grid * [Discover] apply suggestions * [Discover] adapt scripted fields tests for data grid * [Discover] apply suggestions * [Discover] apply for another part --- .../apps/context/_context_navigation.ts | 1 - test/functional/apps/context/_date_nanos.ts | 1 - .../context/_date_nanos_custom_timestamp.ts | 1 - .../apps/context/_discover_navigation.ts | 1 - test/functional/apps/context/_filters.ts | 9 - test/functional/apps/context/_size.ts | 1 - .../discover/_context_encoded_url_params.ts | 2 +- test/functional/apps/discover/_data_grid.ts | 6 +- .../apps/discover/_data_grid_context.ts | 2 +- .../discover/_data_grid_copy_to_clipboard.ts | 1 - .../discover/_data_grid_doc_navigation.ts | 2 +- .../apps/discover/_data_grid_doc_table.ts | 1 - .../apps/discover/_data_grid_field_data.ts | 2 +- .../apps/discover/_data_grid_pagination.ts | 2 +- .../apps/discover/_discover_fields_api.ts | 6 +- test/functional/apps/discover/_field_data.ts | 34 -- .../discover/_field_data_with_fields_api.ts | 29 -- .../_classic_table_doc_navigation.ts | 2 +- .../discover/classic/_discover_fields_api.ts | 91 ++++ .../apps/discover/{ => classic}/_doc_table.ts | 6 +- .../{ => classic}/_doc_table_newline.ts | 7 +- .../apps/discover/classic/_field_data.ts | 62 +++ .../classic/_field_data_with_fields_api.ts | 46 ++ test/functional/apps/discover/index.ts | 9 +- .../apps/management/_scripted_fields.ts | 77 ++- .../_scripted_fields_classic_table.ts | 459 ++++++++++++++++++ test/functional/apps/management/index.ts | 1 + .../apps/discover/value_suggestions.ts | 10 +- .../value_suggestions_non_timebased.ts | 2 +- 29 files changed, 742 insertions(+), 131 deletions(-) rename test/functional/apps/discover/{ => classic}/_classic_table_doc_navigation.ts (97%) create mode 100644 test/functional/apps/discover/classic/_discover_fields_api.ts rename test/functional/apps/discover/{ => classic}/_doc_table.ts (98%) rename test/functional/apps/discover/{ => classic}/_doc_table_newline.ts (92%) create mode 100644 test/functional/apps/discover/classic/_field_data.ts create mode 100644 test/functional/apps/discover/classic/_field_data_with_fields_api.ts create mode 100644 test/functional/apps/management/_scripted_fields_classic_table.ts diff --git a/test/functional/apps/context/_context_navigation.ts b/test/functional/apps/context/_context_navigation.ts index 15de70882086e..1bda70cc558ee 100644 --- a/test/functional/apps/context/_context_navigation.ts +++ b/test/functional/apps/context/_context_navigation.ts @@ -30,7 +30,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { before(async () => { await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); await kibanaServer.uiSettings.update({ - 'doc_table:legacy': false, defaultIndex: 'logstash-*', }); await PageObjects.common.navigateToApp('discover'); diff --git a/test/functional/apps/context/_date_nanos.ts b/test/functional/apps/context/_date_nanos.ts index 969a7dcecd5c3..b486dd77ecef8 100644 --- a/test/functional/apps/context/_date_nanos.ts +++ b/test/functional/apps/context/_date_nanos.ts @@ -30,7 +30,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await kibanaServer.uiSettings.update({ 'context:defaultSize': `${TEST_DEFAULT_CONTEXT_SIZE}`, 'context:step': `${TEST_STEP_SIZE}`, - 'doc_table:legacy': false, }); }); diff --git a/test/functional/apps/context/_date_nanos_custom_timestamp.ts b/test/functional/apps/context/_date_nanos_custom_timestamp.ts index b8af57e40a3e3..b91aafa89dabf 100644 --- a/test/functional/apps/context/_date_nanos_custom_timestamp.ts +++ b/test/functional/apps/context/_date_nanos_custom_timestamp.ts @@ -32,7 +32,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await kibanaServer.uiSettings.update({ 'context:defaultSize': `${TEST_DEFAULT_CONTEXT_SIZE}`, 'context:step': `${TEST_STEP_SIZE}`, - 'doc_table:legacy': false, }); }); diff --git a/test/functional/apps/context/_discover_navigation.ts b/test/functional/apps/context/_discover_navigation.ts index 5add260d8f4d0..46f03b512bff3 100644 --- a/test/functional/apps/context/_discover_navigation.ts +++ b/test/functional/apps/context/_discover_navigation.ts @@ -37,7 +37,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { before(async () => { await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); await kibanaServer.uiSettings.update({ - 'doc_table:legacy': false, defaultIndex: 'logstash-*', }); await PageObjects.common.navigateToApp('discover'); diff --git a/test/functional/apps/context/_filters.ts b/test/functional/apps/context/_filters.ts index fe5b27f2f8055..e8a8675e85f82 100644 --- a/test/functional/apps/context/_filters.ts +++ b/test/functional/apps/context/_filters.ts @@ -19,19 +19,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const filterBar = getService('filterBar'); const testSubjects = getService('testSubjects'); const retry = getService('retry'); - const kibanaServer = getService('kibanaServer'); const PageObjects = getPageObjects(['common', 'context']); describe('context filters', function contextSize() { - before(async function () { - await kibanaServer.uiSettings.update({ 'doc_table:legacy': false }); - }); - - after(async function () { - await kibanaServer.uiSettings.replace({}); - }); - beforeEach(async function () { await PageObjects.context.navigateTo(TEST_INDEX_PATTERN, TEST_ANCHOR_ID, { columns: TEST_COLUMN_NAMES, diff --git a/test/functional/apps/context/_size.ts b/test/functional/apps/context/_size.ts index 563af7e07857e..853d4ebde79de 100644 --- a/test/functional/apps/context/_size.ts +++ b/test/functional/apps/context/_size.ts @@ -29,7 +29,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await kibanaServer.uiSettings.update({ 'context:defaultSize': `${TEST_DEFAULT_CONTEXT_SIZE}`, 'context:step': `${TEST_STEP_SIZE}`, - 'doc_table:legacy': false, }); await PageObjects.context.navigateTo(TEST_INDEX_PATTERN, TEST_ANCHOR_ID); }); diff --git a/test/functional/apps/discover/_context_encoded_url_params.ts b/test/functional/apps/discover/_context_encoded_url_params.ts index 293a1ee0b5e28..cff83b2d6f645 100644 --- a/test/functional/apps/discover/_context_encoded_url_params.ts +++ b/test/functional/apps/discover/_context_encoded_url_params.ts @@ -41,7 +41,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.common.navigateToApp('discover'); }); - it('should navigate correctly when ', async () => { + it('should navigate correctly', async () => { await PageObjects.discover.selectIndexPattern('context-encoded-param'); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.discover.waitForDocTableLoadingComplete(); diff --git a/test/functional/apps/discover/_data_grid.ts b/test/functional/apps/discover/_data_grid.ts index 198691f3b8477..96085f09186f6 100644 --- a/test/functional/apps/discover/_data_grid.ts +++ b/test/functional/apps/discover/_data_grid.ts @@ -19,7 +19,7 @@ export default function ({ const esArchiver = getService('esArchiver'); const PageObjects = getPageObjects(['common', 'discover', 'timePicker']); const kibanaServer = getService('kibanaServer'); - const defaultSettings = { defaultIndex: 'logstash-*', 'doc_table:legacy': false }; + const defaultSettings = { defaultIndex: 'logstash-*' }; const testSubjects = getService('testSubjects'); before(async function () { @@ -31,10 +31,6 @@ export default function ({ await PageObjects.timePicker.setDefaultAbsoluteRange(); }); - after(async function () { - await kibanaServer.uiSettings.replace({ 'doc_table:legacy': true }); - }); - it('can add fields to the table', async function () { const getTitles = async () => (await testSubjects.getVisibleText('dataGridHeader')).replace(/\s|\r?\n|\r/g, ' '); diff --git a/test/functional/apps/discover/_data_grid_context.ts b/test/functional/apps/discover/_data_grid_context.ts index d12ada2070cff..c2628026dfdda 100644 --- a/test/functional/apps/discover/_data_grid_context.ts +++ b/test/functional/apps/discover/_data_grid_context.ts @@ -27,7 +27,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'dashboard', 'header', ]); - const defaultSettings = { defaultIndex: 'logstash-*', 'doc_table:legacy': false }; + const defaultSettings = { defaultIndex: 'logstash-*' }; const kibanaServer = getService('kibanaServer'); const esArchiver = getService('esArchiver'); const dashboardAddPanel = getService('dashboardAddPanel'); diff --git a/test/functional/apps/discover/_data_grid_copy_to_clipboard.ts b/test/functional/apps/discover/_data_grid_copy_to_clipboard.ts index f202595729cfb..ec359e3c569db 100644 --- a/test/functional/apps/discover/_data_grid_copy_to_clipboard.ts +++ b/test/functional/apps/discover/_data_grid_copy_to_clipboard.ts @@ -19,7 +19,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker', 'dashboard']); const defaultSettings = { defaultIndex: 'logstash-*', - 'doc_table:legacy': false, }; describe('discover data grid supports copy to clipboard', function describeIndexTests() { diff --git a/test/functional/apps/discover/_data_grid_doc_navigation.ts b/test/functional/apps/discover/_data_grid_doc_navigation.ts index 2da6db97aa13f..3c5c8b3967cb0 100644 --- a/test/functional/apps/discover/_data_grid_doc_navigation.ts +++ b/test/functional/apps/discover/_data_grid_doc_navigation.ts @@ -17,7 +17,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const retry = getService('retry'); const kibanaServer = getService('kibanaServer'); - const defaultSettings = { defaultIndex: 'logstash-*', 'doc_table:legacy': false }; + const defaultSettings = { defaultIndex: 'logstash-*' }; describe('discover data grid doc link', function () { before(async () => { diff --git a/test/functional/apps/discover/_data_grid_doc_table.ts b/test/functional/apps/discover/_data_grid_doc_table.ts index bb0cd56298c20..6918edc8285d8 100644 --- a/test/functional/apps/discover/_data_grid_doc_table.ts +++ b/test/functional/apps/discover/_data_grid_doc_table.ts @@ -21,7 +21,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker', 'dashboard']); const defaultSettings = { defaultIndex: 'logstash-*', - 'doc_table:legacy': false, }; const testSubjects = getService('testSubjects'); diff --git a/test/functional/apps/discover/_data_grid_field_data.ts b/test/functional/apps/discover/_data_grid_field_data.ts index 4a4e06e28c321..84d1c81f8ee68 100644 --- a/test/functional/apps/discover/_data_grid_field_data.ts +++ b/test/functional/apps/discover/_data_grid_field_data.ts @@ -16,7 +16,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const toasts = getService('toasts'); const queryBar = getService('queryBar'); const PageObjects = getPageObjects(['common', 'header', 'discover', 'visualize', 'timePicker']); - const defaultSettings = { defaultIndex: 'logstash-*', 'doc_table:legacy': false }; + const defaultSettings = { defaultIndex: 'logstash-*' }; const dataGrid = getService('dataGrid'); describe('discover data grid field data tests', function describeIndexTests() { diff --git a/test/functional/apps/discover/_data_grid_pagination.ts b/test/functional/apps/discover/_data_grid_pagination.ts index da9faa24bb151..7b0fc40e94ab8 100644 --- a/test/functional/apps/discover/_data_grid_pagination.ts +++ b/test/functional/apps/discover/_data_grid_pagination.ts @@ -14,7 +14,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); const dataGrid = getService('dataGrid'); const PageObjects = getPageObjects(['settings', 'common', 'discover', 'header', 'timePicker']); - const defaultSettings = { defaultIndex: 'logstash-*', 'doc_table:legacy': false }; + const defaultSettings = { defaultIndex: 'logstash-*' }; const testSubjects = getService('testSubjects'); const retry = getService('retry'); diff --git a/test/functional/apps/discover/_discover_fields_api.ts b/test/functional/apps/discover/_discover_fields_api.ts index fb3ee3b9858d3..e64280c1977b5 100644 --- a/test/functional/apps/discover/_discover_fields_api.ts +++ b/test/functional/apps/discover/_discover_fields_api.ts @@ -14,11 +14,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); + const dataGrid = getService('dataGrid'); const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker', 'settings']); const defaultSettings = { defaultIndex: 'logstash-*', 'discover:searchFieldsFromSource': false, - 'doc_table:legacy': true, }; describe('discover uses fields API test', function describeIndexTests() { before(async function () { @@ -60,7 +60,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('displays _source viewer in doc viewer', async function () { - await PageObjects.discover.clickDocTableRowToggle(0); + await dataGrid.clickRowToggle(); await PageObjects.discover.isShowingDocViewer(); await PageObjects.discover.clickDocViewerTab(1); await PageObjects.discover.expectSourceViewerToExist(); @@ -74,7 +74,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.common.navigateToApp('discover'); await PageObjects.timePicker.setDefaultAbsoluteRange(); - expect(await PageObjects.discover.getDocHeader()).to.have.string('_source'); + expect(await PageObjects.discover.getDocHeader()).to.have.string('Document'); }); it('switches to Document column when fields API is used', async function () { diff --git a/test/functional/apps/discover/_field_data.ts b/test/functional/apps/discover/_field_data.ts index d13baf9948171..27b786a2abfc1 100644 --- a/test/functional/apps/discover/_field_data.ts +++ b/test/functional/apps/discover/_field_data.ts @@ -18,8 +18,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const queryBar = getService('queryBar'); const browser = getService('browser'); const PageObjects = getPageObjects(['common', 'header', 'discover', 'visualize', 'timePicker']); - const find = getService('find'); - const testSubjects = getService('testSubjects'); describe('discover tab', function describeIndexTests() { this.tags('includeFirefox'); @@ -97,38 +95,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const marks = await PageObjects.discover.getMarks(); expect(marks.length).to.be(0); }); - - describe('legacy table tests', async function () { - before(async function () { - await kibanaServer.uiSettings.update({ 'doc_table:legacy': true }); - await PageObjects.common.navigateToApp('discover'); - }); - - after(async function () { - await kibanaServer.uiSettings.replace({}); - }); - it('doc view should show @timestamp and _source columns', async function () { - const expectedHeader = '@timestamp\n_source'; - const docHeader = await find.byCssSelector('thead > tr:nth-child(1)'); - const docHeaderText = await docHeader.getVisibleText(); - expect(docHeaderText).to.be(expectedHeader); - }); - - it('doc view should sort ascending', async function () { - const expectedTimeStamp = 'Sep 20, 2015 @ 00:00:00.000'; - await testSubjects.click('docTableHeaderFieldSort_@timestamp'); - - // we don't technically need this sleep here because the tryForTime will retry and the - // results will match on the 2nd or 3rd attempt, but that debug output is huge in this - // case and it can be avoided with just a few seconds sleep. - await PageObjects.common.sleep(2000); - await retry.try(async function tryingForTime() { - const row = await find.byCssSelector(`tr.kbnDocTable__row:nth-child(1)`); - const rowData = await row.getVisibleText(); - expect(rowData.startsWith(expectedTimeStamp)).to.be.ok(); - }); - }); - }); }); }); } diff --git a/test/functional/apps/discover/_field_data_with_fields_api.ts b/test/functional/apps/discover/_field_data_with_fields_api.ts index d7912d6d0959f..85bb26df24129 100644 --- a/test/functional/apps/discover/_field_data_with_fields_api.ts +++ b/test/functional/apps/discover/_field_data_with_fields_api.ts @@ -18,8 +18,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const queryBar = getService('queryBar'); const browser = getService('browser'); const PageObjects = getPageObjects(['common', 'header', 'discover', 'visualize', 'timePicker']); - const find = getService('find'); - const testSubjects = getService('testSubjects'); describe('discover tab with new fields API', function describeIndexTests() { this.tags('includeFirefox'); @@ -104,33 +102,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(marks.length).to.be.above(0); expect(marks).to.contain('election'); }); - - describe('legacy table tests', async function () { - before(async function () { - await kibanaServer.uiSettings.update({ 'doc_table:legacy': true }); - await PageObjects.common.navigateToApp('discover'); - }); - - after(async function () { - await kibanaServer.uiSettings.replace({}); - }); - - it('doc view should sort ascending', async function () { - const expectedTimeStamp = 'Sep 20, 2015 @ 00:00:00.000'; - await testSubjects.click('docTableHeaderFieldSort_@timestamp'); - - // we don't technically need this sleep here because the tryForTime will retry and the - // results will match on the 2nd or 3rd attempt, but that debug output is huge in this - // case and it can be avoided with just a few seconds sleep. - await PageObjects.common.sleep(2000); - await retry.try(async function tryingForTime() { - const row = await find.byCssSelector(`tr.kbnDocTable__row:nth-child(1)`); - const rowData = await row.getVisibleText(); - - expect(rowData.startsWith(expectedTimeStamp)).to.be.ok(); - }); - }); - }); }); }); } diff --git a/test/functional/apps/discover/_classic_table_doc_navigation.ts b/test/functional/apps/discover/classic/_classic_table_doc_navigation.ts similarity index 97% rename from test/functional/apps/discover/_classic_table_doc_navigation.ts rename to test/functional/apps/discover/classic/_classic_table_doc_navigation.ts index c768d9600c189..a27d3df81d32f 100644 --- a/test/functional/apps/discover/_classic_table_doc_navigation.ts +++ b/test/functional/apps/discover/classic/_classic_table_doc_navigation.ts @@ -8,7 +8,7 @@ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const docTable = getService('docTable'); diff --git a/test/functional/apps/discover/classic/_discover_fields_api.ts b/test/functional/apps/discover/classic/_discover_fields_api.ts new file mode 100644 index 0000000000000..7108cc2911be8 --- /dev/null +++ b/test/functional/apps/discover/classic/_discover_fields_api.ts @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const log = getService('log'); + const retry = getService('retry'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker', 'settings']); + const defaultSettings = { + defaultIndex: 'logstash-*', + 'discover:searchFieldsFromSource': false, + 'doc_table:legacy': true, + }; + describe('discover uses fields API test', function describeIndexTests() { + before(async function () { + log.debug('load kibana index with default index pattern'); + await kibanaServer.savedObjects.clean({ types: ['search', 'index-pattern'] }); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover.json'); + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.uiSettings.replace(defaultSettings); + await PageObjects.common.navigateToApp('discover'); + await PageObjects.timePicker.setDefaultAbsoluteRange(); + }); + + after(async () => { + await kibanaServer.uiSettings.replace({}); + }); + + it('should correctly display documents', async function () { + log.debug('check if Document title exists in the grid'); + expect(await PageObjects.discover.getDocHeader()).to.have.string('Document'); + const rowData = await PageObjects.discover.getDocTableIndex(1); + log.debug('check the newest doc timestamp in UTC (check diff timezone in last test)'); + expect(rowData.startsWith('Sep 22, 2015 @ 23:50:13.253')).to.be.ok(); + const expectedHitCount = '14,004'; + await retry.try(async function () { + expect(await PageObjects.discover.getHitCount()).to.be(expectedHitCount); + }); + }); + + it('adding a column removes a default column', async function () { + await PageObjects.discover.clickFieldListItemAdd('_score'); + expect(await PageObjects.discover.getDocHeader()).to.have.string('_score'); + expect(await PageObjects.discover.getDocHeader()).not.to.have.string('Document'); + }); + + it('removing a column adds a default column', async function () { + await PageObjects.discover.clickFieldListItemRemove('_score'); + expect(await PageObjects.discover.getDocHeader()).not.to.have.string('_score'); + expect(await PageObjects.discover.getDocHeader()).to.have.string('Document'); + }); + + it('displays _source viewer in doc viewer', async function () { + await PageObjects.discover.clickDocTableRowToggle(0); + await PageObjects.discover.isShowingDocViewer(); + await PageObjects.discover.clickDocViewerTab(1); + await PageObjects.discover.expectSourceViewerToExist(); + }); + + it('switches to _source column when fields API is no longer used', async function () { + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickKibanaSettings(); + await PageObjects.settings.toggleAdvancedSettingCheckbox('discover:searchFieldsFromSource'); + + await PageObjects.common.navigateToApp('discover'); + await PageObjects.timePicker.setDefaultAbsoluteRange(); + + expect(await PageObjects.discover.getDocHeader()).to.have.string('_source'); + }); + + it('switches to Document column when fields API is used', async function () { + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickKibanaSettings(); + await PageObjects.settings.toggleAdvancedSettingCheckbox('discover:searchFieldsFromSource'); + + await PageObjects.common.navigateToApp('discover'); + await PageObjects.timePicker.setDefaultAbsoluteRange(); + + expect(await PageObjects.discover.getDocHeader()).to.have.string('Document'); + }); + }); +} diff --git a/test/functional/apps/discover/_doc_table.ts b/test/functional/apps/discover/classic/_doc_table.ts similarity index 98% rename from test/functional/apps/discover/_doc_table.ts rename to test/functional/apps/discover/classic/_doc_table.ts index 321c41b92e9be..bfc813f2d822e 100644 --- a/test/functional/apps/discover/_doc_table.ts +++ b/test/functional/apps/discover/classic/_doc_table.ts @@ -7,7 +7,7 @@ */ import expect from '@kbn/expect'; -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const browser = getService('browser'); @@ -40,6 +40,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.common.navigateToApp('discover'); }); + after(async function () { + await kibanaServer.uiSettings.replace({}); + }); + it('should show records by default', async function () { // with the default range the number of hits is ~14000 const rows = await PageObjects.discover.getDocTableRows(); diff --git a/test/functional/apps/discover/_doc_table_newline.ts b/test/functional/apps/discover/classic/_doc_table_newline.ts similarity index 92% rename from test/functional/apps/discover/_doc_table_newline.ts rename to test/functional/apps/discover/classic/_doc_table_newline.ts index a02d31d5c76f4..112fff800cd41 100644 --- a/test/functional/apps/discover/_doc_table_newline.ts +++ b/test/functional/apps/discover/classic/_doc_table_newline.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { FtrProviderContext } from '../../ftr_provider_context'; +import { FtrProviderContext } from '../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); @@ -35,8 +35,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await security.testUser.restoreDefaults(); await esArchiver.unload('test/functional/fixtures/es_archiver/message_with_newline'); await kibanaServer.savedObjects.cleanStandardList(); - await kibanaServer.uiSettings.unset('defaultIndex'); - await kibanaServer.uiSettings.unset('doc_table:legacy'); + await kibanaServer.uiSettings.replace({}); }); it('should break text on newlines', async function () { @@ -47,6 +46,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const heightWithoutNewline = await dscTableRows[0].getAttribute('clientHeight'); const heightWithNewline = await dscTableRows[1].getAttribute('clientHeight'); log.debug(`Without newlines: ${heightWithoutNewline}, With newlines: ${heightWithNewline}`); + + await PageObjects.common.sleep(10000); return Number(heightWithNewline) > Number(heightWithoutNewline); }); }); diff --git a/test/functional/apps/discover/classic/_field_data.ts b/test/functional/apps/discover/classic/_field_data.ts new file mode 100644 index 0000000000000..f574a36dea028 --- /dev/null +++ b/test/functional/apps/discover/classic/_field_data.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import expect from '@kbn/expect'; + +import { FtrProviderContext } from '../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const retry = getService('retry'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['common', 'header', 'discover', 'visualize', 'timePicker']); + const find = getService('find'); + const testSubjects = getService('testSubjects'); + + describe('discover tab', function describeIndexTests() { + this.tags('includeFirefox'); + before(async function () { + await kibanaServer.savedObjects.clean({ types: ['search', 'index-pattern'] }); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover.json'); + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.uiSettings.replace({ + defaultIndex: 'logstash-*', + 'discover:searchFieldsFromSource': true, + 'doc_table:legacy': true, + }); + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); + await PageObjects.common.navigateToApp('discover'); + }); + + after(async function () { + await kibanaServer.uiSettings.replace({}); + }); + + it('doc view should show @timestamp and _source columns', async function () { + const expectedHeader = '@timestamp\n_source'; + const docHeader = await find.byCssSelector('thead > tr:nth-child(1)'); + const docHeaderText = await docHeader.getVisibleText(); + expect(docHeaderText).to.be(expectedHeader); + }); + + it('doc view should sort ascending', async function () { + const expectedTimeStamp = 'Sep 20, 2015 @ 00:00:00.000'; + await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + + // we don't technically need this sleep here because the tryForTime will retry and the + // results will match on the 2nd or 3rd attempt, but that debug output is huge in this + // case and it can be avoided with just a few seconds sleep. + await PageObjects.common.sleep(2000); + await retry.try(async function tryingForTime() { + const row = await find.byCssSelector(`tr.kbnDocTable__row:nth-child(1)`); + const rowData = await row.getVisibleText(); + expect(rowData.startsWith(expectedTimeStamp)).to.be.ok(); + }); + }); + }); +} diff --git a/test/functional/apps/discover/classic/_field_data_with_fields_api.ts b/test/functional/apps/discover/classic/_field_data_with_fields_api.ts new file mode 100644 index 0000000000000..efa680bfbfa3a --- /dev/null +++ b/test/functional/apps/discover/classic/_field_data_with_fields_api.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import expect from '@kbn/expect'; + +import { FtrProviderContext } from '../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const retry = getService('retry'); + const kibanaServer = getService('kibanaServer'); + const PageObjects = getPageObjects(['common', 'header', 'discover', 'visualize', 'timePicker']); + const find = getService('find'); + const testSubjects = getService('testSubjects'); + + describe('discover tab with new fields API', function describeIndexTests() { + before(async function () { + await kibanaServer.uiSettings.update({ 'doc_table:legacy': true }); + await PageObjects.common.navigateToApp('discover'); + }); + + after(async function () { + await kibanaServer.uiSettings.replace({}); + }); + + it('doc view should sort ascending', async function () { + const expectedTimeStamp = 'Sep 20, 2015 @ 00:00:00.000'; + await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + + // we don't technically need this sleep here because the tryForTime will retry and the + // results will match on the 2nd or 3rd attempt, but that debug output is huge in this + // case and it can be avoided with just a few seconds sleep. + await PageObjects.common.sleep(2000); + await retry.try(async function tryingForTime() { + const row = await find.byCssSelector(`tr.kbnDocTable__row:nth-child(1)`); + const rowData = await row.getVisibleText(); + + expect(rowData.startsWith(expectedTimeStamp)).to.be.ok(); + }); + }); + }); +} diff --git a/test/functional/apps/discover/index.ts b/test/functional/apps/discover/index.ts index db72e270fd337..cd2742abe8e13 100644 --- a/test/functional/apps/discover/index.ts +++ b/test/functional/apps/discover/index.ts @@ -30,21 +30,24 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_discover')); loadTestFile(require.resolve('./_discover_accessibility')); loadTestFile(require.resolve('./_discover_histogram')); - loadTestFile(require.resolve('./_doc_table')); - loadTestFile(require.resolve('./_doc_table_newline')); + loadTestFile(require.resolve('./classic/_doc_table')); + loadTestFile(require.resolve('./classic/_doc_table_newline')); loadTestFile(require.resolve('./_filter_editor')); loadTestFile(require.resolve('./_errors')); loadTestFile(require.resolve('./_field_data')); + loadTestFile(require.resolve('./classic/_field_data')); loadTestFile(require.resolve('./_field_data_with_fields_api')); + loadTestFile(require.resolve('./classic/_field_data_with_fields_api')); loadTestFile(require.resolve('./_shared_links')); loadTestFile(require.resolve('./_sidebar')); loadTestFile(require.resolve('./_source_filters')); loadTestFile(require.resolve('./_large_string')); loadTestFile(require.resolve('./_inspector')); - loadTestFile(require.resolve('./_classic_table_doc_navigation')); + loadTestFile(require.resolve('./classic/_classic_table_doc_navigation')); loadTestFile(require.resolve('./_date_nanos')); loadTestFile(require.resolve('./_date_nanos_mixed')); loadTestFile(require.resolve('./_indexpattern_without_timefield')); + loadTestFile(require.resolve('./classic/_discover_fields_api')); loadTestFile(require.resolve('./_discover_fields_api')); loadTestFile(require.resolve('./_data_grid')); loadTestFile(require.resolve('./_data_grid_context')); diff --git a/test/functional/apps/management/_scripted_fields.ts b/test/functional/apps/management/_scripted_fields.ts index a6bbe798cf56b..cefaa5b295369 100644 --- a/test/functional/apps/management/_scripted_fields.ts +++ b/test/functional/apps/management/_scripted_fields.ts @@ -32,6 +32,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const testSubjects = getService('testSubjects'); const filterBar = getService('filterBar'); + const find = getService('find'); + const dataGrid = getService('dataGrid'); const PageObjects = getPageObjects([ 'common', 'header', @@ -48,7 +50,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await browser.setWindowSize(1200, 800); await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); await kibanaServer.uiSettings.replace({}); - await kibanaServer.uiSettings.update({ 'doc_table:legacy': true }); }); after(async function afterAll() { @@ -56,6 +57,16 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await kibanaServer.uiSettings.replace({}); }); + /** + * @param field field name to sort + * @param optionIndex index of the option to choose in dropdown + */ + const clickSort = async (field: string, optionIndex: number) => { + await testSubjects.click(`dataGridHeaderCell-${field}`); + const optionButtons = await find.allByCssSelector('.euiListGroupItem__button'); + await optionButtons[optionIndex].click(); + }; + it('should not allow saving of invalid scripts', async function () { await PageObjects.settings.navigateTo(); await PageObjects.settings.clickKibanaIndexPatterns(); @@ -146,29 +157,37 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.header.waitUntilLoadingHasFinished(); await retry.try(async function () { - const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); - expect(rowData).to.be('Sep 18, 2015 @ 18:20:57.916\n18'); + const rowData = (await dataGrid.getRowsText())[0]; + expect(rowData).to.be('Sep 18, 2015 @ 18:20:57.91618'); }); }); // add a test to sort numeric scripted field it('should sort scripted field value in Discover', async function () { - await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName}`); + await clickSort(scriptedPainlessFieldName, 1); + await PageObjects.common.sleep(500); + // after the first click on the scripted field, it becomes secondary sort after time. // click on the timestamp twice to make it be the secondary sort key. - await testSubjects.click('docTableHeaderFieldSort_@timestamp'); - await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + await clickSort('@timestamp', 1); + await clickSort('@timestamp', 0); + await PageObjects.header.waitUntilLoadingHasFinished(); await retry.try(async function () { - const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); - expect(rowData).to.be('Sep 17, 2015 @ 10:53:14.181\n-1'); + const rowData = (await dataGrid.getRowsText())[0]; + expect(rowData).to.be('Sep 17, 2015 @ 10:53:14.181-1'); }); - await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName}`); + await clickSort(scriptedPainlessFieldName, 2); + // after the first click on the scripted field, it becomes primary sort after time. + // click on the scripted field twice then, makes it be the secondary sort key. + await clickSort(scriptedPainlessFieldName, 2); + await clickSort(scriptedPainlessFieldName, 2); + await PageObjects.header.waitUntilLoadingHasFinished(); await retry.try(async function () { - const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); - expect(rowData).to.be('Sep 17, 2015 @ 06:32:29.479\n20'); + const rowData = (await dataGrid.getRowsText())[0]; + expect(rowData).to.be('Sep 17, 2015 @ 06:32:29.47920'); }); }); @@ -233,29 +252,37 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.header.waitUntilLoadingHasFinished(); await retry.try(async function () { - const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); - expect(rowData).to.be('Sep 18, 2015 @ 18:20:57.916\ngood'); + const rowData = (await dataGrid.getRowsText())[0]; + expect(rowData).to.be('Sep 18, 2015 @ 18:20:57.916good'); }); }); // add a test to sort string scripted field it('should sort scripted field value in Discover', async function () { - await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName2}`); + await clickSort(scriptedPainlessFieldName2, 1); + // await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName2}`); + await PageObjects.common.sleep(500); + // after the first click on the scripted field, it becomes secondary sort after time. // click on the timestamp twice to make it be the secondary sort key. - await testSubjects.click('docTableHeaderFieldSort_@timestamp'); - await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + await clickSort('@timestamp', 1); + await clickSort('@timestamp', 0); await PageObjects.header.waitUntilLoadingHasFinished(); await retry.try(async function () { - const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); - expect(rowData).to.be('Sep 17, 2015 @ 09:48:40.594\nbad'); + const rowData = (await dataGrid.getRowsText())[0]; + expect(rowData).to.be('Sep 17, 2015 @ 09:48:40.594bad'); }); - await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName2}`); + await clickSort(scriptedPainlessFieldName2, 2); + // after the first click on the scripted field, it becomes primary sort after time. + // click on the scripted field twice then, makes it be the secondary sort key. + await clickSort(scriptedPainlessFieldName2, 2); + await clickSort(scriptedPainlessFieldName2, 2); + await PageObjects.header.waitUntilLoadingHasFinished(); await retry.try(async function () { - const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); - expect(rowData).to.be('Sep 17, 2015 @ 06:32:29.479\ngood'); + const rowData = (await dataGrid.getRowsText())[0]; + expect(rowData).to.be('Sep 17, 2015 @ 06:32:29.479good'); }); }); @@ -319,8 +346,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.header.waitUntilLoadingHasFinished(); await retry.try(async function () { - const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); - expect(rowData).to.be('Sep 18, 2015 @ 18:20:57.916\ntrue'); + const rowData = (await dataGrid.getRowsText())[0]; + expect(rowData).to.be('Sep 18, 2015 @ 18:20:57.916true'); }); }); @@ -406,8 +433,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.header.waitUntilLoadingHasFinished(); await retry.try(async function () { - const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); - expect(rowData).to.be('Sep 18, 2015 @ 06:52:55.953\n2015-09-18 07:00'); + const rowData = (await dataGrid.getRowsText())[0]; + expect(rowData).to.be('Sep 18, 2015 @ 06:52:55.9532015-09-18 07:00'); }); }); diff --git a/test/functional/apps/management/_scripted_fields_classic_table.ts b/test/functional/apps/management/_scripted_fields_classic_table.ts new file mode 100644 index 0000000000000..a6bbe798cf56b --- /dev/null +++ b/test/functional/apps/management/_scripted_fields_classic_table.ts @@ -0,0 +1,459 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +// Tests for 4 scripted fields; +// 1. Painless (number type) +// 2. Painless (string type) +// 3. Painless (boolean type) +// 4. Painless (date type) +// +// Each of these scripted fields has 4 tests (12 tests total); +// 1. Create scripted field +// 2. See the expected value of the scripted field in Discover doc view +// 3. Filter in Discover by the scripted field +// 4. Visualize with aggregation on the scripted field by clicking discover.clickFieldListItemVisualize + +// NOTE: Scripted field input is managed by Ace editor, which automatically +// appends closing braces, for exmaple, if you type opening square brace [ +// it will automatically insert a a closing square brace ], etc. + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const kibanaServer = getService('kibanaServer'); + const log = getService('log'); + const browser = getService('browser'); + const retry = getService('retry'); + const testSubjects = getService('testSubjects'); + const filterBar = getService('filterBar'); + const PageObjects = getPageObjects([ + 'common', + 'header', + 'settings', + 'visualize', + 'discover', + 'timePicker', + ]); + + describe('scripted fields', function () { + this.tags(['skipFirefox']); + + before(async function () { + await browser.setWindowSize(1200, 800); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); + await kibanaServer.uiSettings.replace({}); + await kibanaServer.uiSettings.update({ 'doc_table:legacy': true }); + }); + + after(async function afterAll() { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); + await kibanaServer.uiSettings.replace({}); + }); + + it('should not allow saving of invalid scripts', async function () { + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickKibanaIndexPatterns(); + await PageObjects.settings.clickIndexPatternLogstash(); + await PageObjects.settings.clickScriptedFieldsTab(); + await PageObjects.settings.clickAddScriptedField(); + await PageObjects.settings.setScriptedFieldName('doomedScriptedField'); + await PageObjects.settings.setScriptedFieldScript(`i n v a l i d s c r i p t`); + await PageObjects.settings.clickSaveScriptedField(); + await retry.try(async () => { + const invalidScriptErrorExists = await testSubjects.exists('invalidScriptError'); + expect(invalidScriptErrorExists).to.be(true); + }); + }); + + describe('testing regression for issue #33251', function describeIndexTests() { + const scriptedPainlessFieldName = 'ram_Pain_reg'; + + it('should create and edit scripted field', async function () { + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickKibanaIndexPatterns(); + await PageObjects.settings.clickIndexPatternLogstash(); + const startingCount = parseInt(await PageObjects.settings.getScriptedFieldsTabCount(), 10); + await PageObjects.settings.clickScriptedFieldsTab(); + await log.debug('add scripted field'); + const script = `1`; + await PageObjects.settings.addScriptedField( + scriptedPainlessFieldName, + 'painless', + 'number', + null, + '1', + script + ); + await retry.try(async function () { + expect(parseInt(await PageObjects.settings.getScriptedFieldsTabCount(), 10)).to.be( + startingCount + 1 + ); + }); + + for (let i = 0; i < 3; i++) { + await PageObjects.settings.editScriptedField(scriptedPainlessFieldName); + const fieldSaveButton = await testSubjects.exists('fieldSaveButton'); + expect(fieldSaveButton).to.be(true); + await PageObjects.settings.clickSaveScriptedField(); + } + }); + }); + + describe('creating and using Painless numeric scripted fields', function describeIndexTests() { + const scriptedPainlessFieldName = 'ram_Pain1'; + + it('should create scripted field', async function () { + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickKibanaIndexPatterns(); + await PageObjects.settings.clickIndexPatternLogstash(); + const startingCount = parseInt(await PageObjects.settings.getScriptedFieldsTabCount(), 10); + await PageObjects.settings.clickScriptedFieldsTab(); + await log.debug('add scripted field'); + const script = `if (doc['machine.ram'].size() == 0) return -1; + else return doc['machine.ram'].value / (1024 * 1024 * 1024); + `; + await PageObjects.settings.addScriptedField( + scriptedPainlessFieldName, + 'painless', + 'number', + null, + '100', + script + ); + await retry.try(async function () { + expect(parseInt(await PageObjects.settings.getScriptedFieldsTabCount(), 10)).to.be( + startingCount + 1 + ); + }); + }); + + it('should see scripted field value in Discover', async function () { + const fromTime = 'Sep 17, 2015 @ 06:31:44.000'; + const toTime = 'Sep 18, 2015 @ 18:31:44.000'; + await PageObjects.common.navigateToApp('discover'); + await PageObjects.timePicker.setAbsoluteRange(fromTime, toTime); + + await PageObjects.discover.clickFieldListItem(scriptedPainlessFieldName); + await retry.try(async function () { + await PageObjects.discover.clickFieldListItemAdd(scriptedPainlessFieldName); + }); + await PageObjects.header.waitUntilLoadingHasFinished(); + + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('Sep 18, 2015 @ 18:20:57.916\n18'); + }); + }); + + // add a test to sort numeric scripted field + it('should sort scripted field value in Discover', async function () { + await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName}`); + // after the first click on the scripted field, it becomes secondary sort after time. + // click on the timestamp twice to make it be the secondary sort key. + await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('Sep 17, 2015 @ 10:53:14.181\n-1'); + }); + + await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName}`); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('Sep 17, 2015 @ 06:32:29.479\n20'); + }); + }); + + it('should filter by scripted field value in Discover', async function () { + await PageObjects.discover.clickFieldListItem(scriptedPainlessFieldName); + await log.debug('filter by the first value (14) in the expanded scripted field list'); + await PageObjects.discover.clickFieldListPlusFilter(scriptedPainlessFieldName, '14'); + await PageObjects.header.waitUntilLoadingHasFinished(); + + await retry.try(async function () { + expect(await PageObjects.discover.getHitCount()).to.be('31'); + }); + }); + + it('should visualize scripted field in vertical bar chart', async function () { + await filterBar.removeAllFilters(); + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( + '@timestamp', + 'Median of ram_Pain1' + ); + }); + }); + + describe('creating and using Painless string scripted fields', function describeIndexTests() { + const scriptedPainlessFieldName2 = 'painString'; + + it('should create scripted field', async function () { + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickKibanaIndexPatterns(); + await PageObjects.settings.clickIndexPatternLogstash(); + const startingCount = parseInt(await PageObjects.settings.getScriptedFieldsTabCount(), 10); + await PageObjects.settings.clickScriptedFieldsTab(); + await log.debug('add scripted field'); + await PageObjects.settings.addScriptedField( + scriptedPainlessFieldName2, + 'painless', + 'string', + null, + '1', + "if (doc['response.raw'].value == '200') { return 'good'} else { return 'bad'}" + ); + await retry.try(async function () { + expect(parseInt(await PageObjects.settings.getScriptedFieldsTabCount(), 10)).to.be( + startingCount + 1 + ); + }); + }); + + it('should see scripted field value in Discover', async function () { + const fromTime = 'Sep 17, 2015 @ 06:31:44.000'; + const toTime = 'Sep 18, 2015 @ 18:31:44.000'; + await PageObjects.common.navigateToApp('discover'); + await PageObjects.timePicker.setAbsoluteRange(fromTime, toTime); + + await PageObjects.discover.clickFieldListItem(scriptedPainlessFieldName2); + await retry.try(async function () { + await PageObjects.discover.clickFieldListItemAdd(scriptedPainlessFieldName2); + }); + await PageObjects.header.waitUntilLoadingHasFinished(); + + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('Sep 18, 2015 @ 18:20:57.916\ngood'); + }); + }); + + // add a test to sort string scripted field + it('should sort scripted field value in Discover', async function () { + await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName2}`); + // after the first click on the scripted field, it becomes secondary sort after time. + // click on the timestamp twice to make it be the secondary sort key. + await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('Sep 17, 2015 @ 09:48:40.594\nbad'); + }); + + await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName2}`); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('Sep 17, 2015 @ 06:32:29.479\ngood'); + }); + }); + + it('should filter by scripted field value in Discover', async function () { + await PageObjects.discover.clickFieldListItem(scriptedPainlessFieldName2); + await log.debug('filter by "bad" in the expanded scripted field list'); + await PageObjects.discover.clickFieldListPlusFilter(scriptedPainlessFieldName2, 'bad'); + await PageObjects.header.waitUntilLoadingHasFinished(); + + await retry.try(async function () { + expect(await PageObjects.discover.getHitCount()).to.be('27'); + }); + await filterBar.removeAllFilters(); + }); + + it('should visualize scripted field in vertical bar chart', async function () { + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( + 'Top 5 values of painString' + ); + }); + }); + + describe('creating and using Painless boolean scripted fields', function describeIndexTests() { + const scriptedPainlessFieldName2 = 'painBool'; + + it('should create scripted field', async function () { + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickKibanaIndexPatterns(); + await PageObjects.settings.clickIndexPatternLogstash(); + const startingCount = parseInt(await PageObjects.settings.getScriptedFieldsTabCount(), 10); + await PageObjects.settings.clickScriptedFieldsTab(); + await log.debug('add scripted field'); + await PageObjects.settings.addScriptedField( + scriptedPainlessFieldName2, + 'painless', + 'boolean', + null, + '1', + "doc['response.raw'].value == '200'" + ); + await retry.try(async function () { + expect(parseInt(await PageObjects.settings.getScriptedFieldsTabCount(), 10)).to.be( + startingCount + 1 + ); + }); + }); + + it('should see scripted field value in Discover', async function () { + const fromTime = 'Sep 17, 2015 @ 06:31:44.000'; + const toTime = 'Sep 18, 2015 @ 18:31:44.000'; + await PageObjects.common.navigateToApp('discover'); + await PageObjects.timePicker.setAbsoluteRange(fromTime, toTime); + + await PageObjects.discover.clickFieldListItem(scriptedPainlessFieldName2); + await retry.try(async function () { + await PageObjects.discover.clickFieldListItemAdd(scriptedPainlessFieldName2); + }); + await PageObjects.header.waitUntilLoadingHasFinished(); + + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('Sep 18, 2015 @ 18:20:57.916\ntrue'); + }); + }); + + it('should filter by scripted field value in Discover', async function () { + await PageObjects.discover.clickFieldListItem(scriptedPainlessFieldName2); + await log.debug('filter by "true" in the expanded scripted field list'); + await PageObjects.discover.clickFieldListPlusFilter(scriptedPainlessFieldName2, 'true'); + await PageObjects.header.waitUntilLoadingHasFinished(); + + await retry.try(async function () { + expect(await PageObjects.discover.getHitCount()).to.be('359'); + }); + await filterBar.removeAllFilters(); + }); + + // add a test to sort boolean + // existing bug: https://github.com/elastic/kibana/issues/75519 hence the issue is skipped. + it.skip('should sort scripted field value in Discover', async function () { + await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName2}`); + // after the first click on the scripted field, it becomes secondary sort after time. + // click on the timestamp twice to make it be the secondary sort key. + await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('updateExpectedResultHere\ntrue'); + }); + + await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName2}`); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('updateExpectedResultHere\nfalse'); + }); + }); + + it('should visualize scripted field in vertical bar chart', async function () { + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain( + 'Top 5 values of painBool' + ); + }); + }); + + describe('creating and using Painless date scripted fields', function describeIndexTests() { + const scriptedPainlessFieldName2 = 'painDate'; + + it('should create scripted field', async function () { + await PageObjects.settings.navigateTo(); + await PageObjects.settings.clickKibanaIndexPatterns(); + await PageObjects.settings.clickIndexPatternLogstash(); + const startingCount = parseInt(await PageObjects.settings.getScriptedFieldsTabCount(), 10); + await PageObjects.settings.clickScriptedFieldsTab(); + await log.debug('add scripted field'); + await PageObjects.settings.addScriptedField( + scriptedPainlessFieldName2, + 'painless', + 'date', + { format: 'date', datePattern: 'YYYY-MM-DD HH:00' }, + '1', + "doc['utc_time'].value.toEpochMilli() + (1000) * 60 * 60" + ); + await retry.try(async function () { + expect(parseInt(await PageObjects.settings.getScriptedFieldsTabCount(), 10)).to.be( + startingCount + 1 + ); + }); + }); + + it('should see scripted field value in Discover', async function () { + const fromTime = 'Sep 17, 2015 @ 19:22:00.000'; + const toTime = 'Sep 18, 2015 @ 07:00:00.000'; + await PageObjects.common.navigateToApp('discover'); + await PageObjects.timePicker.setAbsoluteRange(fromTime, toTime); + + await PageObjects.discover.clickFieldListItem(scriptedPainlessFieldName2); + await retry.try(async function () { + await PageObjects.discover.clickFieldListItemAdd(scriptedPainlessFieldName2); + }); + await PageObjects.header.waitUntilLoadingHasFinished(); + + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('Sep 18, 2015 @ 06:52:55.953\n2015-09-18 07:00'); + }); + }); + + // add a test to sort date scripted field + // https://github.com/elastic/kibana/issues/75711 + it.skip('should sort scripted field value in Discover', async function () { + await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName2}`); + // after the first click on the scripted field, it becomes secondary sort after time. + // click on the timestamp twice to make it be the secondary sort key. + await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + await testSubjects.click('docTableHeaderFieldSort_@timestamp'); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('updateExpectedResultHere\n2015-09-18 07:00'); + }); + + await testSubjects.click(`docTableHeaderFieldSort_${scriptedPainlessFieldName2}`); + await PageObjects.header.waitUntilLoadingHasFinished(); + await retry.try(async function () { + const rowData = await PageObjects.discover.getDocTableIndexLegacy(1); + expect(rowData).to.be('updateExpectedResultHere\n2015-09-18 07:00'); + }); + }); + + it('should filter by scripted field value in Discover', async function () { + await PageObjects.discover.clickFieldListItem(scriptedPainlessFieldName2); + await log.debug('filter by "Sep 17, 2015 @ 23:00" in the expanded scripted field list'); + await PageObjects.discover.clickFieldListPlusFilter( + scriptedPainlessFieldName2, + '1442531297065' + ); + await PageObjects.header.waitUntilLoadingHasFinished(); + + await retry.try(async function () { + expect(await PageObjects.discover.getHitCount()).to.be('1'); + }); + await filterBar.removeAllFilters(); + }); + + it('should visualize scripted field in vertical bar chart', async function () { + await PageObjects.discover.clickFieldListItemVisualize(scriptedPainlessFieldName2); + await PageObjects.header.waitUntilLoadingHasFinished(); + // verify Lens opens a visualization + expect(await testSubjects.getVisibleTextAll('lns-dimensionTrigger')).to.contain('painDate'); + }); + }); + }); +} diff --git a/test/functional/apps/management/index.ts b/test/functional/apps/management/index.ts index 09f9001d0236a..48cb90393d372 100644 --- a/test/functional/apps/management/index.ts +++ b/test/functional/apps/management/index.ts @@ -30,6 +30,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_mgmt_import_saved_objects')); loadTestFile(require.resolve('./_index_patterns_empty')); loadTestFile(require.resolve('./_scripted_fields')); + loadTestFile(require.resolve('./_scripted_fields_classic_table')); loadTestFile(require.resolve('./_runtime_fields')); loadTestFile(require.resolve('./_field_formatter')); loadTestFile(require.resolve('./_legacy_url_redirect')); diff --git a/x-pack/test/functional/apps/discover/value_suggestions.ts b/x-pack/test/functional/apps/discover/value_suggestions.ts index bb5a9098bf901..3151f729aa58c 100644 --- a/x-pack/test/functional/apps/discover/value_suggestions.ts +++ b/x-pack/test/functional/apps/discover/value_suggestions.ts @@ -13,7 +13,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const queryBar = getService('queryBar'); const filterBar = getService('filterBar'); - const docTable = getService('docTable'); + const dataGrid = getService('dataGrid'); const PageObjects = getPageObjects(['common', 'timePicker', 'settings', 'context']); async function setAutocompleteUseTimeRange(value: boolean) { @@ -34,7 +34,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'x-pack/test/functional/fixtures/kbn_archiver/dashboard_drilldowns/drilldowns' ); await kibanaServer.uiSettings.update({ - 'doc_table:legacy': true, + 'doc_table:legacy': false, }); }); @@ -90,9 +90,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.timePicker.setDefaultAbsoluteRange(); // navigate to context - await docTable.clickRowToggle({ rowIndex: 0 }); - const rowActions = await docTable.getRowActions({ rowIndex: 0 }); - await rowActions[0].click(); + await dataGrid.clickRowToggle({ rowIndex: 0 }); + const rowActions = await dataGrid.getRowActions({ rowIndex: 0 }); + await rowActions[1].click(); await PageObjects.context.waitUntilContextLoadingHasFinished(); // Apply filter in context view diff --git a/x-pack/test/functional/apps/discover/value_suggestions_non_timebased.ts b/x-pack/test/functional/apps/discover/value_suggestions_non_timebased.ts index 8d95d85a88e1e..7d8f8a302b05c 100644 --- a/x-pack/test/functional/apps/discover/value_suggestions_non_timebased.ts +++ b/x-pack/test/functional/apps/discover/value_suggestions_non_timebased.ts @@ -24,7 +24,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ); await kibanaServer.uiSettings.replace({ defaultIndex: 'without-timefield' }); await kibanaServer.uiSettings.update({ - 'doc_table:legacy': true, + 'doc_table:legacy': false, }); }); From ecc1ec993d7cd33eed285e873c61e7cabd00a0ba Mon Sep 17 00:00:00 2001 From: Mat Schaffer Date: Thu, 23 Jun 2022 19:03:42 +0900 Subject: [PATCH 58/61] [Stack Monitoring] Remove unexpected docs from persistentMetricsetsQuery portion of health API response (#134976) --- .../monitored_clusters_query.ts | 66 ++++++++++++------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/x-pack/plugins/monitoring/server/routes/api/v1/_health/monitored_clusters/monitored_clusters_query.ts b/x-pack/plugins/monitoring/server/routes/api/v1/_health/monitored_clusters/monitored_clusters_query.ts index 825cabc723294..5baf6e11c4082 100644 --- a/x-pack/plugins/monitoring/server/routes/api/v1/_health/monitored_clusters/monitored_clusters_query.ts +++ b/x-pack/plugins/monitoring/server/routes/api/v1/_health/monitored_clusters/monitored_clusters_query.ts @@ -56,11 +56,37 @@ export const monitoredClustersQuery = ({ timeRange, timeout }: QueryOptions) => }; /** - * some metricset documents use a stable ID to maintain a single occurence of + * some metricset documents use a stable ID to maintain a single occurrence of * the documents in the index. we query those metricsets separately without * a time range filter */ export const persistentMetricsetsQuery = ({ timeout }: QueryOptions) => { + const shardMatches = [ + { + term: { + type: 'shards', + }, + }, + { + term: { + 'metricset.name': 'shard', + }, + }, + ]; + + const logstashStateMatches = [ + { + term: { + type: 'logstash_state', + }, + }, + { + term: { + 'metricset.name': 'node', + }, + }, + ]; + const metricsetsAggregations = { elasticsearch: { terms: { @@ -71,18 +97,7 @@ export const persistentMetricsetsQuery = ({ timeout }: QueryOptions) => { shard: lastSeenByIndex({ filter: { bool: { - should: [ - { - term: { - type: 'shards', - }, - }, - { - term: { - 'metricset.name': 'shard', - }, - }, - ], + should: shardMatches, }, }, }), @@ -98,18 +113,7 @@ export const persistentMetricsetsQuery = ({ timeout }: QueryOptions) => { node: lastSeenByIndex({ filter: { bool: { - should: [ - { - term: { - type: 'logstash_state', - }, - }, - { - term: { - 'metricset.name': 'node', - }, - }, - ], + should: logstashStateMatches, }, }, }), @@ -117,8 +121,20 @@ export const persistentMetricsetsQuery = ({ timeout }: QueryOptions) => { }, }; + // Outer query on expected types to avoid catching kibana internal collection documents containing source_node.uuid return { timeout: `${timeout}s`, + query: { + bool: { + filter: [ + { + bool: { + should: shardMatches.concat(logstashStateMatches), + }, + }, + ], + }, + }, aggs: { clusters: { terms: clusterUuidTerm, From c82788c4bb61134d40abc69fe6dc4b5b08b74868 Mon Sep 17 00:00:00 2001 From: Jonathan Buttner <56361221+jonathan-buttner@users.noreply.github.com> Date: Thu, 23 Jun 2022 07:19:13 -0400 Subject: [PATCH 59/61] Fixing bug and writing tests (#134945) --- .../saved_object/timelines/index.test.ts | 59 +++++++++++++++++++ .../timeline/saved_object/timelines/index.ts | 4 +- 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts index 920d9a85ed484..c2db0e00a1400 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.test.ts @@ -13,6 +13,7 @@ import { getExistingPrepackagedTimelines, getAllTimeline, resolveTimelineOrNull, + updatePartialSavedTimeline, } from '.'; import { convertSavedObjectToSavedTimeline } from './convert_saved_object_to_savedtimeline'; import { getNotesByTimelineId } from '../notes/saved_object'; @@ -20,6 +21,7 @@ import { getAllPinnedEventsByTimelineId } from '../pinned_events'; import { AllTimelinesResponse, ResolvedTimelineWithOutcomeSavedObject, + SavedTimeline, } from '../../../../../common/types/timeline'; import { mockResolvedSavedObject, @@ -28,6 +30,7 @@ import { } from '../../__mocks__/resolve_timeline'; import { DATA_VIEW_ID_REF_NAME, SAVED_QUERY_ID_REF_NAME, SAVED_QUERY_TYPE } from '../../constants'; import { DATA_VIEW_SAVED_OBJECT_TYPE } from '@kbn/data-views-plugin/common'; +import { SavedObjectsUpdateResponse } from '@kbn/core/server'; jest.mock('./convert_saved_object_to_savedtimeline', () => ({ convertSavedObjectToSavedTimeline: jest.fn(), @@ -360,4 +363,60 @@ describe('saved_object', () => { expect(attributes.savedQueryId).toEqual('boo'); }); }); + + describe('updatePartialSavedTimeline', () => { + let mockSOClientGet: jest.Mock; + let mockSOClientUpdate: jest.Mock; + let mockRequest: FrameworkRequest; + + const patchTimelineRequest: SavedTimeline = { + savedQueryId: null, + }; + + beforeEach(() => { + jest.clearAllMocks(); + + mockSOClientUpdate = jest.fn(() => ({ + ...mockResolvedSavedObject.saved_object, + attributes: {}, + })); + + mockSOClientGet = jest.fn(async () => ({ + ...mockResolvedSavedObject.saved_object, + references: [ + { + id: 'boo', + name: SAVED_QUERY_ID_REF_NAME, + type: SAVED_QUERY_TYPE, + }, + ], + })); + + mockRequest = { + user: { + username: 'username', + }, + context: { + core: { + savedObjects: { + client: { + get: mockSOClientGet, + update: mockSOClientUpdate, + }, + }, + }, + }, + } as unknown as FrameworkRequest; + }); + + it('does not remove savedQueryId when it is null in the patch request', async () => { + const resp = (await updatePartialSavedTimeline( + mockRequest, + '760d3d20-2142-11ec-a46f-051cb8e3154c', + patchTimelineRequest + )) as SavedObjectsUpdateResponse; + + expect(resp.attributes.savedQueryId).toBeNull(); + }); + }); }); diff --git a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts index de7c31fb47a98..03b16c3292b7e 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/saved_object/timelines/index.ts @@ -493,7 +493,7 @@ const updateTimeline = async ({ }; }; -const updatePartialSavedTimeline = async ( +export const updatePartialSavedTimeline = async ( request: FrameworkRequest, timelineId: string, timeline: SavedTimeline @@ -528,7 +528,7 @@ const updatePartialSavedTimeline = async ( const populatedTimeline = timelineFieldsMigrator.populateFieldsFromReferencesForPatch({ - dataBeforeRequest: timelineUpdateAttributes, + dataBeforeRequest: timeline, dataReturnedFromRequest: updatedTimeline, }); From bee025b3c09f913acddf2eb116b3d1c06f7e5926 Mon Sep 17 00:00:00 2001 From: Paul Power <91835463+pauldotpower@users.noreply.github.com> Date: Thu, 23 Jun 2022 12:21:30 +0100 Subject: [PATCH 60/61] Changed a minor error - "to to" to "to" (#126760) A minor change, not urgent/important Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- docs/setup/upgrade/resolving-migration-failures.asciidoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/setup/upgrade/resolving-migration-failures.asciidoc b/docs/setup/upgrade/resolving-migration-failures.asciidoc index 7ba4bc7205fcf..85847b15cb084 100644 --- a/docs/setup/upgrade/resolving-migration-failures.asciidoc +++ b/docs/setup/upgrade/resolving-migration-failures.asciidoc @@ -8,9 +8,9 @@ with the new version. ==== Saved object migration failures If {kib} unexpectedly terminates while migrating a saved object index, {kib} automatically attempts to -perform the migration again when the process restarts. Do not delete any saved objects indices to -to fix a failed migration. Unlike previous versions, {kib} 7.12.0 and -later does not require deleting indices to release a failed migration lock. +perform the migration again when the process restarts. Do not delete any saved objects indices to +fix a failed migration. Unlike previous versions, {kib} 7.12.0 and later does not require deleting +indices to release a failed migration lock. If upgrade migrations fail repeatedly, refer to <>. From 8e1feb327a434db25a4157a74170a5015f3dcab3 Mon Sep 17 00:00:00 2001 From: Sander Philipse <94373878+sphilipse@users.noreply.github.com> Date: Thu, 23 Jun 2022 13:33:39 +0200 Subject: [PATCH 61/61] [Enterprise Search]Add util function to create Kea logic files for API calls (#134932) * [Enterprise Search]Add util function to create Kea logic files for API calls * Fixed unit tests for add custom source logic * Make Status an enum, add tests, move flash messages * Fix some more tests --- x-pack/plugins/enterprise_search/KEA.md | 152 +++++------------- .../enterprise_search/common/types/api.ts | 33 +++- .../shared/api_logic/create_api_logic.test.ts | 130 +++++++++++++++ .../shared/api_logic/create_api_logic.ts | 76 +++++++++ .../add_custom_source_api_logic.test.ts | 152 +++--------------- .../add_custom_source_api_logic.ts | 93 +++-------- .../add_custom_source_logic.test.ts | 102 ++++++++---- .../add_custom_source_logic.ts | 34 ++-- 8 files changed, 404 insertions(+), 368 deletions(-) create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.ts diff --git a/x-pack/plugins/enterprise_search/KEA.md b/x-pack/plugins/enterprise_search/KEA.md index 17ae7cf71f833..368dc7d13ea73 100644 --- a/x-pack/plugins/enterprise_search/KEA.md +++ b/x-pack/plugins/enterprise_search/KEA.md @@ -26,99 +26,42 @@ Slicing up components into smaller chunks, designing clear interfaces for those State management tools are most powerful when used to coordinate state across an entire application, or large slices of that application. To do that well, state needs to be shared and it needs to be clear where in the existing state to find what information. We do this by separating API data from component data. -This means API interactions and their data should live in their own logic files, and the resulting data and API status should be imported by other logic files or directly by components consuming that data. Those API logic files should contain all interactions with APIs, and the current status of those API requests. Our idiomatic way of doing this follows: +This means API interactions and their data should live in their own logic files, and the resulting data and API status should be imported by other logic files or directly by components consuming that data. Those API logic files should contain all interactions with APIs, and the current status of those API requests. We have a util function to help you create those, located in [create_api_logic.ts](public/applications/shared/api_logic/create_api_logic.ts). You can grab the `status`, `data` and `error` values from any API created with that util. And you can listen to the `initiateCall`, `apiSuccess`, `apiError` and `apiReset` actions in other listeners. -```typescript -import { kea, MakeLogicType } from 'kea'; - -import { ApiStatus, HttpError } from '../../../../../../../../common/types/api'; -import { flashAPIErrors, clearFlashMessages } from '../../../../../../shared/flash_messages'; -import { HttpLogic } from '../../../../../../shared/http'; +You will need to provide a function that actually makes the api call, as well as the logic path. The function will need to accept and return a single object, not separate values. -export interface AddCustomSourceActions { - fetchSource(): void; - fetchSourceError(code: number, error: string): HttpError; - fetchSourceSuccess(source: CustomSource): CustomSource; -} - -interface CustomSource { +```typescript +export const addCustomSource = async ({ + name, + baseServiceType, +}: { name: string; -} - -interface AddCustomSourceValues { - sourceApiStatus: ApiStatus; -} - -export const AddCustomSourceLogic = kea< - MakeLogicType ->({ - path: ['enterprise_search', 'workplace_search', 'add_custom_source_logic'], - actions: { - fetchSource: true, - fetchSourceError: (code, error) => ({ code, error }), - fetchSourceSuccess: (customSource) => customSource, - }, - reducers: () => ({ - sourceApiStatus: [ - { - status: 'IDLE', - }, - { - fetchSource: () => ({ - status: 'PENDING', - }), - fetchSourceError: (_, error) => ({ - status: 'ERROR', - error, - }), - fetchSourceSuccess: (_, data) => ({ - status: 'SUCCESS', - data, - }), - }, - ], - }), - listeners: ({ actions }) => ({ - fetchSource: async () => { - clearFlashMessages(); - - try { - const response = await HttpLogic.values.http.post('/api/source'); - actions.fetchSourceSuccess(response); - } catch (e) { - flashAPIErrors(e); - actions.fetchSourceError(e.code, e.message); - } - }, - }), -}); + baseServiceType?: string; +}) => { + const { isOrganization } = AppLogic.values; + const route = isOrganization + ? '/internal/workplace_search/org/create_source' + : '/internal/workplace_search/account/create_source'; + + const params = { + service_type: 'custom', + name, + base_service_type: baseServiceType, + }; + const source = await HttpLogic.values.http.post(route, { + body: JSON.stringify(params), + }); + return { source }; +}; + +export const AddCustomSourceApiLogic = createApiLogic( + ['add_custom_source_api_logic'], + addCustomSource +); ``` -The types used above can be found in our [common Enterprise Search types file](common/types/api.ts). While the above assumes a single, idempotent API, this approach can be easily extended to use a dictionary approach: -```typescript -reducers: () => ({ - sourceApiStatus: [ - { - }, - { - fetchSource: (state, id) => ({...state, - id: { - status: 'PENDING', - data: state[id]?.data, - }}), - fetchSourceError: (_, ({id, error})) => ({...state, - id: { - status: 'ERROR', - error, - }}), - fetchSourceSuccess: (_, ({id, data})) => ({...state, id: { - status: 'SUCCESS', - data, - }}), - }, - ], - }), -``` +The types used in that util can be found in our [common Enterprise Search types file](common/types/api.ts). + ## Import actions and values from API logic files into component and view logic. Once you have an API interactions file set up, components and other Kea logic files can import the values from those files to build their own logic. Use the Kea 'connect' functionality to do this, as the auto-connect functionality has a few bugs and was removed in Kea 3.0. This allows you to read the status and value of an API, react to any API events, and abstract those APIs away from the components. Those components can now become more functional and reactive to the current state of the application, rather than to directly responding to API events. @@ -130,34 +73,19 @@ export const AddCustomSourceLogic = kea< MakeLogicType >({ connect: { - actions: [AddCustomSourceApiLogic, ['addSource', 'addSourceSuccess', 'addSourceError']], - values: [AddCustomSourceApiLogic, ['sourceApi']], + actions: [AddCustomSourceApiLogic, ['initiateCall', 'apiSuccess', ]], + values: [AddCustomSourceApiLogic, ['status']], }, path: ['enterprise_search', 'workplace_search', 'add_custom_source_logic'], actions: { createContentSource: true, - setCustomSourceNameValue: (customSourceNameValue) => customSourceNameValue, setNewCustomSource: (data) => data, }, - reducers: ({ props }) => ({ - customSourceNameValue: [ - props.initialValue || '', - { - setCustomSourceNameValue: (_, customSourceNameValue) => customSourceNameValue, - }, - ], - newCustomSource: [ - undefined, - { - setNewCustomSource: (_, newCustomSource) => newCustomSource, - }, - ], - }), listeners: ({ actions, values, props }) => ({ createContentSource: () => { const { customSourceNameValue } = values; const { baseServiceType } = props; - actions.addSource(customSourceNameValue, baseServiceType); + actions.initiateCall({ source: customSourceNameValue, baseServiceType }); }, addSourceSuccess: (customSource: CustomSource) => { actions.setNewCustomSource(customSource); @@ -165,20 +93,14 @@ export const AddCustomSourceLogic = kea< }), selectors: { buttonLoading: [ - (selectors) => [selectors.sourceApi], - (apiStatus) => apiStatus?.status === 'PENDING', + (selectors) => [selectors.status], + (apiStatus) => status === 'LOADING', ], }, }); ``` -You'll have to add the imported the actions and values types you're already using for your function, preferably by importing the types off the imported logic. Like so: -```typescript -export interface AddCustomSourceActions { - addSource: AddCustomSourceApiActions['addSource']; - addSourceSuccess: AddCustomSourceApiActions['addSourceSuccess']; -} -``` +You'll have to add the imported the actions and values types you're already using for your function, preferably by importing the types off the imported logic, so TypeScript can warn you if you're misusing the function. ## Keep your logic files small Using the above methods, you can keep your logic files small and isolated. Keep API calls separate from view and component logic. Keep the amount of logic you're processing limited per file. If your logic file starts exceeding about 150 lines of code, you should start thinking about splitting it up into separate chunks, if possible. diff --git a/x-pack/plugins/enterprise_search/common/types/api.ts b/x-pack/plugins/enterprise_search/common/types/api.ts index 2ba225bd19223..579f9535c7e4b 100644 --- a/x-pack/plugins/enterprise_search/common/types/api.ts +++ b/x-pack/plugins/enterprise_search/common/types/api.ts @@ -5,36 +5,53 @@ * 2.0. */ +import { HttpResponse } from '@kbn/core/public'; + /** * These types track an API call's status and result * Each Status string corresponds to a possible status in a request's lifecycle */ -export type Status = 'IDLE' | 'PENDING' | 'SUCCESS' | 'ERROR'; +export const enum Status { + IDLE, + LOADING, + SUCCESS, + ERROR, +} -export interface HttpError { - code: number; - message?: string; +export interface ErrorResponse { + statusCode: number; + error: string; + message: string; + attributes: { + errors: string[]; + }; } +export type HttpError = HttpResponse; + export interface ApiSuccess { - status: 'SUCCESS'; + status: Status.SUCCESS; data: T; + error?: undefined; } export interface ApiPending { - status: 'PENDING'; + status: Status.LOADING; data?: T; + error?: undefined; } export interface ApiIdle { - status: 'IDLE'; + status: Status.IDLE; data?: T; + error?: undefined; } export interface ApiError { - status: Status; + status: Status.ERROR; error: HttpError; + data?: undefined; } export type ApiStatus = ApiSuccess | ApiPending | ApiIdle | ApiError; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.test.ts new file mode 100644 index 0000000000000..3687ccbde7723 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.test.ts @@ -0,0 +1,130 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { LogicMounter } from '../../__mocks__/kea_logic'; + +import { nextTick } from '@kbn/test-jest-helpers'; + +import { HttpError, Status } from '../../../../common/types/api'; + +import { createApiLogic } from './create_api_logic'; + +const DEFAULT_VALUES = { + apiStatus: { + status: Status.IDLE, + }, + data: undefined, + error: undefined, + status: Status.IDLE, +}; + +describe('CreateApiLogic', () => { + const apiCallMock = jest.fn(); + const logic = createApiLogic(['path'], apiCallMock); + const { mount } = new LogicMounter(logic); + + beforeEach(() => { + jest.clearAllMocks(); + mount({}); + }); + + it('has expected default values', () => { + expect(logic.values).toEqual(DEFAULT_VALUES); + }); + + describe('actions', () => { + describe('makeRequest', () => { + it('should set status to LOADING', () => { + logic.actions.makeRequest({}); + expect(logic.values).toEqual({ + ...DEFAULT_VALUES, + status: Status.LOADING, + apiStatus: { + status: Status.LOADING, + }, + }); + }); + }); + describe('apiSuccess', () => { + it('should set status to SUCCESS and load data', () => { + logic.actions.apiSuccess({ success: 'data' }); + expect(logic.values).toEqual({ + ...DEFAULT_VALUES, + status: Status.SUCCESS, + data: { success: 'data' }, + apiStatus: { + status: Status.SUCCESS, + data: { success: 'data' }, + }, + }); + }); + }); + describe('apiError', () => { + it('should set status to ERROR and set error data', () => { + logic.actions.apiError('error' as any as HttpError); + expect(logic.values).toEqual({ + ...DEFAULT_VALUES, + status: Status.ERROR, + data: undefined, + error: 'error', + apiStatus: { + status: Status.ERROR, + data: undefined, + error: 'error', + }, + }); + }); + }); + describe('apiReset', () => { + it('should reset api', () => { + logic.actions.apiError('error' as any as HttpError); + expect(logic.values).toEqual({ + ...DEFAULT_VALUES, + status: Status.ERROR, + data: undefined, + error: 'error', + apiStatus: { + status: Status.ERROR, + data: undefined, + error: 'error', + }, + }); + logic.actions.apiReset(); + expect(logic.values).toEqual(DEFAULT_VALUES); + }); + }); + }); + + describe('listeners', () => { + describe('makeRequest', () => { + it('calls apiCall on success', async () => { + const apiSuccessMock = jest.spyOn(logic.actions, 'apiSuccess'); + const apiErrorMock = jest.spyOn(logic.actions, 'apiError'); + apiCallMock.mockReturnValue(Promise.resolve('result')); + logic.actions.makeRequest({ arg: 'argument1' }); + expect(apiCallMock).toHaveBeenCalledWith({ arg: 'argument1' }); + await nextTick(); + expect(apiErrorMock).not.toHaveBeenCalled(); + expect(apiSuccessMock).toHaveBeenCalledWith('result'); + }); + it('calls apiError on error', async () => { + const apiSuccessMock = jest.spyOn(logic.actions, 'apiSuccess'); + const apiErrorMock = jest.spyOn(logic.actions, 'apiError'); + apiCallMock.mockReturnValue( + Promise.reject({ body: { statusCode: 404, message: 'message' } }) + ); + logic.actions.makeRequest({ arg: 'argument1' }); + expect(apiCallMock).toHaveBeenCalledWith({ arg: 'argument1' }); + await nextTick(); + expect(apiSuccessMock).not.toHaveBeenCalled(); + expect(apiErrorMock).toHaveBeenCalledWith({ + body: { statusCode: 404, message: 'message' }, + }); + }); + }); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.ts new file mode 100644 index 0000000000000..57a8d3751a6ac --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/api_logic/create_api_logic.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { kea, MakeLogicType } from 'kea'; + +import { ApiStatus, Status, HttpError } from '../../../../common/types/api'; + +export interface Values { + apiStatus: ApiStatus; + status: Status; + data?: T; + error: HttpError; +} + +export interface Actions | undefined, Result> { + makeRequest(args: Args): Args; + apiError(error: HttpError): HttpError; + apiSuccess(result: Result): Result; + apiReset(): void; +} + +export const createApiLogic = | undefined>( + path: string[], + apiFunction: (args: Args) => Promise +) => + kea, Actions>>({ + path: ['enterprise_search', ...path], + actions: { + makeRequest: (args) => args, + apiError: (error) => error, + apiSuccess: (result) => result, + apiReset: true, + }, + reducers: () => ({ + apiStatus: [ + { + status: Status.IDLE, + }, + { + makeRequest: () => ({ + status: Status.LOADING, + }), + apiError: (_, error) => ({ + status: Status.ERROR, + error, + }), + apiSuccess: (_, data) => ({ + status: Status.SUCCESS, + data, + }), + apiReset: () => ({ + status: Status.IDLE, + }), + }, + ], + }), + listeners: ({ actions }) => ({ + makeRequest: async (args) => { + try { + const result = await apiFunction(args); + actions.apiSuccess(result); + } catch (e) { + actions.apiError(e); + } + }, + }), + selectors: ({ selectors }) => ({ + status: [() => [selectors.apiStatus], (apiStatus: ApiStatus) => apiStatus.status], + data: [() => [selectors.apiStatus], (apiStatus: ApiStatus) => apiStatus.data], + error: [() => [selectors.apiStatus], (apiStatus: ApiStatus) => apiStatus.error], + }), + }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_api_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_api_logic.test.ts index a08d024e465ad..3f95f5058b0c2 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_api_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_api_logic.test.ts @@ -5,151 +5,45 @@ * 2.0. */ -import { - LogicMounter, - mockFlashMessageHelpers, - mockHttpValues, -} from '../../../../../../__mocks__/kea_logic'; -import { sourceConfigData } from '../../../../../__mocks__/content_sources.mock'; +import { mockHttpValues } from '../../../../../../__mocks__/kea_logic'; import { nextTick } from '@kbn/test-jest-helpers'; -import { itShowsServerErrorAsFlashMessage } from '../../../../../../test_helpers'; - jest.mock('../../../../../app_logic', () => ({ AppLogic: { values: { isOrganization: true } }, })); import { AppLogic } from '../../../../../app_logic'; -import { AddCustomSourceApiLogic } from './add_custom_source_api_logic'; - -const DEFAULT_VALUES = { - sourceApi: { - status: 'IDLE', - }, -}; - -const MOCK_NAME = 'name'; +import { addCustomSource } from './add_custom_source_api_logic'; -describe('AddCustomSourceLogic', () => { - const { mount } = new LogicMounter(AddCustomSourceApiLogic); +describe('addCustomSource', () => { const { http } = mockHttpValues; - const { clearFlashMessages } = mockFlashMessageHelpers; beforeEach(() => { jest.clearAllMocks(); - mount({}); }); - it('has expected default values', () => { - expect(AddCustomSourceApiLogic.values).toEqual(DEFAULT_VALUES); - }); - - describe('listeners', () => { - beforeEach(() => { - mount(); - }); - - describe('organization context', () => { - describe('createContentSource', () => { - it('calls API and sets values', async () => { - const addSourceSuccessSpy = jest.spyOn( - AddCustomSourceApiLogic.actions, - 'addSourceSuccess' - ); - http.post.mockReturnValue(Promise.resolve({ sourceConfigData })); - - AddCustomSourceApiLogic.actions.addSource(MOCK_NAME); - - expect(clearFlashMessages).toHaveBeenCalled(); - expect(http.post).toHaveBeenCalledWith('/internal/workplace_search/org/create_source', { - body: JSON.stringify({ service_type: 'custom', name: MOCK_NAME }), - }); - await nextTick(); - expect(addSourceSuccessSpy).toHaveBeenCalledWith({ sourceConfigData }); - }); - - it('submits a base service type for pre-configured sources', async () => { - const addSourceSuccessSpy = jest.spyOn( - AddCustomSourceApiLogic.actions, - 'addSourceSuccess' - ); - http.post.mockReturnValue(Promise.resolve({ sourceConfigData })); - - AddCustomSourceApiLogic.actions.addSource(MOCK_NAME, 'base_service_type'); - - expect(clearFlashMessages).toHaveBeenCalled(); - expect(http.post).toHaveBeenCalledWith('/internal/workplace_search/org/create_source', { - body: JSON.stringify({ - service_type: 'custom', - name: MOCK_NAME, - base_service_type: 'base_service_type', - }), - }); - await nextTick(); - expect(addSourceSuccessSpy).toHaveBeenCalledWith({ sourceConfigData }); - }); - - itShowsServerErrorAsFlashMessage(http.post, () => { - AddCustomSourceApiLogic.actions.addSource(MOCK_NAME); - }); - }); + it('calls correct route for organization', async () => { + const promise = Promise.resolve('result'); + http.post.mockReturnValue(promise); + addCustomSource({ name: 'name', baseServiceType: 'baseServiceType' }); + await nextTick(); + expect(http.post).toHaveBeenCalledWith('/internal/workplace_search/org/create_source', { + body: JSON.stringify({ + service_type: 'custom', + name: 'name', + base_service_type: 'baseServiceType', + }), }); - - describe('account context routes', () => { - beforeEach(() => { - AppLogic.values.isOrganization = false; - }); - - describe('createContentSource', () => { - it('calls API and sets values', async () => { - const addSourceSuccessSpy = jest.spyOn( - AddCustomSourceApiLogic.actions, - 'addSourceSuccess' - ); - http.post.mockReturnValue(Promise.resolve({ sourceConfigData })); - - AddCustomSourceApiLogic.actions.addSource(MOCK_NAME); - - expect(clearFlashMessages).toHaveBeenCalled(); - expect(http.post).toHaveBeenCalledWith( - '/internal/workplace_search/account/create_source', - { - body: JSON.stringify({ service_type: 'custom', name: MOCK_NAME }), - } - ); - await nextTick(); - expect(addSourceSuccessSpy).toHaveBeenCalledWith({ sourceConfigData }); - }); - - it('submits a base service type for pre-configured sources', async () => { - const addSourceSuccessSpy = jest.spyOn( - AddCustomSourceApiLogic.actions, - 'addSourceSuccess' - ); - http.post.mockReturnValue(Promise.resolve({ sourceConfigData })); - - AddCustomSourceApiLogic.actions.addSource(MOCK_NAME, 'base_service_type'); - - expect(clearFlashMessages).toHaveBeenCalled(); - expect(http.post).toHaveBeenCalledWith( - '/internal/workplace_search/account/create_source', - { - body: JSON.stringify({ - service_type: 'custom', - name: MOCK_NAME, - base_service_type: 'base_service_type', - }), - } - ); - await nextTick(); - expect(addSourceSuccessSpy).toHaveBeenCalledWith({ sourceConfigData }); - }); - - itShowsServerErrorAsFlashMessage(http.post, () => { - AddCustomSourceApiLogic.actions.addSource(MOCK_NAME); - }); - }); + }); + it('calls correct route for account', async () => { + const promise = Promise.resolve('result'); + AppLogic.values.isOrganization = false; + http.post.mockReturnValue(promise); + addCustomSource({ name: 'name' }); + await nextTick(); + expect(http.post).toHaveBeenCalledWith('/internal/workplace_search/account/create_source', { + body: JSON.stringify({ service_type: 'custom', name: 'name' }), }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_api_logic.ts index 4c4655a3882e0..a3e1afe4cdd11 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_api_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_api_logic.ts @@ -5,76 +5,35 @@ * 2.0. */ -import { kea, MakeLogicType } from 'kea'; - -import { ApiStatus, HttpError } from '../../../../../../../../common/types/api'; -import { flashAPIErrors, clearFlashMessages } from '../../../../../../shared/flash_messages'; +import { createApiLogic } from '../../../../../../shared/api_logic/create_api_logic'; import { HttpLogic } from '../../../../../../shared/http'; import { AppLogic } from '../../../../../app_logic'; import { CustomSource } from '../../../../../types'; -export interface AddCustomSourceApiActions { - addSource(name: string, baseServiceType?: string): { name: string; baseServiceType: string }; - addSourceError(code: number, error: string): HttpError; - addSourceSuccess(source: CustomSource): { source: CustomSource }; -} - -export interface AddCustomSourceApiValues { - sourceApi: ApiStatus; -} - -export const AddCustomSourceApiLogic = kea< - MakeLogicType ->({ - path: ['enterprise_search', 'workplace_search', 'add_custom_source_api_logic'], - actions: { - addSource: (name, baseServiceType) => ({ name, baseServiceType }), - addSourceError: (code, error) => ({ code, error }), - addSourceSuccess: (customSource) => ({ source: customSource }), - }, - reducers: () => ({ - sourceApi: [ - { - status: 'IDLE', - }, - { - addSource: () => ({ - status: 'PENDING', - }), - addSourceError: (_, error) => ({ - status: 'ERROR', - error, - }), - addSourceSuccess: (_, { source }) => ({ - status: 'SUCCESS', - data: source, - }), - }, - ], - }), - listeners: ({ actions }) => ({ - addSource: async ({ name, baseServiceType }) => { - clearFlashMessages(); - const { isOrganization } = AppLogic.values; - const route = isOrganization - ? '/internal/workplace_search/org/create_source' - : '/internal/workplace_search/account/create_source'; +export const addCustomSource = async ({ + name, + baseServiceType, +}: { + name: string; + baseServiceType?: string; +}) => { + const { isOrganization } = AppLogic.values; + const route = isOrganization + ? '/internal/workplace_search/org/create_source' + : '/internal/workplace_search/account/create_source'; - const params = { - service_type: 'custom', - name, - base_service_type: baseServiceType, - }; + const params = { + service_type: 'custom', + name, + base_service_type: baseServiceType, + }; + const source = await HttpLogic.values.http.post(route, { + body: JSON.stringify(params), + }); + return { source }; +}; - try { - const response = await HttpLogic.values.http.post(route, { - body: JSON.stringify(params), - }); - actions.addSourceSuccess(response); - } catch (e) { - flashAPIErrors(e); - actions.addSourceError(e?.body?.statusCode, e?.body?.message); - } - }, - }), -}); +export const AddCustomSourceApiLogic = createApiLogic( + ['workplace_search', 'add_custom_source_api_logic'], + addCustomSource +); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_logic.test.ts index 59825c0bd386c..d62530454f7f7 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_logic.test.ts @@ -7,12 +7,17 @@ import { LogicMounter } from '../../../../../../__mocks__/kea_logic'; +import { mockFlashMessageHelpers } from '../../../../../../__mocks__/kea_logic'; + +import { Status } from '../../../../../../../../common/types/api'; + jest.mock('../../../../../app_logic', () => ({ AppLogic: { values: { isOrganization: true } }, })); import { CustomSource } from '../../../../../types'; +import { AddCustomSourceApiLogic } from './add_custom_source_api_logic'; import { AddCustomSourceLogic, AddCustomSourceSteps } from './add_custom_source_logic'; const DEFAULT_VALUES = { @@ -20,15 +25,14 @@ const DEFAULT_VALUES = { buttonLoading: false, customSourceNameValue: '', newCustomSource: {} as CustomSource, - sourceApi: { - status: 'IDLE', - }, + status: Status.IDLE, }; const MOCK_NAME = 'name'; describe('AddCustomSourceLogic', () => { const { mount } = new LogicMounter(AddCustomSourceLogic); + const { clearFlashMessages, flashAPIErrors } = mockFlashMessageHelpers; beforeEach(() => { jest.clearAllMocks(); @@ -40,27 +44,48 @@ describe('AddCustomSourceLogic', () => { }); describe('actions', () => { - describe('addSourceSuccess', () => { + describe('apiSuccess', () => { it('sets a new source', () => { - const customSource: CustomSource = { + AddCustomSourceLogic.actions.makeRequest({ name: 'name' }); + const source: CustomSource = { accessToken: 'a', name: 'b', id: '1', }; - AddCustomSourceLogic.actions.addSourceSuccess(customSource); + AddCustomSourceLogic.actions.apiSuccess({ source }); expect(AddCustomSourceLogic.values).toEqual({ ...DEFAULT_VALUES, customSourceNameValue: '', - newCustomSource: customSource, - sourceApi: { - status: 'SUCCESS', - data: customSource, - }, + newCustomSource: source, + status: Status.SUCCESS, currentStep: AddCustomSourceSteps.SaveCustomStep, }); }); }); + describe('makeRequest', () => { + it('sets button to loading', () => { + AddCustomSourceLogic.actions.makeRequest({ name: 'name' }); + + expect(AddCustomSourceLogic.values).toEqual({ + ...DEFAULT_VALUES, + buttonLoading: true, + status: Status.LOADING, + }); + }); + }); + describe('apiError', () => { + it('sets button to not loading', () => { + AddCustomSourceLogic.actions.makeRequest({ name: 'name' }); + AddCustomSourceLogic.actions.apiError('error' as any); + + expect(AddCustomSourceLogic.values).toEqual({ + ...DEFAULT_VALUES, + buttonLoading: false, + status: Status.ERROR, + }); + }); + }); describe('setCustomSourceNameValue', () => { it('saves the name', () => { AddCustomSourceLogic.actions.setCustomSourceNameValue('name'); @@ -98,33 +123,48 @@ describe('AddCustomSourceLogic', () => { customSourceNameValue: MOCK_NAME, }); }); - - describe('organization context', () => { - describe('createContentSource', () => { - it('calls addSource on AddCustomSourceApi logic', async () => { - const addSourceSpy = jest.spyOn(AddCustomSourceLogic.actions, 'addSource'); - - AddCustomSourceLogic.actions.createContentSource(); - expect(addSourceSpy).toHaveBeenCalledWith(MOCK_NAME, undefined); + describe('createContentSource', () => { + it('calls addSource on AddCustomSourceApi logic', async () => { + const addSourceSpy = jest.spyOn(AddCustomSourceLogic.actions, 'makeRequest'); + + AddCustomSourceLogic.actions.createContentSource(); + expect(addSourceSpy).toHaveBeenCalledWith({ + name: MOCK_NAME, + baseServiceType: undefined, }); + }); - it('submits a base service type for pre-configured sources', () => { - mount( - { - customSourceNameValue: MOCK_NAME, - }, - { - baseServiceType: 'share_point_server', - } - ); + it('submits a base service type for pre-configured sources', () => { + mount( + { + customSourceNameValue: MOCK_NAME, + }, + { + baseServiceType: 'share_point_server', + } + ); - const addSourceSpy = jest.spyOn(AddCustomSourceLogic.actions, 'addSource'); + const addSourceSpy = jest.spyOn(AddCustomSourceLogic.actions, 'makeRequest'); - AddCustomSourceLogic.actions.createContentSource(); + AddCustomSourceLogic.actions.createContentSource(); - expect(addSourceSpy).toHaveBeenCalledWith(MOCK_NAME, 'share_point_server'); + expect(addSourceSpy).toHaveBeenCalledWith({ + name: MOCK_NAME, + baseServiceType: 'share_point_server', }); }); }); + describe('makeRequest', () => { + it('should call clearFlashMessages', () => { + AddCustomSourceApiLogic.actions.makeRequest({ name: 'name' }); + expect(clearFlashMessages).toHaveBeenCalled(); + }); + }); + describe('apiError', () => { + it('should call flashAPIError', () => { + AddCustomSourceApiLogic.actions.apiError('error' as any); + expect(flashAPIErrors).toHaveBeenCalledWith('error'); + }); + }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_logic.ts b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_logic.ts index 76041744b3c37..0f81e78d98868 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/content_sources/components/add_source/add_custom_source/add_custom_source_logic.ts @@ -7,13 +7,11 @@ import { kea, MakeLogicType } from 'kea'; +import { HttpError, Status } from '../../../../../../../../common/types/api'; +import { clearFlashMessages, flashAPIErrors } from '../../../../../../shared/flash_messages'; import { CustomSource } from '../../../../../types'; -import { - AddCustomSourceApiActions, - AddCustomSourceApiLogic, - AddCustomSourceApiValues, -} from './add_custom_source_api_logic'; +import { AddCustomSourceApiLogic } from './add_custom_source_api_logic'; export interface AddCustomSourceProps { baseServiceType?: string; @@ -26,8 +24,9 @@ export enum AddCustomSourceSteps { } export interface AddCustomSourceActions { - addSource: AddCustomSourceApiActions['addSource']; - addSourceSuccess: AddCustomSourceApiActions['addSourceSuccess']; + makeRequest: typeof AddCustomSourceApiLogic.actions.makeRequest; + apiSuccess({ source }: { source: CustomSource }): { source: CustomSource }; + apiError(error: HttpError): HttpError; createContentSource(): void; setCustomSourceNameValue(customSourceNameValue: string): string; setNewCustomSource(data: CustomSource): CustomSource; @@ -38,7 +37,7 @@ interface AddCustomSourceValues { currentStep: AddCustomSourceSteps; customSourceNameValue: string; newCustomSource: CustomSource; - sourceApi: AddCustomSourceApiValues['sourceApi']; + status: Status; } /** @@ -50,8 +49,8 @@ export const AddCustomSourceLogic = kea< MakeLogicType >({ connect: { - actions: [AddCustomSourceApiLogic, ['addSource', 'addSourceSuccess', 'addSourceError']], - values: [AddCustomSourceApiLogic, ['sourceApi']], + actions: [AddCustomSourceApiLogic, ['makeRequest', 'apiError', 'apiSuccess']], + values: [AddCustomSourceApiLogic, ['status']], }, path: ['enterprise_search', 'workplace_search', 'add_custom_source_logic'], actions: { @@ -64,8 +63,8 @@ export const AddCustomSourceLogic = kea< false, { createContentSource: () => true, - addSourceSuccess: () => false, - addSourceError: () => false, + apiSuccess: () => false, + apiError: () => false, }, ], currentStep: [ @@ -91,16 +90,15 @@ export const AddCustomSourceLogic = kea< createContentSource: () => { const { customSourceNameValue } = values; const { baseServiceType } = props; - actions.addSource(customSourceNameValue, baseServiceType); + actions.makeRequest({ name: customSourceNameValue, baseServiceType }); }, - addSourceSuccess: ({ source }) => { + makeRequest: () => clearFlashMessages(), + apiError: (error) => flashAPIErrors(error), + apiSuccess: ({ source }) => { actions.setNewCustomSource(source); }, }), selectors: { - buttonLoading: [ - (selectors) => [selectors.sourceApi], - (apiStatus) => apiStatus?.status === 'PENDING', - ], + buttonLoading: [(selectors) => [selectors.status], (status) => status === Status.LOADING], }, });